Merge remote-tracking branch 'upstream/develop' into reminder
This commit is contained in:
commit
e08ff855d2
@ -243,6 +243,8 @@ Following changes may create regressions for some external modules, but were nec
|
|||||||
* Rename the substitution for "project label" instead of "project title" in substitution variables
|
* Rename the substitution for "project label" instead of "project title" in substitution variables
|
||||||
* You must use "$objectoffield" to manipulate the current object inside the formulare of computed custom extrafields instead of $obj/$object.
|
* You must use "$objectoffield" to manipulate the current object inside the formulare of computed custom extrafields instead of $obj/$object.
|
||||||
* Making a global search is sending the parameter using always the name search_all (instead of sometimes sall and search_all)
|
* Making a global search is sending the parameter using always the name search_all (instead of sometimes sall and search_all)
|
||||||
|
* The property $url_last_version must be public if defined into module descriptor files;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -46,6 +46,7 @@ require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
|
|||||||
|
|
||||||
$includecustom=0;
|
$includecustom=0;
|
||||||
$includeconstants=array();
|
$includeconstants=array();
|
||||||
|
$buildzip=0;
|
||||||
|
|
||||||
if (empty($argv[1])) {
|
if (empty($argv[1])) {
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value] [buildzip=1]\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value] [buildzip=1]\n";
|
||||||
@ -69,6 +70,9 @@ while ($i < $argc) {
|
|||||||
if (!empty($result["includeconstant"])) {
|
if (!empty($result["includeconstant"])) {
|
||||||
$includeconstants[$i] = $result["includeconstant"];
|
$includeconstants[$i] = $result["includeconstant"];
|
||||||
}
|
}
|
||||||
|
if (!empty($result["buildzip"])) {
|
||||||
|
$buildzip=1;
|
||||||
|
}
|
||||||
if (preg_match('/includeconstant=/', strval($argv[$i]))) {
|
if (preg_match('/includeconstant=/', strval($argv[$i]))) {
|
||||||
$tmp=explode(':', $result['includeconstant'], 3); // $includeconstant has been set with previous parse_str()
|
$tmp=explode(':', $result['includeconstant'], 3); // $includeconstant has been set with previous parse_str()
|
||||||
if (count($tmp) != 3) {
|
if (count($tmp) != 3) {
|
||||||
|
|||||||
@ -729,6 +729,7 @@ if ($action == 'export_fileconfirm' && $user->hasRight('accounting', 'mouvements
|
|||||||
// Export files then exit
|
// Export files then exit
|
||||||
$accountancyexport = new AccountancyExport($db);
|
$accountancyexport = new AccountancyExport($db);
|
||||||
|
|
||||||
|
$formatexport = GETPOST('formatexport', 'int');
|
||||||
$notexportlettering = GETPOST('notexportlettering', 'alpha');
|
$notexportlettering = GETPOST('notexportlettering', 'alpha');
|
||||||
|
|
||||||
if (!empty($notexportlettering)) {
|
if (!empty($notexportlettering)) {
|
||||||
@ -745,7 +746,7 @@ if ($action == 'export_fileconfirm' && $user->hasRight('accounting', 'mouvements
|
|||||||
$withAttachment = !empty(trim(GETPOST('notifiedexportfull', 'alphanohtml'))) ? 1 : 0;
|
$withAttachment = !empty(trim(GETPOST('notifiedexportfull', 'alphanohtml'))) ? 1 : 0;
|
||||||
|
|
||||||
// Output data on screen or download
|
// Output data on screen or download
|
||||||
$result = $accountancyexport->export($object->lines, $formatexportset, $withAttachment);
|
$result = $accountancyexport->export($object->lines, $formatexport, $withAttachment);
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
@ -856,11 +857,13 @@ $formconfirm = '';
|
|||||||
if ($action == 'export_file') {
|
if ($action == 'export_file') {
|
||||||
$form_question = array();
|
$form_question = array();
|
||||||
|
|
||||||
$form_question['notexportlettering'] = array(
|
$form_question['formatexport'] = array(
|
||||||
'name' => 'notexportlettering',
|
'name' => 'formatexport',
|
||||||
'type' => 'other',
|
'type' => 'select',
|
||||||
'label' => '', // TODO Use Selectmodelcsv and show a select combo
|
'label' => $langs->trans('Modelcsv'), // TODO Use Selectmodelcsv and show a select combo
|
||||||
'value' => $langs->trans('Modelcsv').' : <b>'.$listofformat[$formatexportset].'</b>'
|
'values' => $listofformat,
|
||||||
|
'default' => $formatexportset,
|
||||||
|
'morecss' => 'minwidth200 maxwidth200'
|
||||||
);
|
);
|
||||||
|
|
||||||
$form_question['separator0'] = array('name'=>'separator0', 'type'=>'separator');
|
$form_question['separator0'] = array('name'=>'separator0', 'type'=>'separator');
|
||||||
|
|||||||
@ -3323,7 +3323,7 @@ class Adherent extends CommonObject
|
|||||||
$return .= '<br><span class="info-box-label">'.$this->getmorphylib('', 2).'</span>';
|
$return .= '<br><span class="info-box-label">'.$this->getmorphylib('', 2).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -1016,7 +1016,7 @@ class AdherentType extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -194,6 +194,10 @@ if (!empty($triggers)) {
|
|||||||
if ($trigger['code'] == 'FICHINTER_CLASSIFY_UNBILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) {
|
if ($trigger['code'] == 'FICHINTER_CLASSIFY_UNBILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if ($trigger['code'] == 'ACTION_CREATE') {
|
||||||
|
// This is the trigger to add an event, enabling it will create infinite loop
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($search_event === '' || preg_match('/'.preg_quote($search_event, '/').'/i', $trigger['code'])) {
|
if ($search_event === '' || preg_match('/'.preg_quote($search_event, '/').'/i', $trigger['code'])) {
|
||||||
print '<!-- '.$trigger['position'].' -->';
|
print '<!-- '.$trigger['position'].' -->';
|
||||||
|
|||||||
@ -205,6 +205,7 @@ if ($action == 'install') {
|
|||||||
|
|
||||||
dol_syslog("Uncompress of module file is a success.");
|
dol_syslog("Uncompress of module file is a success.");
|
||||||
|
|
||||||
|
// We check if this is a metapackage
|
||||||
$modulenamearrays = array();
|
$modulenamearrays = array();
|
||||||
if (dol_is_file($modulenamedir.'/metapackage.conf')) {
|
if (dol_is_file($modulenamedir.'/metapackage.conf')) {
|
||||||
// This is a meta package
|
// This is a meta package
|
||||||
@ -214,6 +215,7 @@ if ($action == 'install') {
|
|||||||
$modulenamearrays[$modulename] = $modulename;
|
$modulenamearrays[$modulename] = $modulename;
|
||||||
//var_dump($modulenamearrays);exit;
|
//var_dump($modulenamearrays);exit;
|
||||||
|
|
||||||
|
// Lop on each packacge of the metapackage
|
||||||
foreach ($modulenamearrays as $modulenameval) {
|
foreach ($modulenamearrays as $modulenameval) {
|
||||||
if (strpos($modulenameval, '#') === 0) {
|
if (strpos($modulenameval, '#') === 0) {
|
||||||
continue; // Discard comments
|
continue; // Discard comments
|
||||||
@ -227,13 +229,14 @@ if ($action == 'install') {
|
|||||||
|
|
||||||
// Now we install the module
|
// Now we install the module
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
@dol_delete_dir_recursive($dirins.'/'.$modulenameval); // delete the zip file
|
@dol_delete_dir_recursive($dirins.'/'.$modulenameval); // delete the target directory
|
||||||
dol_syslog("We copy now directory ".$conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval." into target dir ".$dirins.'/'.$modulenameval);
|
$submodulenamedir = $conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval;
|
||||||
$result = dolCopyDir($modulenamedir, $dirins.'/'.$modulenameval, '0444', 1);
|
dol_syslog("We copy now directory ".$submodulenamedir." into target dir ".$dirins.'/'.$modulenameval);
|
||||||
|
$result = dolCopyDir($submodulenamedir, $dirins.'/'.$modulenameval, '0444', 1);
|
||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$modulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING);
|
dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$submodulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING);
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
setEventMessages($langs->trans("ErrorFailToCopyDir", $modulenamedir, $dirins.'/'.$modulenameval), null, 'errors');
|
setEventMessages($langs->trans("ErrorFailToCopyDir", $submodulenamedir, $dirins.'/'.$modulenameval), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -427,11 +427,13 @@ foreach ($listofnotifiedevents as $notifiedevent) {
|
|||||||
} elseif ($notifiedevent['elementtype'] == 'expensereport' || $notifiedevent['elementtype'] == 'expense_report') {
|
} elseif ($notifiedevent['elementtype'] == 'expensereport' || $notifiedevent['elementtype'] == 'expense_report') {
|
||||||
$elementPicto = 'expensereport';
|
$elementPicto = 'expensereport';
|
||||||
$elementLabel = $langs->trans('ExpenseReport');
|
$elementLabel = $langs->trans('ExpenseReport');
|
||||||
|
} elseif ($notifiedevent['elementtype'] == 'agenda') {
|
||||||
|
$elementPicto = 'action';
|
||||||
}
|
}
|
||||||
|
|
||||||
$labelfortrigger = 'AmountHT';
|
$labelfortrigger = 'AmountHT';
|
||||||
$codehasnotrigger = 0;
|
$codehasnotrigger = 0;
|
||||||
if (preg_match('/^HOLIDAY/', $notifiedevent['code'])) {
|
if (preg_match('/^(ACTION|HOLIDAY)/', $notifiedevent['code'])) {
|
||||||
$codehasnotrigger++;
|
$codehasnotrigger++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -271,9 +271,19 @@ print '<input type="hidden" name="action" value="update">';
|
|||||||
clearstatcache();
|
clearstatcache();
|
||||||
|
|
||||||
|
|
||||||
|
if (getDolGlobalString('PDF_SECURITY_ENCRYPTION')) {
|
||||||
|
print '<div class="warning">';
|
||||||
|
print 'The not supported and hidden option PDF_SECURITY_ENCRYPTION has been enabled. This means a lof of feature related to PDF will be broken, like mass PDF generation or online signature of PDF.'."\n";
|
||||||
|
print 'You should disable this option.';
|
||||||
|
print '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Misc options
|
// Misc options
|
||||||
print load_fiche_titre($langs->trans("DictionaryPaperFormat"), '', '');
|
print load_fiche_titre($langs->trans("DictionaryPaperFormat"), '', '');
|
||||||
|
|
||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table summary="more" class="noborder centpercent">';
|
print '<table summary="more" class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameters").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
|
print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameters").'</td><td width="200px">'.$langs->trans("Value").'</td></tr>';
|
||||||
|
|||||||
@ -580,15 +580,23 @@ print '<br>';
|
|||||||
print '<strong>MAIN_DOCUMENT_IS_OUTSIDE_WEBROOT_SO_NOEXE_NOT_REQUIRED</strong> = '.getDolGlobalString('MAIN_DOCUMENT_IS_OUTSIDE_WEBROOT_SO_NOEXE_NOT_REQUIRED', '<span class="opacitymedium">'.$langs->trans("Undefined").' ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 0)</span>')."<br>";
|
print '<strong>MAIN_DOCUMENT_IS_OUTSIDE_WEBROOT_SO_NOEXE_NOT_REQUIRED</strong> = '.getDolGlobalString('MAIN_DOCUMENT_IS_OUTSIDE_WEBROOT_SO_NOEXE_NOT_REQUIRED', '<span class="opacitymedium">'.$langs->trans("Undefined").' ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 0)</span>')."<br>";
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
print '<strong>MAIN_SECURITY_FORCECSP</strong> = '.getDolGlobalString('MAIN_SECURITY_FORCECSP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>').' <span class="opacitymedium">('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src *; img-src * data:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';\")</span><br>";
|
$examplecsprule = "frame-ancestors 'self'; img-src * data:; font-src *; default-src 'self' 'unsafe-inline' 'unsafe-eval' *.paypal.com *.stripe.com *.google.com *.googleapis.com *.google-analytics.com *.googletagmanager.com;";
|
||||||
|
print '<strong>MAIN_SECURITY_FORCECSPRO</strong> = '.getDolGlobalString('MAIN_SECURITY_FORCECSP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>').' <span class="opacitymedium">('.$langs->trans("Example").': "'.$examplecsprule.'")</span><br>';
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
$examplecsprule = "frame-ancestors 'self'; img-src * data:; font-src *; default-src 'self' 'unsafe-inline' 'unsafe-eval' *.paypal.com *.stripe.com *.google.com *.googleapis.com *.google-analytics.com *.googletagmanager.com;";
|
||||||
|
print '<strong>MAIN_SECURITY_FORCECSP</strong> = '.getDolGlobalString('MAIN_SECURITY_FORCERP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>').' <span class="opacitymedium">('.$langs->trans("Example").': "'.$examplecsprule.'")</span><br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
print '<strong>MAIN_SECURITY_FORCERP</strong> = '.getDolGlobalString('MAIN_SECURITY_FORCERP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>').' <span class="opacitymedium">('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"same-origin\" so browser doesn't send any referrer when going into another web site domain)</span><br>";
|
print '<strong>MAIN_SECURITY_FORCERP</strong> = '.getDolGlobalString('MAIN_SECURITY_FORCERP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>').' <span class="opacitymedium">('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"same-origin\" so browser doesn't send any referrer when going into another web site domain)</span><br>";
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
print '<strong>WEBSITE_MAIN_SECURITY_FORCECSP</strong> = '.getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCECSP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>');
|
print '<strong>WEBSITE_MAIN_SECURITY_FORCECSPRO</strong> = '.getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCECSPRO', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>');
|
||||||
print ' <span class="opacitymedium">('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src 'self' 'unsafe-inline'; style-src https://cdnjs.cloudflare.com https://fonts.googleapis.com 'unsafe-inline'; script-src https://cdn.transifex.com https://www.googletagmanager.com 'unsafe-inline'; object-src https://youtube.com; frame-src https://youtube.com; img-src * data:;\")</span><br>";
|
print ' <span class="opacitymedium">('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src 'self' 'unsafe-inline'; style-src https://cdnjs.cloudflare.com *.googleapis.com; script-src *.transifex.com *.google-analytics.com *.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src * data:;\")</span><br>";
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
print '<strong>WEBSITE_MAIN_SECURITY_FORCECSP</strong> = '.getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCECSP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>');
|
||||||
|
print ' <span class="opacitymedium">('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src 'self' 'unsafe-inline'; style-src https://cdnjs.cloudflare.com *.googleapis.com; script-src *.transifex.com *.google-analytics.com *.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src * data:;\")</span><br>";
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
print '<strong>WEBSITE_MAIN_SECURITY_FORCERP</strong> = '.getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCERP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>').' <span class="opacitymedium">('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"strict-origin-when-cross-origin\")</span><br>";
|
print '<strong>WEBSITE_MAIN_SECURITY_FORCERP</strong> = '.getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCERP', '<span class="opacitymedium">'.$langs->trans("Undefined").'</span>').' <span class="opacitymedium">('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"strict-origin-when-cross-origin\")</span><br>";
|
||||||
|
|||||||
@ -751,7 +751,7 @@ class Documents extends DolibarrApi
|
|||||||
throw new RestException(500, "Failed to open file '".$destfiletmp."' for write");
|
throw new RestException(500, "Failed to open file '".$destfiletmp."' for write");
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = dol_move($destfiletmp, $destfile, 0, $overwriteifexists, 1);
|
$result = dol_move($destfiletmp, $destfile, 0, $overwriteifexists, 1, 1);
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
throw new RestException(500, "Failed to move file into '".$destfile."'");
|
throw new RestException(500, "Failed to move file into '".$destfile."'");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1589,7 +1589,7 @@ class BOM extends CommonObject
|
|||||||
$return .= '<br><span class="info-box-label">'.$prod->getNomUrl(1).'</span>';
|
$return .= '<br><span class="info-box-label">'.$prod->getNomUrl(1).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -2290,7 +2290,7 @@ class ActionComm extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
if (dol_move($outputfiletmp, $outputfile, 0, 1)) {
|
if (dol_move($outputfiletmp, $outputfile, 0, 1, 0, 0)) {
|
||||||
$result = 1;
|
$result = 1;
|
||||||
} else {
|
} else {
|
||||||
$this->error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
$this->error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
||||||
|
|||||||
@ -1010,7 +1010,8 @@ while ($i < $imaxinloop) {
|
|||||||
|
|
||||||
// User owner
|
// User owner
|
||||||
if (!empty($arrayfields['owner']['checked'])) {
|
if (!empty($arrayfields['owner']['checked'])) {
|
||||||
print '<td class="tdoverflowmax150"' . ($event_owner_style != '' ? ' style="'.$event_owner_style.'"' : '') . '>'; // With edge and chrome the td overflow is not supported correctly when content is not full text.
|
//print '<td class="tdoverflowmax150"' . ($event_owner_style != '' ? ' style="'.$event_owner_style.'"' : '') . '>';
|
||||||
|
print '<td class="tdoverflowmax150">';
|
||||||
if ($obj->fk_user_action > 0 && !isset($cache_user_list[$obj->fk_user_action])) {
|
if ($obj->fk_user_action > 0 && !isset($cache_user_list[$obj->fk_user_action])) {
|
||||||
$userstatic = new User($db);
|
$userstatic = new User($db);
|
||||||
$res = $userstatic->fetch($obj->fk_user_action);
|
$res = $userstatic->fetch($obj->fk_user_action);
|
||||||
|
|||||||
@ -3976,7 +3976,7 @@ class Propal extends CommonObject
|
|||||||
$return .='<br><span class="" >'.$langs->trans("AmountHT").' : </span><span class="info-box-label amount">'.price($this->total_ht).'</span>';
|
$return .='<br><span class="" >'.$langs->trans("AmountHT").' : </span><span class="info-box-label amount">'.price($this->total_ht).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -1844,10 +1844,10 @@ class Account extends CommonObject
|
|||||||
}
|
}
|
||||||
if (method_exists($this, 'solde')) {
|
if (method_exists($this, 'solde')) {
|
||||||
$return .= '<br><a href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?id='.$this->id.'">';
|
$return .= '<br><a href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?id='.$this->id.'">';
|
||||||
$return .= '<span class="opacitymedium">'.$langs->trans("Balance").'</span> : <span class="amount">'.price($this->solde(1), 0, $langs, 1, -1, -1, $this->currency_code).'</span>';
|
$return .= '<span class="opacitymedium">'.$langs->trans("Balance").'</span> : <span class="amount">'.price(price2num($this->solde(1), 'MT'), 0, $langs, 1, -1, -1, $this->currency_code).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -787,7 +787,7 @@ foreach ($accounts as $key => $type) {
|
|||||||
if (!empty($arrayfields['balance']['checked'])) {
|
if (!empty($arrayfields['balance']['checked'])) {
|
||||||
print '<td class="nowraponall right">';
|
print '<td class="nowraponall right">';
|
||||||
print '<a href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?id='.$objecttmp->id.'">';
|
print '<a href="'.DOL_URL_ROOT.'/compta/bank/bankentries_list.php?id='.$objecttmp->id.'">';
|
||||||
print '<span class="amount">'.price($solde, 0, $langs, 1, -1, -1, $objecttmp->currency_code).'</span>';
|
print '<span class="amount">'.price(price2num($solde, 'MT'), 0, $langs, 1, -1, -1, $objecttmp->currency_code).'</span>';
|
||||||
print '</a>';
|
print '</a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
|
|||||||
@ -495,7 +495,7 @@ class CashControl extends CommonObject
|
|||||||
$return .= '<br><span class="info-box-label opacitymedium" >'.$langs->trans("Year").'</span> : <span>'.$this->year_close.'</span>';
|
$return .= '<br><span class="info-box-label opacitymedium" >'.$langs->trans("Year").'</span> : <span>'.$this->year_close.'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -2129,6 +2129,7 @@ if (empty($reshook)) {
|
|||||||
$date_start = dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
$date_start = dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
||||||
$date_end = dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
$date_end = dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
||||||
$price_base_type = (GETPOST('price_base_type', 'alpha') ? GETPOST('price_base_type', 'alpha') : 'HT');
|
$price_base_type = (GETPOST('price_base_type', 'alpha') ? GETPOST('price_base_type', 'alpha') : 'HT');
|
||||||
|
$tva_npr = "";
|
||||||
|
|
||||||
// Define special_code for special lines
|
// Define special_code for special lines
|
||||||
$special_code = 0;
|
$special_code = 0;
|
||||||
@ -2157,8 +2158,7 @@ if (empty($reshook)) {
|
|||||||
|
|
||||||
//$tva_tx = $datapriceofproduct['tva_tx'];
|
//$tva_tx = $datapriceofproduct['tva_tx'];
|
||||||
//$tva_npr = $datapriceofproduct['tva_npr'];
|
//$tva_npr = $datapriceofproduct['tva_npr'];
|
||||||
|
$tmpvat = (float) price2num(preg_replace('/\s*\(.*\)/', '', $tva_tx));
|
||||||
$tmpvat = price2num(preg_replace('/\s*\(.*\)/', '', $tva_tx));
|
|
||||||
$tmpprodvat = price2num(preg_replace('/\s*\(.*\)/', '', $prod->tva_tx));
|
$tmpprodvat = price2num(preg_replace('/\s*\(.*\)/', '', $prod->tva_tx));
|
||||||
|
|
||||||
// Set unit price to use
|
// Set unit price to use
|
||||||
|
|||||||
@ -5819,7 +5819,7 @@ class Facture extends CommonInvoice
|
|||||||
$return .= '<br><span class="info-box-label">'.$this->fk_user_author.'</span>';
|
$return .= '<br><span class="info-box-label">'.$this->fk_user_author.'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
use Stripe\BankAccount;
|
||||||
|
|
||||||
/* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
|
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
|
||||||
* Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
@ -138,7 +140,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Payment with Direct Debit Stripe
|
// Make payment with Direct Debit Stripe
|
||||||
if ($action == 'sepastripepayment' && $usercancreate) {
|
if ($action == 'sepastripepayment' && $usercancreate) {
|
||||||
$result = $object->makeStripeSepaRequest($user, GETPOST('did', 'int'), 'direct-debit', 'facture');
|
$result = $object->makeStripeSepaRequest($user, GETPOST('did', 'int'), 'direct-debit', 'facture');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
@ -153,7 +155,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// payments conditions
|
// Set payments conditions
|
||||||
if ($action == 'setconditions' && $usercancreate) {
|
if ($action == 'setconditions' && $usercancreate) {
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$object->cond_reglement_code = 0; // To clean property
|
$object->cond_reglement_code = 0; // To clean property
|
||||||
@ -404,7 +406,7 @@ if ($object->id > 0) {
|
|||||||
print '<span class="badgeneutral">';
|
print '<span class="badgeneutral">';
|
||||||
print $object->getLibType();
|
print $object->getLibType();
|
||||||
print '</span>';
|
print '</span>';
|
||||||
if ($object->module_source) {
|
if (!empty($object->module_source)) {
|
||||||
print ' <span class="opacitymediumbycolor paddingleft">('.$langs->trans("POS").' '.$object->module_source.' - '.$langs->trans("Terminal").' '.$object->pos_source.')</span>';
|
print ' <span class="opacitymediumbycolor paddingleft">('.$langs->trans("POS").' '.$object->module_source.' - '.$langs->trans("Terminal").' '.$object->pos_source.')</span>';
|
||||||
}
|
}
|
||||||
if ($object->type == $object::TYPE_REPLACEMENT) {
|
if ($object->type == $object::TYPE_REPLACEMENT) {
|
||||||
@ -915,7 +917,7 @@ if ($object->id > 0) {
|
|||||||
// Past requests
|
// Past requests
|
||||||
|
|
||||||
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande, pfd.date_traite, pfd.fk_prelevement_bons, pfd.amount,";
|
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande, pfd.date_traite, pfd.fk_prelevement_bons, pfd.amount,";
|
||||||
$sql .= " pb.ref, pb.date_trans, pb.method_trans, pb.credite, pb.date_credit, pb.datec, pb.statut as status,";
|
$sql .= " pb.ref, pb.date_trans, pb.method_trans, pb.credite, pb.date_credit, pb.datec, pb.statut as status, pb.fk_bank_account,";
|
||||||
$sql .= " u.rowid as user_id, u.email, u.lastname, u.firstname, u.login, u.statut as user_status";
|
$sql .= " u.rowid as user_id, u.email, u.lastname, u.firstname, u.login, u.statut as user_status";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pfd";
|
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pfd";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on pfd.fk_user_demande = u.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on pfd.fk_user_demande = u.rowid";
|
||||||
@ -929,16 +931,16 @@ if ($object->id > 0) {
|
|||||||
$sql .= " AND pfd.type = 'ban'";
|
$sql .= " AND pfd.type = 'ban'";
|
||||||
$sql .= " ORDER BY pfd.date_demande DESC";
|
$sql .= " ORDER BY pfd.date_demande DESC";
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($result) {
|
if ($resql) {
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($resql);
|
||||||
$numclosed = $num;
|
$numclosed = $num;
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
$tmpuser = new User($db);
|
$tmpuser = new User($db);
|
||||||
|
|
||||||
while ($i < $num) {
|
while ($i < $num) {
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($resql);
|
||||||
|
|
||||||
$tmpuser->id = $obj->user_id;
|
$tmpuser->id = $obj->user_id;
|
||||||
$tmpuser->login = $obj->login;
|
$tmpuser->login = $obj->login;
|
||||||
@ -975,9 +977,26 @@ if ($object->id > 0) {
|
|||||||
$withdrawreceipt->date_creation = $db->jdate($obj->datec);
|
$withdrawreceipt->date_creation = $db->jdate($obj->datec);
|
||||||
$withdrawreceipt->statut = $obj->status;
|
$withdrawreceipt->statut = $obj->status;
|
||||||
$withdrawreceipt->status = $obj->status;
|
$withdrawreceipt->status = $obj->status;
|
||||||
|
$withdrawreceipt->fk_bank_account = $obj->fk_bank_account;
|
||||||
//$withdrawreceipt->credite = $db->jdate($obj->credite);
|
//$withdrawreceipt->credite = $db->jdate($obj->credite);
|
||||||
|
|
||||||
print $withdrawreceipt->getNomUrl(1);
|
print $withdrawreceipt->getNomUrl(1);
|
||||||
|
print ' ';
|
||||||
|
print $withdrawreceipt->getLibStatut(2);
|
||||||
|
|
||||||
|
// Show the bank account
|
||||||
|
$fk_bank_account = $withdrawreceipt->fk_bank_account;
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($object->type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
||||||
|
}
|
||||||
|
if ($fk_bank_account > 0) {
|
||||||
|
$bankaccount = new Account($db);
|
||||||
|
$result = $bankaccount->fetch($fk_bank_account);
|
||||||
|
if ($result > 0) {
|
||||||
|
print ' - ';
|
||||||
|
print $bankaccount->getNomUrl(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
|
|
||||||
@ -995,7 +1014,7 @@ if ($object->id > 0) {
|
|||||||
print '<tr class="oddeven"><td colspan="7"><span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
|
print '<tr class="oddeven"><td colspan="7"><span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->free($result);
|
$db->free($resql);
|
||||||
} else {
|
} else {
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1050,7 +1050,7 @@ class RemiseCheque extends CommonObject
|
|||||||
$return .= ' | <span class="info-box-label">'.$this->account_id.'</span>';
|
$return .= ' | <span class="info-box-label">'.$this->account_id.'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'LibStatut')) {
|
if (method_exists($this, 'LibStatut')) {
|
||||||
$return .= '<br><div style="display:inline-block" class="info-box-status margintoponly">'.$this->LibStatut($this->statut, 5).'</div>';
|
$return .= '<br><div style="display:inline-block" class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
if (property_exists($this, 'amount')) {
|
if (property_exists($this, 'amount')) {
|
||||||
$return .= ' | <div style="display:inline-block"><span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="amount">'.price($this->amount).'</div>';
|
$return .= ' | <div style="display:inline-block"><span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="amount">'.price($this->amount).'</div>';
|
||||||
|
|||||||
@ -71,11 +71,22 @@ $type = $object->type;
|
|||||||
|
|
||||||
if ($type == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$result = restrictedArea($user, 'paymentbybanktransfer', '', '', '');
|
$result = restrictedArea($user, 'paymentbybanktransfer', '', '', '');
|
||||||
|
|
||||||
|
$permissiontoadd = $user->hasRight('paymentbybanktransfer', 'read');
|
||||||
|
$permissiontosend = $user->hasRight('paymentbybanktransfer', 'send');
|
||||||
|
$permissiontocreditdebit = $user->hasRight('paymentbybanktransfer', 'debit');
|
||||||
|
$permissiontodelete = $user->hasRight('paymentbybanktransfer', 'read');
|
||||||
} else {
|
} else {
|
||||||
$result = restrictedArea($user, 'prelevement', '', '', 'bons');
|
$result = restrictedArea($user, 'prelevement', '', '', 'bons');
|
||||||
|
|
||||||
|
$permissiontoadd = $user->hasRight('prelevement', 'bons', 'read');
|
||||||
|
$permissiontosend = $user->hasRight('prelevement', 'bons', 'send');
|
||||||
|
$permissiontocreditdebit = $user->hasRight('prelevement', 'bons', 'credit');
|
||||||
|
$permissiontodelete = $user->hasRight('prelevement', 'bons', 'read');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
@ -87,20 +98,13 @@ if ($reshook < 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (empty($reshook)) {
|
if (empty($reshook)) {
|
||||||
if ($action == 'confirm_delete') {
|
if ($action == 'setbankaccount' && $permissiontoadd) {
|
||||||
$savtype = $object->type;
|
$object->oldcopy = dol_clone($object);
|
||||||
$res = $object->delete($user);
|
$object->fk_bank_account = GETPOST('fk_bank_account', 'int');
|
||||||
if ($res > 0) {
|
$object->update($user);
|
||||||
if ($savtype == 'bank-transfer') {
|
|
||||||
header("Location: ".DOL_URL_ROOT.'/compta/paymentbybanktransfer/index.php');
|
|
||||||
} else {
|
|
||||||
header("Location: ".DOL_URL_ROOT.'/compta/prelevement/index.php');
|
|
||||||
}
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'infotrans' && (($user->rights->prelevement->bons->send && $object->type != 'bank-transfer') || ($user->rights->paymentbybanktransfer->send && $object->type == 'bank-transfer'))) {
|
if ($action == 'infotrans' && $permissiontosend) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
|
||||||
$dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
@ -133,7 +137,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set direct debit order to credited, create payment and close invoices
|
// Set direct debit order to credited, create payment and close invoices
|
||||||
if ($action == 'infocredit' && (($user->rights->prelevement->bons->credit && $object->type != 'bank-transfer') || ($user->rights->paymentbybanktransfer->debit && $object->type == 'bank-transfer'))) {
|
if ($action == 'infocredit' && $permissiontocreditdebit) {
|
||||||
$dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
|
|
||||||
if (($object->type != 'bank-transfer' && $object->statut == BonPrelevement::STATUS_CREDITED) || ($object->type == 'bank-transfer' && $object->statut == BonPrelevement::STATUS_DEBITED)) {
|
if (($object->type != 'bank-transfer' && $object->statut == BonPrelevement::STATUS_CREDITED) || ($object->type == 'bank-transfer' && $object->statut == BonPrelevement::STATUS_DEBITED)) {
|
||||||
@ -147,6 +151,19 @@ if (empty($reshook)) {
|
|||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($action == 'confirm_delete' && $permissiontodelete) {
|
||||||
|
$savtype = $object->type;
|
||||||
|
$res = $object->delete($user);
|
||||||
|
if ($res > 0) {
|
||||||
|
if ($savtype == 'bank-transfer') {
|
||||||
|
header("Location: ".DOL_URL_ROOT.'/compta/paymentbybanktransfer/index.php');
|
||||||
|
} else {
|
||||||
|
header("Location: ".DOL_URL_ROOT.'/compta/prelevement/index.php');
|
||||||
|
}
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -179,13 +196,6 @@ if ($id > 0 || $ref) {
|
|||||||
|
|
||||||
print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($object->amount).'</span></td></tr>';
|
print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($object->amount).'</span></td></tr>';
|
||||||
|
|
||||||
// Status
|
|
||||||
/*
|
|
||||||
print '<tr><td>'.$langs->trans('Status').'</td>';
|
|
||||||
print '<td>'.$object->getLibStatut(1).'</td>';
|
|
||||||
print '</tr>';
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!empty($object->date_trans)) {
|
if (!empty($object->date_trans)) {
|
||||||
$muser = new User($db);
|
$muser = new User($db);
|
||||||
$muser->fetch($object->user_trans);
|
$muser->fetch($object->user_trans);
|
||||||
@ -210,23 +220,53 @@ if ($id > 0 || $ref) {
|
|||||||
print '<div class="underbanner clearboth"></div>';
|
print '<div class="underbanner clearboth"></div>';
|
||||||
print '<table class="border centpercent tableforfield">';
|
print '<table class="border centpercent tableforfield">';
|
||||||
|
|
||||||
|
// Get bank account for the payment
|
||||||
$acc = new Account($db);
|
$acc = new Account($db);
|
||||||
$result = $acc->fetch(($object->type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT));
|
$fk_bank_account = $object->fk_bank_account;
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($object->type == 'bank-transfer' ? getDolGlobalInt('PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT') : getDolGlobalInt('PRELEVEMENT_ID_BANKACCOUNT'));
|
||||||
|
}
|
||||||
|
if ($fk_bank_account > 0) {
|
||||||
|
$result = $acc->fetch($fk_bank_account);
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr><td class="titlefieldcreate">';
|
// Bank account
|
||||||
$labelofbankfield = "BankToReceiveWithdraw";
|
$labelofbankfield = "BankToReceiveWithdraw";
|
||||||
if ($object->type == 'bank-transfer') {
|
if ($object->type == 'bank-transfer') {
|
||||||
$labelofbankfield = 'BankToPayCreditTransfer';
|
$labelofbankfield = 'BankToPayCreditTransfer';
|
||||||
}
|
}
|
||||||
print $langs->trans($labelofbankfield);
|
//print $langs->trans($labelofbankfield);
|
||||||
|
$caneditbank = $permissiontoadd;
|
||||||
|
if ($object->status != $object::STATUS_DRAFT) {
|
||||||
|
$caneditbank = 0;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
print '<tr><td class="titlefieldcreate">';
|
||||||
|
print $form->editfieldkey($langs->trans($labelofbankfield), 'fk_bank_account', $acc->id, $object, $caneditbank);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($acc->id > 0) {
|
print $form->editfieldval($langs->trans($labelofbankfield), 'fk_bank_account', $acc->id, $acc, $caneditbank, 'string', '', null, null, '', 1, 'getNomUrl');
|
||||||
print $acc->getNomUrl(1);
|
|
||||||
}
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
*/
|
||||||
|
print '<tr><td class="nowrap">';
|
||||||
|
print '<table class="nobordernopadding centpercent"><tr><td class="nowrap">';
|
||||||
|
print $form->textwithpicto($langs->trans("BankAccount"), $langs->trans($labelofbankfield));
|
||||||
|
print '<td>';
|
||||||
|
if (($action != 'editbankaccount') && $caneditbank) {
|
||||||
|
print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=editfkbankaccount&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->trans('SetBankAccount'), 1).'</a></td>';
|
||||||
|
}
|
||||||
|
print '</tr></table>';
|
||||||
|
print '</td><td>';
|
||||||
|
if ($action == 'editfkbankaccount') {
|
||||||
|
$form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $fk_bank_account, 'fk_bank_account', 0);
|
||||||
|
} else {
|
||||||
|
$form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $fk_bank_account, 'none');
|
||||||
|
}
|
||||||
|
print "</td>";
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
// Donwload file
|
||||||
print '<tr><td class="titlefieldcreate">';
|
print '<tr><td class="titlefieldcreate">';
|
||||||
$labelfororderfield = 'WithdrawalFile';
|
$labelfororderfield = 'WithdrawalFile';
|
||||||
if ($object->type == 'bank-transfer') {
|
if ($object->type == 'bank-transfer') {
|
||||||
|
|||||||
@ -70,13 +70,11 @@ class BonPrelevement extends CommonObject
|
|||||||
public $emetteur_bic;
|
public $emetteur_bic;
|
||||||
public $emetteur_ics;
|
public $emetteur_ics;
|
||||||
|
|
||||||
public $date_trans;
|
|
||||||
public $user_trans;
|
public $user_trans;
|
||||||
public $method_trans;
|
public $user_credit;
|
||||||
|
|
||||||
public $total;
|
public $total;
|
||||||
public $fetched;
|
public $fetched;
|
||||||
public $statut; // 0-Wait, 1-Trans, 2-Done
|
|
||||||
public $labelStatus = array();
|
public $labelStatus = array();
|
||||||
|
|
||||||
public $factures = array();
|
public $factures = array();
|
||||||
@ -84,14 +82,6 @@ class BonPrelevement extends CommonObject
|
|||||||
public $invoice_in_error = array();
|
public $invoice_in_error = array();
|
||||||
public $thirdparty_in_error = array();
|
public $thirdparty_in_error = array();
|
||||||
|
|
||||||
public $amount;
|
|
||||||
public $note;
|
|
||||||
public $datec;
|
|
||||||
|
|
||||||
public $date_credit;
|
|
||||||
public $user_credit;
|
|
||||||
|
|
||||||
public $type;
|
|
||||||
|
|
||||||
const STATUS_DRAFT = 0;
|
const STATUS_DRAFT = 0;
|
||||||
const STATUS_TRANSFERED = 1;
|
const STATUS_TRANSFERED = 1;
|
||||||
@ -99,6 +89,83 @@ class BonPrelevement extends CommonObject
|
|||||||
const STATUS_DEBITED = 2; // STATUS_CREDITED and STATUS_DEBITED is same. Difference is in ->type
|
const STATUS_DEBITED = 2; // STATUS_CREDITED and STATUS_DEBITED is same. Difference is in ->type
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 'type' field format:
|
||||||
|
* 'integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]',
|
||||||
|
* 'select' (list of values are in 'options'),
|
||||||
|
* 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter[:Sortfield]]]]',
|
||||||
|
* 'chkbxlst:...',
|
||||||
|
* 'varchar(x)',
|
||||||
|
* 'text', 'text:none', 'html',
|
||||||
|
* 'double(24,8)', 'real', 'price',
|
||||||
|
* 'date', 'datetime', 'timestamp', 'duration',
|
||||||
|
* 'boolean', 'checkbox', 'radio', 'array',
|
||||||
|
* 'mail', 'phone', 'url', 'password', 'ip'
|
||||||
|
* Note: Filter must be a Dolibarr filter syntax string. Example: "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.status:!=:0) or (t.nature:is:NULL)"
|
||||||
|
* 'label' the translation key.
|
||||||
|
* 'picto' is code of a picto to show before value in forms
|
||||||
|
* 'enabled' is a condition when the field must be managed (Example: 1 or '$conf->global->MY_SETUP_PARAM' or 'isModEnabled("multicurrency")' ...)
|
||||||
|
* 'position' is the sort order of field.
|
||||||
|
* 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0).
|
||||||
|
* 'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create). 5=Visible on list and view only (not create/not update). Using a negative value means field is not shown by default on list but can be selected for viewing)
|
||||||
|
* 'noteditable' says if field is not editable (1 or 0)
|
||||||
|
* 'alwayseditable' says if field can be modified also when status is not draft ('1' or '0')
|
||||||
|
* 'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created.
|
||||||
|
* 'index' if we want an index in database.
|
||||||
|
* 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...).
|
||||||
|
* 'searchall' is 1 if we want to search in this field when making a search from the quick search button.
|
||||||
|
* 'isameasure' must be set to 1 or 2 if field can be used for measure. Field type must be summable like integer or double(24,8). Use 1 in most cases, or 2 if you don't want to see the column total into list (for example for percentage)
|
||||||
|
* 'css' and 'cssview' and 'csslist' is the CSS style to use on field. 'css' is used in creation and update. 'cssview' is used in view mode. 'csslist' is used for columns in lists. For example: 'css'=>'minwidth300 maxwidth500 widthcentpercentminusx', 'cssview'=>'wordbreak', 'csslist'=>'tdoverflowmax200'
|
||||||
|
* 'help' is a 'TranslationString' to use to show a tooltip on field. You can also use 'TranslationString:keyfortooltiponlick' for a tooltip on click.
|
||||||
|
* 'showoncombobox' if value of the field must be visible into the label of the combobox that list record
|
||||||
|
* 'disabled' is 1 if we want to have the field locked by a 'disabled' attribute. In most cases, this is never set into the definition of $fields into class, but is set dynamically by some part of code.
|
||||||
|
* 'arrayofkeyval' to set a list of values if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel"). Note that type can be 'integer' or 'varchar'
|
||||||
|
* 'autofocusoncreate' to have field having the focus on a create form. Only 1 field should have this property set to 1.
|
||||||
|
* 'comment' is not used. You can store here any text of your choice. It is not used by application.
|
||||||
|
* 'validate' is 1 if need to validate with $this->validateField()
|
||||||
|
* 'copytoclipboard' is 1 or 2 to allow to add a picto to copy value into clipboard (1=picto after label, 2=picto after value)
|
||||||
|
*
|
||||||
|
* Note: To have value dynamic, you can set value to 0 in definition and edit the value on the fly into the constructor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// BEGIN MODULEBUILDER PROPERTIES
|
||||||
|
/**
|
||||||
|
* @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor.
|
||||||
|
*/
|
||||||
|
public $fields=array(
|
||||||
|
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'visible'=>0,),
|
||||||
|
'ref' => array('type'=>'varchar(12)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>15, 'notnull'=>0, 'visible'=>-1, 'csslist'=>'tdoverflowmax150', 'showoncombobox'=>'1',),
|
||||||
|
'datec' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>25, 'notnull'=>0, 'visible'=>-1,),
|
||||||
|
'amount' => array('type'=>'double(24,8)', 'label'=>'Amount', 'enabled'=>'1', 'position'=>30, 'notnull'=>0, 'visible'=>-1,),
|
||||||
|
'statut' => array('type'=>'smallint(6)', 'label'=>'Statut', 'enabled'=>'1', 'position'=>500, 'notnull'=>0, 'visible'=>-1, 'arrayofkeyval'=>array(0=>'Wait', 1=>'Transfered', 2=>'Credited')),
|
||||||
|
'credite' => array('type'=>'smallint(6)', 'label'=>'Credite', 'enabled'=>'1', 'position'=>40, 'notnull'=>0, 'visible'=>-1,),
|
||||||
|
'note' => array('type'=>'text', 'label'=>'Note', 'enabled'=>'1', 'position'=>45, 'notnull'=>0, 'visible'=>-1,),
|
||||||
|
'date_trans' => array('type'=>'datetime', 'label'=>'Datetrans', 'enabled'=>'1', 'position'=>50, 'notnull'=>0, 'visible'=>-1,),
|
||||||
|
'method_trans' => array('type'=>'smallint(6)', 'label'=>'Methodtrans', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>-1,),
|
||||||
|
'fk_user_trans' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Fkusertrans', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>-1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'csslist'=>'tdoverflowmax150',),
|
||||||
|
'date_credit' => array('type'=>'datetime', 'label'=>'Datecredit', 'enabled'=>'1', 'position'=>65, 'notnull'=>0, 'visible'=>-1,),
|
||||||
|
'fk_user_credit' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Fkusercredit', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'csslist'=>'tdoverflowmax150',),
|
||||||
|
'type' => array('type'=>'varchar(16)', 'label'=>'Type', 'enabled'=>'1', 'position'=>75, 'notnull'=>0, 'visible'=>-1,),
|
||||||
|
'fk_bank_account' => array('type'=>'integer', 'label'=>'Fkbankaccount', 'enabled'=>'1', 'position'=>80, 'notnull'=>0, 'visible'=>-1, 'css'=>'maxwidth500 widthcentpercentminusxx',),
|
||||||
|
);
|
||||||
|
public $rowid;
|
||||||
|
public $ref;
|
||||||
|
public $datec;
|
||||||
|
public $amount;
|
||||||
|
public $statut;
|
||||||
|
public $credite;
|
||||||
|
public $note;
|
||||||
|
public $date_trans;
|
||||||
|
public $method_trans;
|
||||||
|
public $fk_user_trans;
|
||||||
|
public $date_credit;
|
||||||
|
public $fk_user_credit;
|
||||||
|
public $type;
|
||||||
|
public $fk_bank_account;
|
||||||
|
// END MODULEBUILDER PROPERTIES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@ -290,8 +357,6 @@ class BonPrelevement extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function fetch($rowid, $ref = '')
|
public function fetch($rowid, $ref = '')
|
||||||
{
|
{
|
||||||
global $conf;
|
|
||||||
|
|
||||||
$sql = "SELECT p.rowid, p.ref, p.amount, p.note";
|
$sql = "SELECT p.rowid, p.ref, p.amount, p.note";
|
||||||
$sql .= ", p.datec as dc";
|
$sql .= ", p.datec as dc";
|
||||||
$sql .= ", p.date_trans as date_trans";
|
$sql .= ", p.date_trans as date_trans";
|
||||||
@ -299,6 +364,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$sql .= ", p.date_credit as date_credit";
|
$sql .= ", p.date_credit as date_credit";
|
||||||
$sql .= ", p.fk_user_credit";
|
$sql .= ", p.fk_user_credit";
|
||||||
$sql .= ", p.type";
|
$sql .= ", p.type";
|
||||||
|
$sql .= ", p.fk_bank_account";
|
||||||
$sql .= ", p.statut as status";
|
$sql .= ", p.statut as status";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
||||||
$sql .= " WHERE p.entity IN (".getEntity('invoice').")";
|
$sql .= " WHERE p.entity IN (".getEntity('invoice').")";
|
||||||
@ -328,6 +394,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$this->user_credit = $obj->fk_user_credit;
|
$this->user_credit = $obj->fk_user_credit;
|
||||||
|
|
||||||
$this->type = $obj->type;
|
$this->type = $obj->type;
|
||||||
|
$this->fk_bank_account = $obj->fk_bank_account;
|
||||||
|
|
||||||
$this->status = $obj->status;
|
$this->status = $obj->status;
|
||||||
$this->statut = $obj->status; // For backward compatibility
|
$this->statut = $obj->status; // For backward compatibility
|
||||||
@ -344,6 +411,18 @@ class BonPrelevement extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update object into database
|
||||||
|
*
|
||||||
|
* @param User $user User that modifies
|
||||||
|
* @param bool $notrigger false=launch triggers after, true=disable triggers
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
|
*/
|
||||||
|
public function update(User $user, $notrigger = false)
|
||||||
|
{
|
||||||
|
return $this->updateCommon($user, $notrigger);
|
||||||
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* Set direct debit or credit transfer order to "paid" status.
|
* Set direct debit or credit transfer order to "paid" status.
|
||||||
@ -369,7 +448,7 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons ";
|
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
|
||||||
$sql .= " SET fk_user_credit = ".$user->id;
|
$sql .= " SET fk_user_credit = ".$user->id;
|
||||||
$sql .= ", statut = ".self::STATUS_CREDITED;
|
$sql .= ", statut = ".self::STATUS_CREDITED;
|
||||||
$sql .= ", date_credit = '".$this->db->idate($date)."'";
|
$sql .= ", date_credit = '".$this->db->idate($date)."'";
|
||||||
@ -383,8 +462,12 @@ class BonPrelevement extends CommonObject
|
|||||||
$subject = $langs->trans("InfoCreditSubject", $this->ref);
|
$subject = $langs->trans("InfoCreditSubject", $this->ref);
|
||||||
$message = $langs->trans("InfoCreditMessage", $this->ref, dol_print_date($date, 'dayhour'));
|
$message = $langs->trans("InfoCreditMessage", $this->ref, dol_print_date($date, 'dayhour'));
|
||||||
|
|
||||||
//Add payment of withdrawal into bank
|
// Add payment of withdrawal into bank
|
||||||
$bankaccount = ($this->type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
$fk_bank_account = $this->fk_bank_account;
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($this->type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
||||||
|
}
|
||||||
|
|
||||||
$facs = array();
|
$facs = array();
|
||||||
$amounts = array();
|
$amounts = array();
|
||||||
$amountsperthirdparty = array();
|
$amountsperthirdparty = array();
|
||||||
@ -455,7 +538,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$modeforaddpayment = 'payment';
|
$modeforaddpayment = 'payment';
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $paiement->addPaymentToBank($user, $modeforaddpayment, '(WithdrawalPayment)', $bankaccount, '', '');
|
$result = $paiement->addPaymentToBank($user, $modeforaddpayment, '(WithdrawalPayment)', $fk_bank_account, '', '');
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->error = $paiement->error;
|
$this->error = $paiement->error;
|
||||||
@ -742,17 +825,18 @@ class BonPrelevement extends CommonObject
|
|||||||
* - Link the order with the prelevement_demande lines
|
* - Link the order with the prelevement_demande lines
|
||||||
* TODO delete params banque and agence when not necessary
|
* TODO delete params banque and agence when not necessary
|
||||||
*
|
*
|
||||||
* @param int $banque dolibarr mysoc bank
|
* @param int $banque dolibarr mysoc bank
|
||||||
* @param int $agence dolibarr mysoc bank office (guichet)
|
* @param int $agence dolibarr mysoc bank office (guichet)
|
||||||
* @param string $mode real=do action, simu=test only
|
* @param string $mode real=do action, simu=test only
|
||||||
* @param string $format FRST, RCUR or ALL
|
* @param string $format FRST, RCUR or ALL
|
||||||
* @param string $executiondate Date to execute the transfer
|
* @param string $executiondate Date to execute the transfer
|
||||||
* @param int $notrigger Disable triggers
|
* @param int $notrigger Disable triggers
|
||||||
* @param string $type 'direct-debit' or 'bank-transfer'
|
* @param string $type 'direct-debit' or 'bank-transfer'
|
||||||
* @param int $did ID of an existing payment request. If $did is defined, no entry
|
* @param int $did ID of an existing payment request. If $did is defined, no entry
|
||||||
* @return int <0 if KO, No of invoice included into file if OK
|
* @param int $fk_bank_account Bank account ID the receipt is generated for. Will use the ID into the setup of module Direct Debit or Credit Transfer if 0.
|
||||||
|
* @return int <0 if KO, No of invoice included into file if OK
|
||||||
*/
|
*/
|
||||||
public function create($banque = 0, $agence = 0, $mode = 'real', $format = 'ALL', $executiondate = '', $notrigger = 0, $type = 'direct-debit', $did = 0)
|
public function create($banque = 0, $agence = 0, $mode = 'real', $format = 'ALL', $executiondate = '', $notrigger = 0, $type = 'direct-debit', $did = 0, $fk_bank_account = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf, $langs, $user;
|
global $conf, $langs, $user;
|
||||||
@ -762,6 +846,7 @@ class BonPrelevement extends CommonObject
|
|||||||
require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php";
|
require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php";
|
||||||
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
||||||
|
|
||||||
|
// Check params
|
||||||
if ($type != 'bank-transfer') {
|
if ($type != 'bank-transfer') {
|
||||||
if (empty($format)) {
|
if (empty($format)) {
|
||||||
$this->error = 'ErrorBadParametersForDirectDebitFileCreate';
|
$this->error = 'ErrorBadParametersForDirectDebitFileCreate';
|
||||||
@ -769,6 +854,11 @@ class BonPrelevement extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clean params
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
||||||
|
}
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
$datetimeprev = dol_now('gmt');
|
$datetimeprev = dol_now('gmt');
|
||||||
@ -969,12 +1059,13 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
// Create withdraw order in database
|
// Create withdraw order in database
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (";
|
||||||
$sql .= "ref, entity, datec, type";
|
$sql .= "ref, entity, datec, type, fk_bank_account";
|
||||||
$sql .= ") VALUES (";
|
$sql .= ") VALUES (";
|
||||||
$sql .= "'".$this->db->escape($ref)."'";
|
$sql .= "'".$this->db->escape($ref)."'";
|
||||||
$sql .= ", ".((int) $conf->entity);
|
$sql .= ", ".((int) $conf->entity);
|
||||||
$sql .= ", '".$this->db->idate($now)."'";
|
$sql .= ", '".$this->db->idate($now)."'";
|
||||||
$sql .= ", '".($type == 'bank-transfer' ? 'bank-transfer' : 'debit-order')."'";
|
$sql .= ", '".($type == 'bank-transfer' ? 'bank-transfer' : 'debit-order')."'";
|
||||||
|
$sql .= ", ".((int) $fk_bank_account);
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
@ -1055,12 +1146,8 @@ class BonPrelevement extends CommonObject
|
|||||||
$this->date_echeance = $datetimeprev;
|
$this->date_echeance = $datetimeprev;
|
||||||
$this->reference_remise = $ref;
|
$this->reference_remise = $ref;
|
||||||
|
|
||||||
$id = $conf->global->PRELEVEMENT_ID_BANKACCOUNT;
|
|
||||||
if ($type == 'bank-transfer') {
|
|
||||||
$id = $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT;
|
|
||||||
}
|
|
||||||
$account = new Account($this->db);
|
$account = new Account($this->db);
|
||||||
if ($account->fetch($id) > 0) {
|
if ($account->fetch($fk_bank_account) > 0) {
|
||||||
$this->emetteur_code_banque = $account->code_banque;
|
$this->emetteur_code_banque = $account->code_banque;
|
||||||
$this->emetteur_code_guichet = $account->code_guichet;
|
$this->emetteur_code_guichet = $account->code_guichet;
|
||||||
$this->emetteur_numero_compte = $account->number;
|
$this->emetteur_numero_compte = $account->number;
|
||||||
@ -1382,16 +1469,22 @@ class BonPrelevement extends CommonObject
|
|||||||
* File is generated with name this->filename
|
* File is generated with name this->filename
|
||||||
*
|
*
|
||||||
* @param string $format FRST, RCUR or ALL
|
* @param string $format FRST, RCUR or ALL
|
||||||
* @param string $executiondate Date to execute transfer
|
* @param int $executiondate Timestamp date to execute transfer
|
||||||
* @param string $type 'direct-debit' or 'bank-transfer'
|
* @param string $type 'direct-debit' or 'bank-transfer'
|
||||||
|
* @param int $fk_bank_account Bank account ID the receipt is generated for. Will use the ID into the setup of module Direct Debit or Credit Transfer if 0.
|
||||||
* @return int >=0 if OK, <0 if KO
|
* @return int >=0 if OK, <0 if KO
|
||||||
*/
|
*/
|
||||||
public function generate($format = 'ALL', $executiondate = '', $type = 'direct-debit')
|
public function generate($format = 'ALL', $executiondate = 0, $type = 'direct-debit', $fk_bank_account = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs, $mysoc;
|
global $conf, $langs, $mysoc;
|
||||||
|
|
||||||
//TODO: Optimize code to read lines in a single function
|
//TODO: Optimize code to read lines in a single function
|
||||||
|
|
||||||
|
// Clean params
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
||||||
|
}
|
||||||
|
|
||||||
$result = 0;
|
$result = 0;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::generate build file=".$this->filename." type=".$type);
|
dol_syslog(get_class($this)."::generate build file=".$this->filename." type=".$type);
|
||||||
@ -1486,7 +1579,7 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
// Define $fileEmetteurSection. Start of bloc PmtInf. Will contains all $nbtotalDrctDbtTxInf
|
// Define $fileEmetteurSection. Start of bloc PmtInf. Will contains all $nbtotalDrctDbtTxInf
|
||||||
if ($result != -2) {
|
if ($result != -2) {
|
||||||
$fileEmetteurSection .= $this->EnregEmetteurSEPA($conf, $date_actu, $nbtotalDrctDbtTxInf, $this->total, $CrLf, $format, $type);
|
$fileEmetteurSection .= $this->EnregEmetteurSEPA($conf, $date_actu, $nbtotalDrctDbtTxInf, $this->total, $CrLf, $format, $type, $fk_bank_account);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2041,31 +2134,36 @@ class BonPrelevement extends CommonObject
|
|||||||
* Write sender of request (me).
|
* Write sender of request (me).
|
||||||
* Note: The tag PmtInf is opened here but closed into caller
|
* Note: The tag PmtInf is opened here but closed into caller
|
||||||
*
|
*
|
||||||
* @param Conf $configuration conf
|
* @param Conf $configuration conf
|
||||||
* @param int $ladate Date
|
* @param int $ladate Date
|
||||||
* @param int $nombre 0 or 1
|
* @param int $nombre 0 or 1
|
||||||
* @param float $total Total
|
* @param float $total Total
|
||||||
* @param string $CrLf End of line character
|
* @param string $CrLf End of line character
|
||||||
* @param string $format FRST or RCUR or ALL
|
* @param string $format FRST or RCUR or ALL
|
||||||
* @param string $type 'direct-debit' or 'bank-transfer'
|
* @param string $type 'direct-debit' or 'bank-transfer'
|
||||||
* @return string String with SEPA Sender
|
* @param int $fk_bank_account Bank account ID the receipt is generated for. Will use the ID into the setup of module Direct Debit or Credit Transfer if 0.
|
||||||
|
* @return string String with SEPA Sender
|
||||||
* @see EnregEmetteur()
|
* @see EnregEmetteur()
|
||||||
*/
|
*/
|
||||||
public function EnregEmetteurSEPA($configuration, $ladate, $nombre, $total, $CrLf = '\n', $format = 'FRST', $type = 'direct-debit')
|
public function EnregEmetteurSEPA($configuration, $ladate, $nombre, $total, $CrLf = '\n', $format = 'FRST', $type = 'direct-debit', $fk_bank_account = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
// SEPA INITIALISATION
|
// SEPA INITIALISATION
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
|
// Clean parameters
|
||||||
$dateTime_YMD = dol_print_date($ladate, '%Y%m%d');
|
$dateTime_YMD = dol_print_date($ladate, '%Y%m%d');
|
||||||
$dateTime_ETAD = dol_print_date($ladate, '%Y-%m-%d');
|
$dateTime_ETAD = dol_print_date($ladate, '%Y-%m-%d');
|
||||||
$dateTime_YMDHMS = dol_print_date($ladate, '%Y-%m-%dT%H:%M:%S');
|
$dateTime_YMDHMS = dol_print_date($ladate, '%Y-%m-%dT%H:%M:%S');
|
||||||
|
|
||||||
|
// Clean params
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
||||||
|
}
|
||||||
|
|
||||||
// Get data of bank account
|
// Get data of bank account
|
||||||
//$id = $configuration->global->PRELEVEMENT_ID_BANKACCOUNT;
|
|
||||||
$id = ($type == 'bank-transfer' ? $conf->global->PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT : $conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
|
||||||
$account = new Account($this->db);
|
$account = new Account($this->db);
|
||||||
if ($account->fetch($id) > 0) {
|
if ($account->fetch($fk_bank_account) > 0) {
|
||||||
$this->emetteur_code_banque = $account->code_banque;
|
$this->emetteur_code_banque = $account->code_banque;
|
||||||
$this->emetteur_code_guichet = $account->code_guichet;
|
$this->emetteur_code_guichet = $account->code_guichet;
|
||||||
$this->emetteur_numero_compte = $account->number;
|
$this->emetteur_numero_compte = $account->number;
|
||||||
@ -2081,8 +2179,7 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
// Get pending payments
|
// Get pending payments
|
||||||
$sql = "SELECT rowid, ref";
|
$sql = "SELECT rowid, ref";
|
||||||
$sql .= " FROM";
|
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as pb";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_bons as pb";
|
|
||||||
$sql .= " WHERE pb.rowid = ".((int) $this->id);
|
$sql .= " WHERE pb.rowid = ".((int) $this->id);
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
@ -2294,10 +2391,10 @@ class BonPrelevement extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return status label of object
|
* Return status label of object
|
||||||
*
|
*
|
||||||
* @param int $mode 0=Label, 1=Picto + label, 2=Picto, 3=Label + Picto
|
* @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto
|
||||||
* @return string Label
|
* @return string Label
|
||||||
*/
|
*/
|
||||||
public function getLibStatut($mode = 0)
|
public function getLibStatut($mode = 0)
|
||||||
{
|
{
|
||||||
@ -2427,7 +2524,6 @@ class BonPrelevement extends CommonObject
|
|||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
|
|
||||||
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
$return = '<div class="box-flex-item box-flex-grow-zero">';
|
||||||
$return .= '<div class="info-box info-box-sm">';
|
$return .= '<div class="info-box info-box-sm">';
|
||||||
$return .= '<span class="info-box-icon bg-infobox-action">';
|
$return .= '<span class="info-box-icon bg-infobox-action">';
|
||||||
@ -2443,7 +2539,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="amount">'.price($this->total).'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="amount">'.price($this->total).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'LibStatut')) {
|
if (method_exists($this, 'LibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->LibStatut($this->statut, 5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -105,7 +105,7 @@ if ($id > 0 || $ref) {
|
|||||||
print '<tr><td class="titlefieldcreate">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
|
print '<tr><td class="titlefieldcreate">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
|
||||||
print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($object->amount).'</span></td></tr>';
|
print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($object->amount).'</span></td></tr>';
|
||||||
|
|
||||||
if ($object->date_trans <> 0) {
|
if (!empty($object->date_trans)) {
|
||||||
$muser = new User($db);
|
$muser = new User($db);
|
||||||
$muser->fetch($object->user_trans);
|
$muser->fetch($object->user_trans);
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ if ($id > 0 || $ref) {
|
|||||||
print $object->methodes_trans[$object->method_trans];
|
print $object->methodes_trans[$object->method_trans];
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
if ($object->date_credit <> 0) {
|
if (!empty($object->date_credit)) {
|
||||||
print '<tr><td>'.$langs->trans('CreditDate').'</td><td>';
|
print '<tr><td>'.$langs->trans('CreditDate').'</td><td>';
|
||||||
print dol_print_date($object->date_credit, 'day');
|
print dol_print_date($object->date_credit, 'day');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
@ -129,15 +129,23 @@ if ($id > 0 || $ref) {
|
|||||||
print '<div class="underbanner clearboth"></div>';
|
print '<div class="underbanner clearboth"></div>';
|
||||||
print '<table class="border centpercent tableforfield">';
|
print '<table class="border centpercent tableforfield">';
|
||||||
|
|
||||||
|
// Get bank account for the payment
|
||||||
$acc = new Account($db);
|
$acc = new Account($db);
|
||||||
$result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
$fk_bank_account = $object->fk_bank_account;
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($object->type == 'bank-transfer' ? getDolGlobalInt('PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT') : getDolGlobalInt('PRELEVEMENT_ID_BANKACCOUNT'));
|
||||||
|
}
|
||||||
|
if ($fk_bank_account > 0) {
|
||||||
|
$result = $acc->fetch($fk_bank_account);
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr><td class="titlefieldcreate">';
|
|
||||||
$labelofbankfield = "BankToReceiveWithdraw";
|
$labelofbankfield = "BankToReceiveWithdraw";
|
||||||
if ($object->type == 'bank-transfer') {
|
if ($object->type == 'bank-transfer') {
|
||||||
$labelofbankfield = 'BankToPayCreditTransfer';
|
$labelofbankfield = 'BankToPayCreditTransfer';
|
||||||
}
|
}
|
||||||
print $langs->trans($labelofbankfield);
|
|
||||||
|
print '<tr><td class="titlefieldcreate">';
|
||||||
|
print $form->textwithpicto($langs->trans("BankAccount"), $langs->trans($labelofbankfield));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($acc->id > 0) {
|
if ($acc->id > 0) {
|
||||||
|
|||||||
@ -100,7 +100,7 @@ if ($id > 0 || $ref) {
|
|||||||
print '<tr><td class="titlefieldcreate">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
|
print '<tr><td class="titlefieldcreate">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
|
||||||
print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($object->amount).'</span></td></tr>';
|
print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($object->amount).'</span></td></tr>';
|
||||||
|
|
||||||
if ($object->date_trans <> 0) {
|
if (!empty($object->date_trans)) {
|
||||||
$muser = new User($db);
|
$muser = new User($db);
|
||||||
$muser->fetch($object->user_trans);
|
$muser->fetch($object->user_trans);
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ if ($id > 0 || $ref) {
|
|||||||
print $object->methodes_trans[$object->method_trans];
|
print $object->methodes_trans[$object->method_trans];
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
if ($object->date_credit <> 0) {
|
if (!empty($object->date_credit)) {
|
||||||
print '<tr><td>'.$langs->trans('CreditDate').'</td><td>';
|
print '<tr><td>'.$langs->trans('CreditDate').'</td><td>';
|
||||||
print dol_print_date($object->date_credit, 'day');
|
print dol_print_date($object->date_credit, 'day');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
@ -124,15 +124,23 @@ if ($id > 0 || $ref) {
|
|||||||
print '<div class="underbanner clearboth"></div>';
|
print '<div class="underbanner clearboth"></div>';
|
||||||
print '<table class="border centpercent tableforfield">';
|
print '<table class="border centpercent tableforfield">';
|
||||||
|
|
||||||
|
// Get bank account for the payment
|
||||||
$acc = new Account($db);
|
$acc = new Account($db);
|
||||||
$result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
$fk_bank_account = $object->fk_bank_account;
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($object->type == 'bank-transfer' ? getDolGlobalInt('PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT') : getDolGlobalInt('PRELEVEMENT_ID_BANKACCOUNT'));
|
||||||
|
}
|
||||||
|
if ($fk_bank_account > 0) {
|
||||||
|
$result = $acc->fetch($fk_bank_account);
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr><td class="titlefieldcreate">';
|
|
||||||
$labelofbankfield = "BankToReceiveWithdraw";
|
$labelofbankfield = "BankToReceiveWithdraw";
|
||||||
if ($object->type == 'bank-transfer') {
|
if ($object->type == 'bank-transfer') {
|
||||||
$labelofbankfield = 'BankToPayCreditTransfer';
|
$labelofbankfield = 'BankToPayCreditTransfer';
|
||||||
}
|
}
|
||||||
print $langs->trans($labelofbankfield);
|
|
||||||
|
print '<tr><td class="titlefieldcreate">';
|
||||||
|
print $form->textwithpicto($langs->trans("BankAccount"), $langs->trans($labelofbankfield));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($acc->id > 0) {
|
if ($acc->id > 0) {
|
||||||
@ -242,7 +250,7 @@ if ($resql) {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print '<tr><td colspan="6" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
print '<tr><td colspan="6"><span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($num > 0) {
|
if ($num > 0) {
|
||||||
|
|||||||
@ -94,7 +94,7 @@ if ($id > 0 || $ref) {
|
|||||||
print '<tr><td class="titlefieldcreate">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
|
print '<tr><td class="titlefieldcreate">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>';
|
||||||
print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($object->amount).'</span></td></tr>';
|
print '<tr><td>'.$langs->trans("Amount").'</td><td><span class="amount">'.price($object->amount).'</span></td></tr>';
|
||||||
|
|
||||||
if ($object->date_trans <> 0) {
|
if (!empty($object->date_trans)) {
|
||||||
$muser = new User($db);
|
$muser = new User($db);
|
||||||
$muser->fetch($object->user_trans);
|
$muser->fetch($object->user_trans);
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ if ($id > 0 || $ref) {
|
|||||||
print $object->methodes_trans[$object->method_trans];
|
print $object->methodes_trans[$object->method_trans];
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
if ($object->date_credit <> 0) {
|
if (!empty($object->date_credit)) {
|
||||||
print '<tr><td>'.$langs->trans('CreditDate').'</td><td>';
|
print '<tr><td>'.$langs->trans('CreditDate').'</td><td>';
|
||||||
print dol_print_date($object->date_credit, 'day');
|
print dol_print_date($object->date_credit, 'day');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
@ -118,15 +118,23 @@ if ($id > 0 || $ref) {
|
|||||||
print '<div class="underbanner clearboth"></div>';
|
print '<div class="underbanner clearboth"></div>';
|
||||||
print '<table class="border centpercent tableforfield">';
|
print '<table class="border centpercent tableforfield">';
|
||||||
|
|
||||||
|
// Get bank account for the payment
|
||||||
$acc = new Account($db);
|
$acc = new Account($db);
|
||||||
$result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT);
|
$fk_bank_account = $object->fk_bank_account;
|
||||||
|
if (empty($fk_bank_account)) {
|
||||||
|
$fk_bank_account = ($object->type == 'bank-transfer' ? getDolGlobalInt('PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT') : getDolGlobalInt('PRELEVEMENT_ID_BANKACCOUNT'));
|
||||||
|
}
|
||||||
|
if ($fk_bank_account > 0) {
|
||||||
|
$result = $acc->fetch($fk_bank_account);
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr><td class="titlefieldcreate">';
|
|
||||||
$labelofbankfield = "BankToReceiveWithdraw";
|
$labelofbankfield = "BankToReceiveWithdraw";
|
||||||
if ($object->type == 'bank-transfer') {
|
if ($object->type == 'bank-transfer') {
|
||||||
$labelofbankfield = 'BankToPayCreditTransfer';
|
$labelofbankfield = 'BankToPayCreditTransfer';
|
||||||
}
|
}
|
||||||
print $langs->trans($labelofbankfield);
|
|
||||||
|
print '<tr><td class="titlefieldcreate">';
|
||||||
|
print $form->textwithpicto($langs->trans("BankAccount"), $langs->trans($labelofbankfield));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($acc->id > 0) {
|
if ($acc->id > 0) {
|
||||||
|
|||||||
@ -779,7 +779,7 @@ class ChargeSociales extends CommonObject
|
|||||||
$return .= '<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1, $conf->currency).'</span>';
|
$return .= '<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1, $conf->currency).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'LibStatut')) {
|
if (method_exists($this, 'LibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->LibStatut($this->paye, 5, $this->alreadypaid).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3, $this->alreadypaid).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -935,7 +935,7 @@ class Tva extends CommonObject
|
|||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("DateEnd").'</span> : <span class="info-box-label" >'.dol_print_date($this->datev).'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("DateEnd").'</span> : <span class="info-box-label" >'.dol_print_date($this->datev).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'LibStatut')) {
|
if (method_exists($this, 'LibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->LibStatut($this->paiementtype, 5, $this->alreadypaid).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3, $this->alreadypaid).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -2202,7 +2202,7 @@ class Contact extends CommonObject
|
|||||||
$return .= '<span> : '.$this->LibPubPriv($this->priv).'</span>';
|
$return .= '<span> : '.$this->LibPubPriv($this->priv).'</span>';
|
||||||
}*/
|
}*/
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -942,15 +942,8 @@ if (empty($reshook)) {
|
|||||||
$old_filedir = $conf->contrat->multidir_output[$object->entity].'/'.dol_sanitizeFileName($old_ref);
|
$old_filedir = $conf->contrat->multidir_output[$object->entity].'/'.dol_sanitizeFileName($old_ref);
|
||||||
$new_filedir = $conf->contrat->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
|
$new_filedir = $conf->contrat->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
|
||||||
|
|
||||||
$files = dol_dir_list($old_filedir);
|
// Rename directory of contract with new name
|
||||||
if (!empty($files)) {
|
dol_move_dir($old_filedir, $new_filedir);
|
||||||
if (!is_dir($new_filedir)) {
|
|
||||||
dol_mkdir($new_filedir);
|
|
||||||
}
|
|
||||||
foreach ($files as $file) {
|
|
||||||
dol_move($file['fullname'], $new_filedir.'/'.$file['name']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
|
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@ -2844,7 +2844,7 @@ class Contrat extends CommonObject
|
|||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("DateContract").' : </span><span class="info-box-label">'.dol_print_date($this->date_contrat, 'day').'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("DateContract").' : </span><span class="info-box-label">'.dol_print_date($this->date_contrat, 'day').'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -45,9 +45,14 @@ error_reporting(E_ALL | E_STRICT);
|
|||||||
$fk_element = GETPOST('fk_element', 'int');
|
$fk_element = GETPOST('fk_element', 'int');
|
||||||
$element = GETPOST('element', 'alpha');
|
$element = GETPOST('element', 'alpha');
|
||||||
|
|
||||||
|
|
||||||
$upload_handler = new FileUpload(null, $fk_element, $element);
|
$upload_handler = new FileUpload(null, $fk_element, $element);
|
||||||
|
|
||||||
|
// Feature not enabled. Warning feature not used and not secured so disabled.
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -59,6 +59,7 @@ $signature = GETPOST('signaturebase64');
|
|||||||
$ref = GETPOST('ref', 'aZ09');
|
$ref = GETPOST('ref', 'aZ09');
|
||||||
$mode = GETPOST('mode', 'aZ09'); // 'proposal', ...
|
$mode = GETPOST('mode', 'aZ09'); // 'proposal', ...
|
||||||
$SECUREKEY = GETPOST("securekey"); // Secure key
|
$SECUREKEY = GETPOST("securekey"); // Secure key
|
||||||
|
$online_sign_name = GETPOST("onlinesignname") ? GETPOST("onlinesignname") : '';
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
$response = "";
|
$response = "";
|
||||||
@ -90,7 +91,8 @@ if (empty($SECUREKEY) || !dol_verifyHash($securekeyseed.$type.$ref.(!isModEnable
|
|||||||
top_httphead();
|
top_httphead();
|
||||||
|
|
||||||
if ($action == "importSignature") {
|
if ($action == "importSignature") {
|
||||||
if (!empty($signature) && $signature[0] == "image/png;base64") {
|
$issignatureok = (!empty($signature) && $signature[0] == "image/png;base64");
|
||||||
|
if ($issignatureok) {
|
||||||
$signature = $signature[1];
|
$signature = $signature[1];
|
||||||
$data = base64_decode($signature);
|
$data = base64_decode($signature);
|
||||||
|
|
||||||
@ -103,6 +105,10 @@ if ($action == "importSignature") {
|
|||||||
$upload_dir = !empty($conf->propal->multidir_output[$object->entity])?$conf->propal->multidir_output[$object->entity]:$conf->propal->dir_output;
|
$upload_dir = !empty($conf->propal->multidir_output[$object->entity])?$conf->propal->multidir_output[$object->entity]:$conf->propal->dir_output;
|
||||||
$upload_dir .= '/'.dol_sanitizeFileName($object->ref).'/';
|
$upload_dir .= '/'.dol_sanitizeFileName($object->ref).'/';
|
||||||
|
|
||||||
|
$default_font_size = pdf_getPDFFontSize($langs); // Must be after pdf_getInstance
|
||||||
|
$default_font = pdf_getPDFFont($langs); // Must be after pdf_getInstance
|
||||||
|
$langs->loadLangs(array("main", "companies"));
|
||||||
|
|
||||||
$date = dol_print_date(dol_now(), "%Y%m%d%H%M%S");
|
$date = dol_print_date(dol_now(), "%Y%m%d%H%M%S");
|
||||||
$filename = "signatures/".$date."_signature.png";
|
$filename = "signatures/".$date."_signature.png";
|
||||||
if (!is_dir($upload_dir."signatures/")) {
|
if (!is_dir($upload_dir."signatures/")) {
|
||||||
@ -143,7 +149,6 @@ if ($action == "importSignature") {
|
|||||||
$pdf->SetCompression(false);
|
$pdf->SetCompression(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//$pdf->Open();
|
//$pdf->Open();
|
||||||
$pagecount = $pdf->setSourceFile($sourcefile); // original PDF
|
$pagecount = $pdf->setSourceFile($sourcefile); // original PDF
|
||||||
|
|
||||||
@ -155,7 +160,7 @@ if ($action == "importSignature") {
|
|||||||
$pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L');
|
$pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L');
|
||||||
$pdf->useTemplate($tppl);
|
$pdf->useTemplate($tppl);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dol_syslog("Error when manipulating some PDF by onlineSign: ".$e->getMessage(), LOG_ERR);
|
dol_syslog("Error when manipulating the PDF ".$sourcefile." by onlineSign: ".$e->getMessage(), LOG_ERR);
|
||||||
$response = $e->getMessage();
|
$response = $e->getMessage();
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
@ -167,7 +172,14 @@ if ($action == "importSignature") {
|
|||||||
$yforimgstart = (empty($s['h']) ? 240 : $s['h'] - 60);
|
$yforimgstart = (empty($s['h']) ? 240 : $s['h'] - 60);
|
||||||
$wforimg = $s['w'] - 20 - $xforimgstart;
|
$wforimg = $s['w'] - 20 - $xforimgstart;
|
||||||
|
|
||||||
|
$pdf->SetXY($xforimgstart, $yforimgstart + round($wforimg / 4) - 4);
|
||||||
|
$pdf->SetFont($default_font, '', $default_font_size - 1);
|
||||||
|
$pdf->MultiCell($wforimg, 4, $langs->trans("DateSigning").': '.dol_print_date(dol_now(), "daytext", false, $langs, true), 0, 'L');
|
||||||
|
$pdf->SetXY($xforimgstart, $yforimgstart + round($wforimg / 4));
|
||||||
|
$pdf->MultiCell($wforimg, 4, $langs->trans("Lastname").': '.$online_sign_name, 0, 'L');
|
||||||
|
|
||||||
$pdf->Image($upload_dir.$filename, $xforimgstart, $yforimgstart, $wforimg, round($wforimg / 4));
|
$pdf->Image($upload_dir.$filename, $xforimgstart, $yforimgstart, $wforimg, round($wforimg / 4));
|
||||||
|
|
||||||
//$pdf->Close();
|
//$pdf->Close();
|
||||||
$pdf->Output($newpdffilename, "F");
|
$pdf->Output($newpdffilename, "F");
|
||||||
|
|
||||||
@ -187,7 +199,6 @@ if ($action == "importSignature") {
|
|||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
$online_sign_ip = getUserRemoteIP();
|
$online_sign_ip = getUserRemoteIP();
|
||||||
$online_sign_name = ''; // TODO Ask name on form to sign
|
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."propal";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."propal";
|
||||||
$sql .= " SET fk_statut = ".((int) $object::STATUS_SIGNED).", note_private = '".$db->escape($object->note_private)."',";
|
$sql .= " SET fk_statut = ".((int) $object::STATUS_SIGNED).", note_private = '".$db->escape($object->note_private)."',";
|
||||||
@ -207,9 +218,6 @@ if ($action == "importSignature") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$db->commit();
|
|
||||||
$response = "success";
|
|
||||||
setEventMessages("PropalSigned", null, 'warnings');
|
|
||||||
if (method_exists($object, 'call_trigger')) {
|
if (method_exists($object, 'call_trigger')) {
|
||||||
//customer is not a user !?! so could we use same user as validation ?
|
//customer is not a user !?! so could we use same user as validation ?
|
||||||
$user = new User($db);
|
$user = new User($db);
|
||||||
@ -218,17 +226,25 @@ if ($action == "importSignature") {
|
|||||||
$result = $object->call_trigger('PROPAL_CLOSE_SIGNED', $user);
|
$result = $object->call_trigger('PROPAL_CLOSE_SIGNED', $user);
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
|
$response = "error in trigger ".$object->error;
|
||||||
|
} else {
|
||||||
|
$response = "success";
|
||||||
}
|
}
|
||||||
$result = $object->call_trigger('PROPAL_CLOSE_SIGNED_WEB', $user);
|
} else {
|
||||||
if ($result < 0) {
|
$response = "success";
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$db->rollback();
|
|
||||||
$error++;
|
$error++;
|
||||||
$response = "error sql";
|
$response = "error sql";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
$db->commit();
|
||||||
|
$response = "success";
|
||||||
|
setEventMessages("PropalSigned", null, 'warnings');
|
||||||
|
} else {
|
||||||
|
$db->rollback();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} elseif ($mode == 'contract') {
|
} elseif ($mode == 'contract') {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
||||||
|
|||||||
@ -839,6 +839,10 @@ class CMailFile
|
|||||||
$this->error .= ".<br>";
|
$this->error .= ".<br>";
|
||||||
$this->error .= $langs->trans("ErrorPhpMailDelivery");
|
$this->error .= $langs->trans("ErrorPhpMailDelivery");
|
||||||
dol_syslog("CMailFile::sendfile: mail end error=".$this->error, LOG_ERR);
|
dol_syslog("CMailFile::sendfile: mail end error=".$this->error, LOG_ERR);
|
||||||
|
|
||||||
|
if (!empty($conf->global->MAIN_MAIL_DEBUG)) {
|
||||||
|
$this->save_dump_mail_in_err();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_syslog("CMailFile::sendfile: mail end success", LOG_DEBUG);
|
dol_syslog("CMailFile::sendfile: mail end success", LOG_DEBUG);
|
||||||
}
|
}
|
||||||
@ -903,6 +907,7 @@ class CMailFile
|
|||||||
|
|
||||||
if (getDolGlobalString($keyforsmtpauthtype) === "XOAUTH2") {
|
if (getDolGlobalString($keyforsmtpauthtype) === "XOAUTH2") {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array
|
||||||
|
|
||||||
$keyforsupportedoauth2array = $conf->global->$keyforsmtpoauthservice;
|
$keyforsupportedoauth2array = $conf->global->$keyforsmtpoauthservice;
|
||||||
if (preg_match('/^.*-/', $keyforsupportedoauth2array)) {
|
if (preg_match('/^.*-/', $keyforsupportedoauth2array)) {
|
||||||
$keyforprovider = preg_replace('/^.*-/', '', $keyforsupportedoauth2array);
|
$keyforprovider = preg_replace('/^.*-/', '', $keyforsupportedoauth2array);
|
||||||
@ -996,6 +1001,10 @@ class CMailFile
|
|||||||
}
|
}
|
||||||
dol_syslog("CMailFile::sendfile: mail end error with smtps lib to HOST=".$server.", PORT=".$conf->global->$keyforsmtpport." - ".$this->error, LOG_ERR);
|
dol_syslog("CMailFile::sendfile: mail end error with smtps lib to HOST=".$server.", PORT=".$conf->global->$keyforsmtpport." - ".$this->error, LOG_ERR);
|
||||||
$res = false;
|
$res = false;
|
||||||
|
|
||||||
|
if (!empty($conf->global->MAIN_MAIL_DEBUG)) {
|
||||||
|
$this->save_dump_mail_in_err();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($this->sendmode == 'swiftmailer') {
|
} elseif ($this->sendmode == 'swiftmailer') {
|
||||||
@ -1031,6 +1040,7 @@ class CMailFile
|
|||||||
}
|
}
|
||||||
if (getDolGlobalString($keyforsmtpauthtype) === "XOAUTH2") {
|
if (getDolGlobalString($keyforsmtpauthtype) === "XOAUTH2") {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array
|
||||||
|
|
||||||
$keyforsupportedoauth2array = getDolGlobalString($keyforsmtpoauthservice);
|
$keyforsupportedoauth2array = getDolGlobalString($keyforsmtpoauthservice);
|
||||||
if (preg_match('/^.*-/', $keyforsupportedoauth2array)) {
|
if (preg_match('/^.*-/', $keyforsupportedoauth2array)) {
|
||||||
$keyforprovider = preg_replace('/^.*-/', '', $keyforsupportedoauth2array);
|
$keyforprovider = preg_replace('/^.*-/', '', $keyforsupportedoauth2array);
|
||||||
@ -1131,6 +1141,10 @@ class CMailFile
|
|||||||
}
|
}
|
||||||
dol_syslog("CMailFile::sendfile: mail end error=".$this->error, LOG_ERR);
|
dol_syslog("CMailFile::sendfile: mail end error=".$this->error, LOG_ERR);
|
||||||
$res = false;
|
$res = false;
|
||||||
|
|
||||||
|
if (!empty($conf->global->MAIN_MAIL_DEBUG)) {
|
||||||
|
$this->save_dump_mail_in_err();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_syslog("CMailFile::sendfile: mail end success", LOG_DEBUG);
|
dol_syslog("CMailFile::sendfile: mail end success", LOG_DEBUG);
|
||||||
}
|
}
|
||||||
@ -1218,7 +1232,7 @@ class CMailFile
|
|||||||
|
|
||||||
if (@is_writeable($dolibarr_main_data_root)) { // Avoid fatal error on fopen with open_basedir
|
if (@is_writeable($dolibarr_main_data_root)) { // Avoid fatal error on fopen with open_basedir
|
||||||
$outputfile = $dolibarr_main_data_root."/dolibarr_mail.log";
|
$outputfile = $dolibarr_main_data_root."/dolibarr_mail.log";
|
||||||
$fp = fopen($outputfile, "w");
|
$fp = fopen($outputfile, "w"); // overwrite
|
||||||
|
|
||||||
if ($this->sendmode == 'mail') {
|
if ($this->sendmode == 'mail') {
|
||||||
fputs($fp, $this->headers);
|
fputs($fp, $this->headers);
|
||||||
@ -1235,6 +1249,25 @@ class CMailFile
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
|
/**
|
||||||
|
* Save content if mail is in error
|
||||||
|
* Used for debugging.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function save_dump_mail_in_err()
|
||||||
|
{
|
||||||
|
global $dolibarr_main_data_root;
|
||||||
|
|
||||||
|
if (@is_writeable($dolibarr_main_data_root)) { // Avoid fatal error on fopen with open_basedir
|
||||||
|
$srcfile = $dolibarr_main_data_root."/dolibarr_mail.log";
|
||||||
|
$destfile = $dolibarr_main_data_root."/dolibarr_mail.err";
|
||||||
|
|
||||||
|
dol_move($srcfile, $destfile, 0, 1, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Correct an uncomplete html string
|
* Correct an uncomplete html string
|
||||||
|
|||||||
@ -80,6 +80,11 @@ abstract class CommonDocGenerator
|
|||||||
*/
|
*/
|
||||||
public $format;
|
public $format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string pdf, odt, etc
|
||||||
|
*/
|
||||||
|
public $type;
|
||||||
|
|
||||||
public $page_hauteur;
|
public $page_hauteur;
|
||||||
public $page_largeur;
|
public $page_largeur;
|
||||||
public $marge_gauche;
|
public $marge_gauche;
|
||||||
|
|||||||
@ -900,7 +900,7 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
dol_syslog(get_class($this)."::makeStripeSepaRequest start", LOG_DEBUG);
|
dol_syslog(get_class($this)."::makeStripeSepaRequest start", LOG_DEBUG);
|
||||||
|
|
||||||
if ($this->statut > self::STATUS_DRAFT && $this->paye == 0) {
|
if ($this->statut > self::STATUS_DRAFT && $this->paye == 0) {
|
||||||
// Get the default payment mode for BAN payment
|
// Get the default payment mode for BAN payment of the third party
|
||||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
|
||||||
$bac = new CompanyBankAccount($this->db); // table societe_rib
|
$bac = new CompanyBankAccount($this->db); // table societe_rib
|
||||||
$result = $bac->fetch(0, $this->socid, 1, 'ban');
|
$result = $bac->fetch(0, $this->socid, 1, 'ban');
|
||||||
@ -974,295 +974,307 @@ abstract class CommonInvoice extends CommonObject
|
|||||||
$amountstripe = $amountstripe * 100;
|
$amountstripe = $amountstripe * 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$fk_bank_account = getDolGlobalInt('STRIPE_BANK_ACCOUNT_FOR_PAYMENTS');
|
||||||
|
if (!($fk_bank_account > 0)) {
|
||||||
|
$error++;
|
||||||
|
$errorforinvoice++;
|
||||||
|
dol_syslog("Error no bank account defined for Stripe payments", LOG_ERR);
|
||||||
|
$this->errors[] = "Error bank account for Stripe payments not defined into Stripe module";
|
||||||
|
}
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Create a prelevement_bon
|
// Create a prelevement_bon
|
||||||
$bon = new BonPrelevement($this->db);
|
$bon = new BonPrelevement($this->db);
|
||||||
if (empty($obj->fk_prelevement_bons)) {
|
if (!$error) {
|
||||||
// This create record into llx_prelevment_bons and update link with llx_prelevement_demande
|
if (empty($obj->fk_prelevement_bons)) {
|
||||||
$nbinvoices = $bon->create(0, 0, 'real', 'ALL', '', 0, 'direct-debit', $did);
|
// This create record into llx_prelevment_bons and update link with llx_prelevement_demande
|
||||||
if ($nbinvoices <= 0) {
|
$nbinvoices = $bon->create(0, 0, 'real', 'ALL', '', 0, 'direct-debit', $did, $fk_bank_account);
|
||||||
|
if ($nbinvoices <= 0) {
|
||||||
|
$error++;
|
||||||
|
$errorforinvoice++;
|
||||||
|
dol_syslog("Error on BonPrelevement creation", LOG_ERR);
|
||||||
|
$this->errors[] = "Error on BonPrelevement creation";
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
if (!$error) {
|
||||||
|
// Update the direct debit payment request of the processed request to save the id of the prelevement_bon
|
||||||
|
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_demande SET";
|
||||||
|
$sql .= " fk_prelevement_bons = ".((int) $bon->id);
|
||||||
|
$sql .= " WHERE rowid = ".((int) $did);
|
||||||
|
|
||||||
|
$result = $this->db->query($sql);
|
||||||
|
if ($result < 0) {
|
||||||
|
$error++;
|
||||||
|
$this->errors[] = "Error on updateing fk_prelevement_bons to ".$bon->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
} else {
|
||||||
$error++;
|
$error++;
|
||||||
$errorforinvoice++;
|
$errorforinvoice++;
|
||||||
dol_syslog("Error on BonPrelevement creation", LOG_ERR);
|
dol_syslog("Error Line already part of a bank payment order", LOG_ERR);
|
||||||
$this->errors[] = "Error on BonPrelevement creation";
|
$this->errors[] = "The line is already included into a bank payment order. Delete the bank payment order first.";
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
if (!$error) {
|
|
||||||
// Update the direct debit payment request of the processed request to save the id of the prelevement_bon
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_demande SET";
|
|
||||||
$sql .= " fk_prelevement_bons = ".((int) $bon->id);
|
|
||||||
$sql .= " WHERE rowid = ".((int) $did);
|
|
||||||
|
|
||||||
$result = $this->db->query($sql);
|
|
||||||
if ($result < 0) {
|
|
||||||
$error++;
|
|
||||||
$this->errors[] = "Error on updateing fk_prelevement_bons to ".$bon->id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
} else {
|
|
||||||
$error++;
|
|
||||||
$errorforinvoice++;
|
|
||||||
dol_syslog("Error Line already part of a bank payment order", LOG_ERR);
|
|
||||||
$this->errors[] = "The line is already included into a bank payment order. Delete the bank payment order first.";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error && $amountstripe > 0) {
|
if (!$error) {
|
||||||
try {
|
if ($amountstripe > 0) {
|
||||||
//var_dump($companypaymentmode);
|
try {
|
||||||
dol_syslog("We will try to pay with companypaymentmodeid=" . $companypaymentmode->id . " stripe_card_ref=" . $companypaymentmode->stripe_card_ref . " mode=" . $companypaymentmode->status, LOG_DEBUG);
|
//var_dump($companypaymentmode);
|
||||||
|
dol_syslog("We will try to pay with companypaymentmodeid=" . $companypaymentmode->id . " stripe_card_ref=" . $companypaymentmode->stripe_card_ref . " mode=" . $companypaymentmode->status, LOG_DEBUG);
|
||||||
|
|
||||||
$thirdparty = new Societe($this->db);
|
$thirdparty = new Societe($this->db);
|
||||||
$resultthirdparty = $thirdparty->fetch($this->socid);
|
$resultthirdparty = $thirdparty->fetch($this->socid);
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT . '/stripe/class/stripe.class.php'; // This include the include of htdocs/stripe/config.php
|
include_once DOL_DOCUMENT_ROOT . '/stripe/class/stripe.class.php'; // This include the include of htdocs/stripe/config.php
|
||||||
// So it inits or erases the $stripearrayofkeysbyenv
|
// So it inits or erases the $stripearrayofkeysbyenv
|
||||||
$stripe = new Stripe($this->db);
|
$stripe = new Stripe($this->db);
|
||||||
|
|
||||||
dol_syslog("makeStripeSepaRequest Current Stripe environment is " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key']);
|
dol_syslog("makeStripeSepaRequest Current Stripe environment is " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key']);
|
||||||
|
|
||||||
$stripearrayofkeys = $stripearrayofkeysbyenv[$servicestatus];
|
$stripearrayofkeys = $stripearrayofkeysbyenv[$servicestatus];
|
||||||
\Stripe\Stripe::setApiKey($stripearrayofkeys['secret_key']);
|
\Stripe\Stripe::setApiKey($stripearrayofkeys['secret_key']);
|
||||||
|
|
||||||
|
|
||||||
dol_syslog("makeStripeSepaRequest get stripe connet account", LOG_DEBUG);
|
dol_syslog("makeStripeSepaRequest get stripe connet account", LOG_DEBUG);
|
||||||
$stripeacc = $stripe->getStripeAccount($service, $this->socid); // Get Stripe OAuth connect account if it exists (no network access here)
|
$stripeacc = $stripe->getStripeAccount($service, $this->socid); // Get Stripe OAuth connect account if it exists (no network access here)
|
||||||
dol_syslog("makeStripeSepaRequest get stripe connect account return " . json_encode($stripeacc), LOG_DEBUG);
|
dol_syslog("makeStripeSepaRequest get stripe connect account return " . json_encode($stripeacc), LOG_DEBUG);
|
||||||
|
|
||||||
$customer = $stripe->customerStripe($thirdparty, $stripeacc, $servicestatus, 0);
|
$customer = $stripe->customerStripe($thirdparty, $stripeacc, $servicestatus, 0);
|
||||||
if (empty($customer) && !empty($stripe->error)) {
|
if (empty($customer) && !empty($stripe->error)) {
|
||||||
$this->errors[] = $stripe->error;
|
$this->errors[] = $stripe->error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// $nbhoursbetweentries = (empty($conf->global->SELLYOURSAAS_NBHOURSBETWEENTRIES) ? 49 : $conf->global->SELLYOURSAAS_NBHOURSBETWEENTRIES); // Must have more that 48 hours + 1 between each try (so 1 try every 3 daily batch)
|
// $nbhoursbetweentries = (empty($conf->global->SELLYOURSAAS_NBHOURSBETWEENTRIES) ? 49 : $conf->global->SELLYOURSAAS_NBHOURSBETWEENTRIES); // Must have more that 48 hours + 1 between each try (so 1 try every 3 daily batch)
|
||||||
// $nbdaysbeforeendoftries = (empty($conf->global->SELLYOURSAAS_NBDAYSBEFOREENDOFTRIES) ? 35 : $conf->global->SELLYOURSAAS_NBDAYSBEFOREENDOFTRIES);
|
// $nbdaysbeforeendoftries = (empty($conf->global->SELLYOURSAAS_NBDAYSBEFOREENDOFTRIES) ? 35 : $conf->global->SELLYOURSAAS_NBDAYSBEFOREENDOFTRIES);
|
||||||
$postactionmessages = [];
|
$postactionmessages = [];
|
||||||
|
|
||||||
if ($resultthirdparty > 0 && !empty($customer)) {
|
if ($resultthirdparty > 0 && !empty($customer)) {
|
||||||
if (!$error) { // Payment was not canceled
|
if (!$error) { // Payment was not canceled
|
||||||
$sepaMode = false;
|
$sepaMode = false;
|
||||||
$stripecard = null;
|
$stripecard = null;
|
||||||
if ($companypaymentmode->type == 'ban') {
|
if ($companypaymentmode->type == 'ban') {
|
||||||
$sepaMode = true;
|
$sepaMode = true;
|
||||||
// Check into societe_rib if a payment mode for Stripe and ban payment exists
|
// Check into societe_rib if a payment mode for Stripe and ban payment exists
|
||||||
// To make a Stripe SEPA payment request, we must have the payment mode source already saved into societe_rib and retreived with ->sepaStripe
|
// To make a Stripe SEPA payment request, we must have the payment mode source already saved into societe_rib and retreived with ->sepaStripe
|
||||||
// The payment mode source is created when we create the bank account on Stripe with paymentmodes.php?action=create
|
// The payment mode source is created when we create the bank account on Stripe with paymentmodes.php?action=create
|
||||||
$stripecard = $stripe->sepaStripe($customer, $companypaymentmode, $stripeacc, $servicestatus, 0);
|
$stripecard = $stripe->sepaStripe($customer, $companypaymentmode, $stripeacc, $servicestatus, 0);
|
||||||
}
|
|
||||||
|
|
||||||
if ($stripecard) { // Can be src_... (for sepa) or pm_... (new card mode). Note that card_... (old card mode) should not happen here.
|
|
||||||
$FULLTAG = 'DID='.$did.'-INV=' . $this->id . '-CUS=' . $thirdparty->id;
|
|
||||||
$description = 'Stripe payment from makeStripeSepaRequest: ' . $FULLTAG . ' did='.$did.' ref=' . $this->ref;
|
|
||||||
|
|
||||||
$stripefailurecode = '';
|
|
||||||
$stripefailuremessage = '';
|
|
||||||
$stripefailuredeclinecode = '';
|
|
||||||
|
|
||||||
// Using new SCA method
|
|
||||||
dol_syslog("* Create payment on SEPA " . $stripecard->id . ", amounttopay=" . $amounttopay . ", amountstripe=" . $amountstripe . ", FULLTAG=" . $FULLTAG, LOG_DEBUG);
|
|
||||||
|
|
||||||
// Create payment intent and charge payment (confirmnow = true)
|
|
||||||
$paymentintent = $stripe->getPaymentIntent($amounttopay, $currency, $FULLTAG, $description, $this, $customer->id, $stripeacc, $servicestatus, 0, 'automatic', true, $stripecard->id, 1, 1, $did);
|
|
||||||
|
|
||||||
$charge = new stdClass();
|
|
||||||
|
|
||||||
if ($paymentintent->status === 'succeeded' || $paymentintent->status === 'processing') {
|
|
||||||
$charge->status = 'ok';
|
|
||||||
$charge->id = $paymentintent->id;
|
|
||||||
$charge->customer = $customer->id;
|
|
||||||
} elseif ($paymentintent->status === 'requires_action') {
|
|
||||||
//paymentintent->status may be => 'requires_action' (no error in such a case)
|
|
||||||
dol_syslog(var_export($paymentintent, true), LOG_DEBUG);
|
|
||||||
|
|
||||||
$charge->status = 'failed';
|
|
||||||
$charge->customer = $customer->id;
|
|
||||||
$charge->failure_code = $stripe->code;
|
|
||||||
$charge->failure_message = $stripe->error;
|
|
||||||
$charge->failure_declinecode = $stripe->declinecode;
|
|
||||||
$stripefailurecode = $stripe->code;
|
|
||||||
$stripefailuremessage = 'Action required. Contact the support at ';// . $conf->global->SELLYOURSAAS_MAIN_EMAIL;
|
|
||||||
$stripefailuredeclinecode = $stripe->declinecode;
|
|
||||||
} else {
|
|
||||||
dol_syslog(var_export($paymentintent, true), LOG_DEBUG);
|
|
||||||
|
|
||||||
$charge->status = 'failed';
|
|
||||||
$charge->customer = $customer->id;
|
|
||||||
$charge->failure_code = $stripe->code;
|
|
||||||
$charge->failure_message = $stripe->error;
|
|
||||||
$charge->failure_declinecode = $stripe->declinecode;
|
|
||||||
$stripefailurecode = $stripe->code;
|
|
||||||
$stripefailuremessage = $stripe->error;
|
|
||||||
$stripefailuredeclinecode = $stripe->declinecode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//var_dump("stripefailurecode=".$stripefailurecode." stripefailuremessage=".$stripefailuremessage." stripefailuredeclinecode=".$stripefailuredeclinecode);
|
if ($stripecard) { // Can be src_... (for sepa) or pm_... (new card mode). Note that card_... (old card mode) should not happen here.
|
||||||
//exit;
|
$FULLTAG = 'DID='.$did.'-INV=' . $this->id . '-CUS=' . $thirdparty->id;
|
||||||
|
$description = 'Stripe payment from makeStripeSepaRequest: ' . $FULLTAG . ' did='.$did.' ref=' . $this->ref;
|
||||||
|
|
||||||
|
$stripefailurecode = '';
|
||||||
|
$stripefailuremessage = '';
|
||||||
|
$stripefailuredeclinecode = '';
|
||||||
|
|
||||||
// Return $charge = array('id'=>'ch_XXXX', 'status'=>'succeeded|pending|failed', 'failure_code'=>, 'failure_message'=>...)
|
// Using new SCA method
|
||||||
if (empty($charge) || $charge->status == 'failed') {
|
dol_syslog("* Create payment on SEPA " . $stripecard->id . ", amounttopay=" . $amounttopay . ", amountstripe=" . $amountstripe . ", FULLTAG=" . $FULLTAG, LOG_DEBUG);
|
||||||
dol_syslog('Failed to charge payment mode ' . $stripecard->id . ' stripefailurecode=' . $stripefailurecode . ' stripefailuremessage=' . $stripefailuremessage . ' stripefailuredeclinecode=' . $stripefailuredeclinecode, LOG_WARNING);
|
|
||||||
|
|
||||||
// Save a stripe payment was in error
|
// Create payment intent and charge payment (confirmnow = true)
|
||||||
$this->stripechargeerror++;
|
$paymentintent = $stripe->getPaymentIntent($amounttopay, $currency, $FULLTAG, $description, $this, $customer->id, $stripeacc, $servicestatus, 0, 'automatic', true, $stripecard->id, 1, 1, $did);
|
||||||
|
|
||||||
$error++;
|
$charge = new stdClass();
|
||||||
$errorforinvoice++;
|
|
||||||
$errmsg = $langs->trans("FailedToChargeCard");
|
if ($paymentintent->status === 'succeeded' || $paymentintent->status === 'processing') {
|
||||||
if (!empty($charge)) {
|
$charge->status = 'ok';
|
||||||
if ($stripefailuredeclinecode == 'authentication_required') {
|
$charge->id = $paymentintent->id;
|
||||||
$errauthenticationmessage = $langs->trans("ErrSCAAuthentication");
|
$charge->customer = $customer->id;
|
||||||
$errmsg = $errauthenticationmessage;
|
} elseif ($paymentintent->status === 'requires_action') {
|
||||||
} elseif (in_array($stripefailuredeclinecode, ['insufficient_funds', 'generic_decline'])) {
|
//paymentintent->status may be => 'requires_action' (no error in such a case)
|
||||||
$errmsg .= ': ' . $charge->failure_code;
|
dol_syslog(var_export($paymentintent, true), LOG_DEBUG);
|
||||||
$errmsg .= ($charge->failure_message ? ' - ' : '') . ' ' . $charge->failure_message;
|
|
||||||
if (empty($stripefailurecode)) {
|
$charge->status = 'failed';
|
||||||
$stripefailurecode = $charge->failure_code;
|
$charge->customer = $customer->id;
|
||||||
}
|
$charge->failure_code = $stripe->code;
|
||||||
if (empty($stripefailuremessage)) {
|
$charge->failure_message = $stripe->error;
|
||||||
$stripefailuremessage = $charge->failure_message;
|
$charge->failure_declinecode = $stripe->declinecode;
|
||||||
}
|
$stripefailurecode = $stripe->code;
|
||||||
} else {
|
$stripefailuremessage = 'Action required. Contact the support at ';// . $conf->global->SELLYOURSAAS_MAIN_EMAIL;
|
||||||
$errmsg .= ': failure_code=' . $charge->failure_code;
|
$stripefailuredeclinecode = $stripe->declinecode;
|
||||||
$errmsg .= ($charge->failure_message ? ' - ' : '') . ' failure_message=' . $charge->failure_message;
|
|
||||||
if (empty($stripefailurecode)) {
|
|
||||||
$stripefailurecode = $charge->failure_code;
|
|
||||||
}
|
|
||||||
if (empty($stripefailuremessage)) {
|
|
||||||
$stripefailuremessage = $charge->failure_message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
$errmsg .= ': ' . $stripefailurecode . ' - ' . $stripefailuremessage;
|
dol_syslog(var_export($paymentintent, true), LOG_DEBUG);
|
||||||
$errmsg .= ($stripefailuredeclinecode ? ' - ' . $stripefailuredeclinecode : '');
|
|
||||||
|
$charge->status = 'failed';
|
||||||
|
$charge->customer = $customer->id;
|
||||||
|
$charge->failure_code = $stripe->code;
|
||||||
|
$charge->failure_message = $stripe->error;
|
||||||
|
$charge->failure_declinecode = $stripe->declinecode;
|
||||||
|
$stripefailurecode = $stripe->code;
|
||||||
|
$stripefailuremessage = $stripe->error;
|
||||||
|
$stripefailuredeclinecode = $stripe->declinecode;
|
||||||
}
|
}
|
||||||
|
|
||||||
$description = 'Stripe payment ERROR from makeStripeSepaRequest: ' . $FULLTAG;
|
//var_dump("stripefailurecode=".$stripefailurecode." stripefailuremessage=".$stripefailuremessage." stripefailuredeclinecode=".$stripefailuredeclinecode);
|
||||||
$postactionmessages[] = $errmsg . ' (' . $stripearrayofkeys['publishable_key'] . ')';
|
//exit;
|
||||||
$this->errors[] = $errmsg;
|
|
||||||
|
|
||||||
|
// Return $charge = array('id'=>'ch_XXXX', 'status'=>'succeeded|pending|failed', 'failure_code'=>, 'failure_message'=>...)
|
||||||
|
if (empty($charge) || $charge->status == 'failed') {
|
||||||
|
dol_syslog('Failed to charge payment mode ' . $stripecard->id . ' stripefailurecode=' . $stripefailurecode . ' stripefailuremessage=' . $stripefailuremessage . ' stripefailuredeclinecode=' . $stripefailuredeclinecode, LOG_WARNING);
|
||||||
|
|
||||||
|
// Save a stripe payment was in error
|
||||||
|
$this->stripechargeerror++;
|
||||||
|
|
||||||
|
$error++;
|
||||||
|
$errorforinvoice++;
|
||||||
|
$errmsg = $langs->trans("FailedToChargeCard");
|
||||||
|
if (!empty($charge)) {
|
||||||
|
if ($stripefailuredeclinecode == 'authentication_required') {
|
||||||
|
$errauthenticationmessage = $langs->trans("ErrSCAAuthentication");
|
||||||
|
$errmsg = $errauthenticationmessage;
|
||||||
|
} elseif (in_array($stripefailuredeclinecode, ['insufficient_funds', 'generic_decline'])) {
|
||||||
|
$errmsg .= ': ' . $charge->failure_code;
|
||||||
|
$errmsg .= ($charge->failure_message ? ' - ' : '') . ' ' . $charge->failure_message;
|
||||||
|
if (empty($stripefailurecode)) {
|
||||||
|
$stripefailurecode = $charge->failure_code;
|
||||||
|
}
|
||||||
|
if (empty($stripefailuremessage)) {
|
||||||
|
$stripefailuremessage = $charge->failure_message;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$errmsg .= ': failure_code=' . $charge->failure_code;
|
||||||
|
$errmsg .= ($charge->failure_message ? ' - ' : '') . ' failure_message=' . $charge->failure_message;
|
||||||
|
if (empty($stripefailurecode)) {
|
||||||
|
$stripefailurecode = $charge->failure_code;
|
||||||
|
}
|
||||||
|
if (empty($stripefailuremessage)) {
|
||||||
|
$stripefailuremessage = $charge->failure_message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$errmsg .= ': ' . $stripefailurecode . ' - ' . $stripefailuremessage;
|
||||||
|
$errmsg .= ($stripefailuredeclinecode ? ' - ' . $stripefailuredeclinecode : '');
|
||||||
|
}
|
||||||
|
|
||||||
|
$description = 'Stripe payment ERROR from makeStripeSepaRequest: ' . $FULLTAG;
|
||||||
|
$postactionmessages[] = $errmsg . ' (' . $stripearrayofkeys['publishable_key'] . ')';
|
||||||
|
$this->errors[] = $errmsg;
|
||||||
|
} else {
|
||||||
|
dol_syslog('Successfuly request direct debit ' . $stripecard->id);
|
||||||
|
|
||||||
|
$postactionmessages[] = 'Success to request direct debit (' . $charge->id . ' with ' . $stripearrayofkeys['publishable_key'] . ')';
|
||||||
|
|
||||||
|
// Save a stripe payment was done in realy life so later we will be able to force a commit on recorded payments
|
||||||
|
// even if in batch mode (method doTakePaymentStripe), we will always make all action in one transaction with a forced commit.
|
||||||
|
$this->stripechargedone++;
|
||||||
|
|
||||||
|
// Default description used for label of event. Will be overwrite by another value later.
|
||||||
|
$description = 'Stripe payment request OK (' . $charge->id . ') from makeStripeSepaRequest: ' . $FULLTAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
$object = $this;
|
||||||
|
|
||||||
|
// Track an event
|
||||||
|
if (empty($charge) || $charge->status == 'failed') {
|
||||||
|
$actioncode = 'PAYMENT_STRIPE_KO';
|
||||||
|
$extraparams = $stripefailurecode;
|
||||||
|
$extraparams .= (($extraparams && $stripefailuremessage) ? ' - ' : '') . $stripefailuremessage;
|
||||||
|
$extraparams .= (($extraparams && $stripefailuredeclinecode) ? ' - ' : '') . $stripefailuredeclinecode;
|
||||||
|
} else {
|
||||||
|
$actioncode = 'PAYMENT_STRIPE_OK';
|
||||||
|
$extraparams = '';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_syslog('Successfuly request direct debit ' . $stripecard->id);
|
$error++;
|
||||||
|
$errorforinvoice++;
|
||||||
|
dol_syslog("No direct debit payment method found for this stripe customer " . $customer->id, LOG_WARNING);
|
||||||
|
$this->errors[] = 'Failed to get direct debit payment method for stripe customer = ' . $customer->id;
|
||||||
|
|
||||||
$postactionmessages[] = 'Success to request direct debit (' . $charge->id . ' with ' . $stripearrayofkeys['publishable_key'] . ')';
|
$description = 'Failed to find or use the payment mode - no credit card defined for the customer account';
|
||||||
|
$stripefailurecode = 'BADPAYMENTMODE';
|
||||||
|
$stripefailuremessage = 'Failed to find or use the payment mode - no credit card defined for the customer account';
|
||||||
|
$postactionmessages[] = $description . ' (' . $stripearrayofkeys['publishable_key'] . ')';
|
||||||
|
|
||||||
// Save a stripe payment was done in realy life so later we will be able to force a commit on recorded payments
|
$object = $this;
|
||||||
// even if in batch mode (method doTakePaymentStripe), we will always make all action in one transaction with a forced commit.
|
|
||||||
$this->stripechargedone++;
|
|
||||||
|
|
||||||
// Default description used for label of event. Will be overwrite by another value later.
|
|
||||||
$description = 'Stripe payment request OK (' . $charge->id . ') from makeStripeSepaRequest: ' . $FULLTAG;
|
|
||||||
}
|
|
||||||
|
|
||||||
$object = $this;
|
|
||||||
|
|
||||||
// Track an event
|
|
||||||
if (empty($charge) || $charge->status == 'failed') {
|
|
||||||
$actioncode = 'PAYMENT_STRIPE_KO';
|
$actioncode = 'PAYMENT_STRIPE_KO';
|
||||||
$extraparams = $stripefailurecode;
|
|
||||||
$extraparams .= (($extraparams && $stripefailuremessage) ? ' - ' : '') . $stripefailuremessage;
|
|
||||||
$extraparams .= (($extraparams && $stripefailuredeclinecode) ? ' - ' : '') . $stripefailuredeclinecode;
|
|
||||||
} else {
|
|
||||||
$actioncode = 'PAYMENT_STRIPE_OK';
|
|
||||||
$extraparams = '';
|
$extraparams = '';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$error++;
|
// If error because payment was canceled for a logical reason, we do nothing (no event added)
|
||||||
$errorforinvoice++;
|
$description = '';
|
||||||
dol_syslog("No direct debit payment method found for this stripe customer " . $customer->id, LOG_WARNING);
|
$stripefailurecode = '';
|
||||||
$this->errors[] = 'Failed to get direct debit payment method for stripe customer = ' . $customer->id;
|
$stripefailuremessage = '';
|
||||||
|
|
||||||
$description = 'Failed to find or use the payment mode - no credit card defined for the customer account';
|
|
||||||
$stripefailurecode = 'BADPAYMENTMODE';
|
|
||||||
$stripefailuremessage = 'Failed to find or use the payment mode - no credit card defined for the customer account';
|
|
||||||
$postactionmessages[] = $description . ' (' . $stripearrayofkeys['publishable_key'] . ')';
|
|
||||||
|
|
||||||
$object = $this;
|
$object = $this;
|
||||||
|
|
||||||
$actioncode = 'PAYMENT_STRIPE_KO';
|
$actioncode = '';
|
||||||
$extraparams = '';
|
$extraparams = '';
|
||||||
}
|
}
|
||||||
} else {
|
} else { // Else of the if ($resultthirdparty > 0 && ! empty($customer)) {
|
||||||
// If error because payment was canceled for a logical reason, we do nothing (no event added)
|
if ($resultthirdparty <= 0) {
|
||||||
$description = '';
|
dol_syslog('SellYourSaasUtils Failed to load customer for thirdparty_id = ' . $thirdparty->id, LOG_WARNING);
|
||||||
$stripefailurecode = '';
|
$this->errors[] = 'Failed to load customer for thirdparty_id = ' . $thirdparty->id;
|
||||||
$stripefailuremessage = '';
|
} else { // $customer stripe not found
|
||||||
|
dol_syslog('SellYourSaasUtils Failed to get Stripe customer id for thirdparty_id = ' . $thirdparty->id . " in mode " . $servicestatus . " in Stripe env " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key'], LOG_WARNING);
|
||||||
|
$this->errors[] = 'Failed to get Stripe customer id for thirdparty_id = ' . $thirdparty->id . " in mode " . $servicestatus . " in Stripe env " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key'];
|
||||||
|
}
|
||||||
|
$error++;
|
||||||
|
$errorforinvoice++;
|
||||||
|
|
||||||
|
$description = 'Failed to find or use your payment mode (no payment mode for this customer id)';
|
||||||
|
$stripefailurecode = 'BADPAYMENTMODE';
|
||||||
|
$stripefailuremessage = 'Failed to find or use your payment mode (no payment mode for this customer id)';
|
||||||
|
$postactionmessages = [];
|
||||||
|
|
||||||
$object = $this;
|
$object = $this;
|
||||||
|
|
||||||
$actioncode = '';
|
$actioncode = 'PAYMENT_STRIPE_KO';
|
||||||
$extraparams = '';
|
$extraparams = '';
|
||||||
}
|
}
|
||||||
} else { // Else of the if ($resultthirdparty > 0 && ! empty($customer)) {
|
|
||||||
if ($resultthirdparty <= 0) {
|
if ($description) {
|
||||||
dol_syslog('SellYourSaasUtils Failed to load customer for thirdparty_id = ' . $thirdparty->id, LOG_WARNING);
|
dol_syslog("* Record event for credit transfer or direct debit request result - " . $description);
|
||||||
$this->errors[] = 'Failed to load customer for thirdparty_id = ' . $thirdparty->id;
|
require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
|
||||||
} else { // $customer stripe not found
|
|
||||||
dol_syslog('SellYourSaasUtils Failed to get Stripe customer id for thirdparty_id = ' . $thirdparty->id . " in mode " . $servicestatus . " in Stripe env " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key'], LOG_WARNING);
|
// Insert record of payment (success or error)
|
||||||
$this->errors[] = 'Failed to get Stripe customer id for thirdparty_id = ' . $thirdparty->id . " in mode " . $servicestatus . " in Stripe env " . $stripearrayofkeysbyenv[$servicestatus]['publishable_key'];
|
$actioncomm = new ActionComm($this->db);
|
||||||
|
|
||||||
|
$actioncomm->type_code = 'AC_OTH_AUTO'; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...)
|
||||||
|
$actioncomm->code = 'AC_' . $actioncode;
|
||||||
|
$actioncomm->label = $description;
|
||||||
|
$actioncomm->note_private = join(",\n", $postactionmessages);
|
||||||
|
$actioncomm->fk_project = $this->fk_project;
|
||||||
|
$actioncomm->datep = $now;
|
||||||
|
$actioncomm->datef = $now;
|
||||||
|
$actioncomm->percentage = -1; // Not applicable
|
||||||
|
$actioncomm->socid = $thirdparty->id;
|
||||||
|
$actioncomm->contactid = 0;
|
||||||
|
$actioncomm->authorid = $user->id; // User saving action
|
||||||
|
$actioncomm->userownerid = $user->id; // Owner of action
|
||||||
|
// Fields when action is a real email (content is already into note)
|
||||||
|
/*$actioncomm->email_msgid = $object->email_msgid;
|
||||||
|
$actioncomm->email_from = $object->email_from;
|
||||||
|
$actioncomm->email_sender= $object->email_sender;
|
||||||
|
$actioncomm->email_to = $object->email_to;
|
||||||
|
$actioncomm->email_tocc = $object->email_tocc;
|
||||||
|
$actioncomm->email_tobcc = $object->email_tobcc;
|
||||||
|
$actioncomm->email_subject = $object->email_subject;
|
||||||
|
$actioncomm->errors_to = $object->errors_to;*/
|
||||||
|
$actioncomm->fk_element = $this->id;
|
||||||
|
$actioncomm->elementtype = $this->element;
|
||||||
|
$actioncomm->extraparams = dol_trunc($extraparams, 250);
|
||||||
|
|
||||||
|
$actioncomm->create($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->description = $description;
|
||||||
|
$this->postactionmessages = $postactionmessages;
|
||||||
|
} catch (Exception $e) {
|
||||||
$error++;
|
$error++;
|
||||||
$errorforinvoice++;
|
$errorforinvoice++;
|
||||||
|
dol_syslog('Error ' . $e->getMessage(), LOG_ERR);
|
||||||
$description = 'Failed to find or use your payment mode (no payment mode for this customer id)';
|
$this->errors[] = 'Error ' . $e->getMessage();
|
||||||
$stripefailurecode = 'BADPAYMENTMODE';
|
|
||||||
$stripefailuremessage = 'Failed to find or use your payment mode (no payment mode for this customer id)';
|
|
||||||
$postactionmessages = [];
|
|
||||||
|
|
||||||
$object = $this;
|
|
||||||
|
|
||||||
$actioncode = 'PAYMENT_STRIPE_KO';
|
|
||||||
$extraparams = '';
|
|
||||||
}
|
}
|
||||||
|
} else { // If remain to pay is null
|
||||||
if ($description) {
|
|
||||||
dol_syslog("* Record event for credit transfer or direct debit request result - " . $description);
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
|
|
||||||
|
|
||||||
// Insert record of payment (success or error)
|
|
||||||
$actioncomm = new ActionComm($this->db);
|
|
||||||
|
|
||||||
$actioncomm->type_code = 'AC_OTH_AUTO'; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...)
|
|
||||||
$actioncomm->code = 'AC_' . $actioncode;
|
|
||||||
$actioncomm->label = $description;
|
|
||||||
$actioncomm->note_private = join(",\n", $postactionmessages);
|
|
||||||
$actioncomm->fk_project = $this->fk_project;
|
|
||||||
$actioncomm->datep = $now;
|
|
||||||
$actioncomm->datef = $now;
|
|
||||||
$actioncomm->percentage = -1; // Not applicable
|
|
||||||
$actioncomm->socid = $thirdparty->id;
|
|
||||||
$actioncomm->contactid = 0;
|
|
||||||
$actioncomm->authorid = $user->id; // User saving action
|
|
||||||
$actioncomm->userownerid = $user->id; // Owner of action
|
|
||||||
// Fields when action is a real email (content is already into note)
|
|
||||||
/*$actioncomm->email_msgid = $object->email_msgid;
|
|
||||||
$actioncomm->email_from = $object->email_from;
|
|
||||||
$actioncomm->email_sender= $object->email_sender;
|
|
||||||
$actioncomm->email_to = $object->email_to;
|
|
||||||
$actioncomm->email_tocc = $object->email_tocc;
|
|
||||||
$actioncomm->email_tobcc = $object->email_tobcc;
|
|
||||||
$actioncomm->email_subject = $object->email_subject;
|
|
||||||
$actioncomm->errors_to = $object->errors_to;*/
|
|
||||||
$actioncomm->fk_element = $this->id;
|
|
||||||
$actioncomm->elementtype = $this->element;
|
|
||||||
$actioncomm->extraparams = dol_trunc($extraparams, 250);
|
|
||||||
|
|
||||||
$actioncomm->create($user);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->description = $description;
|
|
||||||
$this->postactionmessages = $postactionmessages;
|
|
||||||
} catch (Exception $e) {
|
|
||||||
$error++;
|
$error++;
|
||||||
$errorforinvoice++;
|
$errorforinvoice++;
|
||||||
dol_syslog('Error ' . $e->getMessage(), LOG_ERR);
|
dol_syslog("Remain to pay is null for the invoice " . $this->id . " " . $this->ref . ". Why is the invoice not classified 'Paid' ?", LOG_WARNING);
|
||||||
$this->errors[] = 'Error ' . $e->getMessage();
|
$this->errors[] = "Remain to pay is null for the invoice " . $this->id . " " . $this->ref . ". Why is the invoice not classified 'Paid' ?";
|
||||||
}
|
}
|
||||||
} else { // If remain to pay is null
|
|
||||||
$error++;
|
|
||||||
$errorforinvoice++;
|
|
||||||
dol_syslog("Remain to pay is null for the invoice " . $this->id . " " . $this->ref . ". Why is the invoice not classified 'Paid' ?", LOG_WARNING);
|
|
||||||
$this->errors[] = "Remain to pay is null for the invoice " . $this->id . " " . $this->ref . ". Why is the invoice not classified 'Paid' ?";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set status of the order to "Transferred" with method 'api'
|
// Set status of the order to "Transferred" with method 'api'
|
||||||
|
|||||||
@ -46,6 +46,12 @@ class FileUpload
|
|||||||
global $db, $conf;
|
global $db, $conf;
|
||||||
global $object;
|
global $object;
|
||||||
global $hookmanager;
|
global $hookmanager;
|
||||||
|
|
||||||
|
// Feature not enabled. Warning feature not used and not secured so disabled.
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$hookmanager->initHooks(array('fileupload'));
|
$hookmanager->initHooks(array('fileupload'));
|
||||||
|
|
||||||
$this->fk_element = $fk_element;
|
$this->fk_element = $fk_element;
|
||||||
@ -238,6 +244,10 @@ class FileUpload
|
|||||||
*/
|
*/
|
||||||
protected function getFileObject($file_name)
|
protected function getFileObject($file_name)
|
||||||
{
|
{
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$file_path = $this->options['upload_dir'].$file_name;
|
$file_path = $this->options['upload_dir'].$file_name;
|
||||||
if (is_file($file_path) && $file_name[0] !== '.') {
|
if (is_file($file_path) && $file_name[0] !== '.') {
|
||||||
$file = new stdClass();
|
$file = new stdClass();
|
||||||
@ -278,6 +288,10 @@ class FileUpload
|
|||||||
{
|
{
|
||||||
global $maxwidthmini, $maxheightmini;
|
global $maxwidthmini, $maxheightmini;
|
||||||
|
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$file_path = $this->options['upload_dir'].$file_name;
|
$file_path = $this->options['upload_dir'].$file_name;
|
||||||
$new_file_path = $options['upload_dir'].$file_name;
|
$new_file_path = $options['upload_dir'].$file_name;
|
||||||
|
|
||||||
@ -309,6 +323,10 @@ class FileUpload
|
|||||||
*/
|
*/
|
||||||
protected function validate($uploaded_file, $file, $error, $index)
|
protected function validate($uploaded_file, $file, $error, $index)
|
||||||
{
|
{
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ($error) {
|
if ($error) {
|
||||||
$file->error = $error;
|
$file->error = $error;
|
||||||
return false;
|
return false;
|
||||||
@ -399,8 +417,8 @@ class FileUpload
|
|||||||
// Also remove control characters and spaces (\x00..\x20) around the filename:
|
// Also remove control characters and spaces (\x00..\x20) around the filename:
|
||||||
$file_name = trim(basename(stripslashes($name)), ".\x00..\x20");
|
$file_name = trim(basename(stripslashes($name)), ".\x00..\x20");
|
||||||
// Add missing file extension for known image types:
|
// Add missing file extension for known image types:
|
||||||
if (strpos($file_name, '.') === false &&
|
$matches = array();
|
||||||
preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
|
if (strpos($file_name, '.') === false && preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
|
||||||
$file_name .= '.'.$matches[1];
|
$file_name .= '.'.$matches[1];
|
||||||
}
|
}
|
||||||
if ($this->options['discard_aborted_uploads']) {
|
if ($this->options['discard_aborted_uploads']) {
|
||||||
@ -424,6 +442,10 @@ class FileUpload
|
|||||||
*/
|
*/
|
||||||
protected function handleFileUpload($uploaded_file, $name, $size, $type, $error, $index)
|
protected function handleFileUpload($uploaded_file, $name, $size, $type, $error, $index)
|
||||||
{
|
{
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$file = new stdClass();
|
$file = new stdClass();
|
||||||
$file->name = $this->trimFileName($name, $type, $index);
|
$file->name = $this->trimFileName($name, $type, $index);
|
||||||
$file->mime = dol_mimetype($file->name, '', 2);
|
$file->mime = dol_mimetype($file->name, '', 2);
|
||||||
@ -470,6 +492,10 @@ class FileUpload
|
|||||||
*/
|
*/
|
||||||
public function get()
|
public function get()
|
||||||
{
|
{
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$file_name = isset($_REQUEST['file']) ?
|
$file_name = isset($_REQUEST['file']) ?
|
||||||
basename(stripslashes($_REQUEST['file'])) : null;
|
basename(stripslashes($_REQUEST['file'])) : null;
|
||||||
if ($file_name) {
|
if ($file_name) {
|
||||||
@ -488,6 +514,10 @@ class FileUpload
|
|||||||
*/
|
*/
|
||||||
public function post()
|
public function post()
|
||||||
{
|
{
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
|
if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
|
||||||
return $this->delete();
|
return $this->delete();
|
||||||
}
|
}
|
||||||
@ -543,6 +573,10 @@ class FileUpload
|
|||||||
*/
|
*/
|
||||||
public function delete()
|
public function delete()
|
||||||
{
|
{
|
||||||
|
if (!getDolGlobalInt('MAIN_USE_JQUERY_FILEUPLOAD')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$file_name = isset($_REQUEST['file']) ?
|
$file_name = isset($_REQUEST['file']) ?
|
||||||
basename(stripslashes($_REQUEST['file'])) : null;
|
basename(stripslashes($_REQUEST['file'])) : null;
|
||||||
$file_path = $this->options['upload_dir'].$file_name;
|
$file_path = $this->options['upload_dir'].$file_name;
|
||||||
|
|||||||
@ -94,7 +94,7 @@ class Form
|
|||||||
* @param string $text Text of label or key to translate
|
* @param string $text Text of label or key to translate
|
||||||
* @param string $htmlname Name of select field ('edit' prefix will be added)
|
* @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 string $preselected Value to show/edit (not used in this function)
|
||||||
* @param object $object Object
|
* @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 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 $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 string $moreparam More param to add on a href URL.
|
||||||
@ -194,7 +194,7 @@ class Form
|
|||||||
* @param string $text Text of label (not used in this function)
|
* @param string $text Text of label (not used in this function)
|
||||||
* @param string $htmlname Name of select field
|
* @param string $htmlname Name of select field
|
||||||
* @param string $value Value to show/edit
|
* @param string $value Value to show/edit
|
||||||
* @param object $object Object
|
* @param object $object Object (that we want to show)
|
||||||
* @param boolean $perm Permission to allow button to edit parameter
|
* @param boolean $perm Permission to allow button to edit parameter
|
||||||
* @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', 'ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols', 'select;xkey:xval,ykey:yval,...')
|
* @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', 'ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols', 'select;xkey:xval,ykey:yval,...')
|
||||||
* @param string $editvalue When in edit mode, use this value as $value instead of value (for example, you can provide here a formated price instead of numeric value). Use '' to use same than $value
|
* @param string $editvalue When in edit mode, use this value as $value instead of value (for example, you can provide here a formated price instead of numeric value). Use '' to use same than $value
|
||||||
@ -303,6 +303,8 @@ class Form
|
|||||||
$arraylist[$tmpkey] = $tmp[1];
|
$arraylist[$tmpkey] = $tmp[1];
|
||||||
}
|
}
|
||||||
$ret .= $this->selectarray($htmlname, $arraylist, $value);
|
$ret .= $this->selectarray($htmlname, $arraylist, $value);
|
||||||
|
} elseif (preg_match('/^link/', $typeofdata)) {
|
||||||
|
// TODO Not yet implemented. See code for extrafields
|
||||||
} elseif (preg_match('/^ckeditor/', $typeofdata)) {
|
} elseif (preg_match('/^ckeditor/', $typeofdata)) {
|
||||||
$tmp = explode(':', $typeofdata); // Example: ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols:uselocalbrowser
|
$tmp = explode(':', $typeofdata); // Example: ckeditor:dolibarr_zzz:width:height:savemethod:toolbarstartexpanded:rows:cols:uselocalbrowser
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
|
||||||
|
|||||||
@ -41,7 +41,7 @@ class FormCategory extends Form
|
|||||||
* @param string $showempty 1 or 'string' to add an empty entry
|
* @param string $showempty 1 or 'string' to add an empty entry
|
||||||
* @return string A HTML filter box (Note: selected results can get with GETPOST("search_category_".$type."_list"))
|
* @return string A HTML filter box (Note: selected results can get with GETPOST("search_category_".$type."_list"))
|
||||||
*/
|
*/
|
||||||
public function getFilterBox($type, array $preSelected, $morecss = "minwidth300 widthcentpercentminusx", $searchCategoryProductOperator = -1, $multiselect = 1, $nocateg = 1, $showempty = '')
|
public function getFilterBox($type, array $preSelected, $morecss = "minwidth300imp widthcentpercentminusx", $searchCategoryProductOperator = -1, $multiselect = 1, $nocateg = 1, $showempty = '')
|
||||||
{
|
{
|
||||||
global $langs, $db;
|
global $langs, $db;
|
||||||
|
|
||||||
|
|||||||
@ -908,7 +908,7 @@ class FormCompany extends Form
|
|||||||
* @param string $morecss More css
|
* @param string $morecss More css
|
||||||
* @return string HTML string with prof id
|
* @return string HTML string with prof id
|
||||||
*/
|
*/
|
||||||
public function get_input_id_prof($idprof, $htmlname, $preselected, $country_code, $morecss = 'maxwidth100onsmartphone quatrevingtpercent')
|
public function get_input_id_prof($idprof, $htmlname, $preselected, $country_code, $morecss = 'maxwidth200')
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf, $langs, $hookmanager;
|
global $conf, $langs, $hookmanager;
|
||||||
|
|||||||
@ -1431,7 +1431,7 @@ class FormTicket
|
|||||||
$res = $ticketstat->fetch('', '', $this->track_id);
|
$res = $ticketstat->fetch('', '', $this->track_id);
|
||||||
|
|
||||||
print '<tr><td></td><td>';
|
print '<tr><td></td><td>';
|
||||||
$checkbox_selected = (GETPOST('send_email') == "1" ? ' checked' : ($conf->global->TICKETS_MESSAGE_FORCE_MAIL?'checked':''));
|
$checkbox_selected = (GETPOST('send_email') == "1" ? ' checked' : (getDolGlobalInt('TICKETS_MESSAGE_FORCE_MAIL')?'checked':''));
|
||||||
print '<input type="checkbox" name="send_email" value="1" id="send_msg_email" '.$checkbox_selected.'/> ';
|
print '<input type="checkbox" name="send_email" value="1" id="send_msg_email" '.$checkbox_selected.'/> ';
|
||||||
print '<label for="send_msg_email">'.$langs->trans('SendMessageByEmail').'</label>';
|
print '<label for="send_msg_email">'.$langs->trans('SendMessageByEmail').'</label>';
|
||||||
$texttooltip = $langs->trans("TicketMessageSendEmailHelp", '{s1}');
|
$texttooltip = $langs->trans("TicketMessageSendEmailHelp", '{s1}');
|
||||||
@ -1463,7 +1463,7 @@ class FormTicket
|
|||||||
|
|
||||||
// Subject
|
// Subject
|
||||||
print '<tr class="email_line"><td>'.$langs->trans('Subject').'</td>';
|
print '<tr class="email_line"><td>'.$langs->trans('Subject').'</td>';
|
||||||
print '<td><input type="text" class="text minwidth500" name="subject" value="['.$conf->global->MAIN_INFO_SOCIETE_NOM.' - '.$langs->trans("Ticket").' '.$ticketstat->ref.'] '.$langs->trans('TicketNewMessage').'" />';
|
print '<td><input type="text" class="text minwidth500" name="subject" value="['.getDolGlobalString('MAIN_INFO_SOCIETE_NOM').' - '.$langs->trans("Ticket").' '.$ticketstat->ref.'] '.$langs->trans('TicketNewMessage').'" />';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Recipients / adressed-to
|
// Recipients / adressed-to
|
||||||
@ -1497,8 +1497,8 @@ class FormTicket
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS) {
|
if (getDolGlobalInt('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS')) {
|
||||||
$sendto[] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO.' <small class="opacitymedium">(generic email)</small>';
|
$sendto[] = getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO').' <small class="opacitymedium">(generic email)</small>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print recipient list
|
// Print recipient list
|
||||||
|
|||||||
@ -71,9 +71,7 @@ class Notify
|
|||||||
'ORDER_VALIDATE',
|
'ORDER_VALIDATE',
|
||||||
'PROPAL_VALIDATE',
|
'PROPAL_VALIDATE',
|
||||||
'PROPAL_CLOSE_SIGNED',
|
'PROPAL_CLOSE_SIGNED',
|
||||||
'PROPAL_CLOSE_SIGNED_WEB',
|
|
||||||
'PROPAL_CLOSE_REFUSED',
|
'PROPAL_CLOSE_REFUSED',
|
||||||
'PROPAL_CLOSE_REFUSED_WEB',
|
|
||||||
'FICHINTER_VALIDATE',
|
'FICHINTER_VALIDATE',
|
||||||
'FICHINTER_ADD_CONTACT',
|
'FICHINTER_ADD_CONTACT',
|
||||||
'ORDER_SUPPLIER_VALIDATE',
|
'ORDER_SUPPLIER_VALIDATE',
|
||||||
@ -359,6 +357,7 @@ class Notify
|
|||||||
global $dolibarr_main_url_root;
|
global $dolibarr_main_url_root;
|
||||||
global $action;
|
global $action;
|
||||||
|
|
||||||
|
// Complete the array Notify::$arrayofnotifsupported
|
||||||
if (!is_object($hookmanager)) {
|
if (!is_object($hookmanager)) {
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
||||||
$hookmanager = new HookManager($this->db);
|
$hookmanager = new HookManager($this->db);
|
||||||
@ -373,13 +372,14 @@ class Notify
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the trigger code is not managed by the Notification module
|
||||||
if (!in_array($notifcode, Notify::$arrayofnotifsupported)) {
|
if (!in_array($notifcode, Notify::$arrayofnotifsupported)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::send notifcode=".$notifcode.", object=".$object->id);
|
dol_syslog(get_class($this)."::send notifcode=".$notifcode.", object id=".$object->id);
|
||||||
|
|
||||||
$langs->load("other");
|
$langs->load("other");
|
||||||
|
|
||||||
@ -407,7 +407,7 @@ class Notify
|
|||||||
// Check notification per third party
|
// Check notification per third party
|
||||||
if (!empty($object->socid) && $object->socid > 0) {
|
if (!empty($object->socid) && $object->socid > 0) {
|
||||||
$sql .= "SELECT 'tocontactid' as type_target, c.email, c.rowid as cid, c.lastname, c.firstname, c.default_lang,";
|
$sql .= "SELECT 'tocontactid' as type_target, c.email, c.rowid as cid, c.lastname, c.firstname, c.default_lang,";
|
||||||
$sql .= " a.rowid as adid, a.label, a.code, n.rowid, n.type";
|
$sql .= " a.rowid as adid, a.label, a.code, n.rowid, n.threshold, n.context, n.type";
|
||||||
$sql .= " FROM ".$this->db->prefix()."socpeople as c,";
|
$sql .= " FROM ".$this->db->prefix()."socpeople as c,";
|
||||||
$sql .= " ".$this->db->prefix()."c_action_trigger as a,";
|
$sql .= " ".$this->db->prefix()."c_action_trigger as a,";
|
||||||
$sql .= " ".$this->db->prefix()."notify_def as n,";
|
$sql .= " ".$this->db->prefix()."notify_def as n,";
|
||||||
@ -427,7 +427,7 @@ class Notify
|
|||||||
|
|
||||||
// Check notification per user
|
// Check notification per user
|
||||||
$sql .= "SELECT 'touserid' as type_target, c.email, c.rowid as cid, c.lastname, c.firstname, c.lang as default_lang,";
|
$sql .= "SELECT 'touserid' as type_target, c.email, c.rowid as cid, c.lastname, c.firstname, c.lang as default_lang,";
|
||||||
$sql .= " a.rowid as adid, a.label, a.code, n.rowid, n.type";
|
$sql .= " a.rowid as adid, a.label, a.code, n.rowid, n.threshold, n.context, n.type";
|
||||||
$sql .= " FROM ".$this->db->prefix()."user as c,";
|
$sql .= " FROM ".$this->db->prefix()."user as c,";
|
||||||
$sql .= " ".$this->db->prefix()."c_action_trigger as a,";
|
$sql .= " ".$this->db->prefix()."c_action_trigger as a,";
|
||||||
$sql .= " ".$this->db->prefix()."notify_def as n";
|
$sql .= " ".$this->db->prefix()."notify_def as n";
|
||||||
@ -439,6 +439,11 @@ class Notify
|
|||||||
$sql .= " AND a.code = '".$this->db->escape($notifcode)."'"; // New usage
|
$sql .= " AND a.code = '".$this->db->escape($notifcode)."'"; // New usage
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check notification fixed
|
||||||
|
// TODO Move part found after, into a sql here
|
||||||
|
|
||||||
|
|
||||||
|
// Loop on all notifications enabled
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$num = $this->db->num_rows($result);
|
$num = $this->db->num_rows($result);
|
||||||
@ -511,13 +516,9 @@ class Notify
|
|||||||
$object_type = 'propal';
|
$object_type = 'propal';
|
||||||
$labeltouse = $conf->global->PROPAL_CLOSE_REFUSED_TEMPLATE;
|
$labeltouse = $conf->global->PROPAL_CLOSE_REFUSED_TEMPLATE;
|
||||||
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalClosedRefused", $link);
|
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalClosedRefused", $link);
|
||||||
break;
|
if (!empty($object->context['closedfromonlinesignature'])) {
|
||||||
case 'PROPAL_CLOSE_REFUSED_WEB':
|
$mesg .= ' - From online page';
|
||||||
$link = '<a href="'.$urlwithroot.'/comm/propal/card.php?id='.$object->id.'&entity='.$object->entity.'">'.$newref.'</a>';
|
}
|
||||||
$dir_output = $conf->propal->multidir_output[$object->entity]."/".get_exdir(0, 0, 0, 1, $object, 'propal');
|
|
||||||
$object_type = 'propal';
|
|
||||||
$labeltouse = $conf->global->PROPAL_CLOSE_REFUSED_TEMPLATE;
|
|
||||||
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalClosedRefusedWeb", $link);
|
|
||||||
break;
|
break;
|
||||||
case 'PROPAL_CLOSE_SIGNED':
|
case 'PROPAL_CLOSE_SIGNED':
|
||||||
$link = '<a href="'.$urlwithroot.'/comm/propal/card.php?id='.$object->id.'&entity='.$object->entity.'">'.$newref.'</a>';
|
$link = '<a href="'.$urlwithroot.'/comm/propal/card.php?id='.$object->id.'&entity='.$object->entity.'">'.$newref.'</a>';
|
||||||
@ -525,13 +526,9 @@ class Notify
|
|||||||
$object_type = 'propal';
|
$object_type = 'propal';
|
||||||
$labeltouse = $conf->global->PROPAL_CLOSE_SIGNED_TEMPLATE;
|
$labeltouse = $conf->global->PROPAL_CLOSE_SIGNED_TEMPLATE;
|
||||||
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalClosedSigned", $link);
|
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalClosedSigned", $link);
|
||||||
break;
|
if (!empty($object->context['closedfromonlinesignature'])) {
|
||||||
case 'PROPAL_CLOSE_SIGNED_WEB':
|
$mesg .= ' - From online page';
|
||||||
$link = '<a href="'.$urlwithroot.'/comm/propal/card.php?id='.$object->id.'&entity='.$object->entity.'">'.$newref.'</a>';
|
}
|
||||||
$dir_output = $conf->propal->multidir_output[$object->entity]."/".get_exdir(0, 0, 0, 1, $object, 'propal');
|
|
||||||
$object_type = 'propal';
|
|
||||||
$labeltouse = $conf->global->PROPAL_CLOSE_SIGNED_TEMPLATE;
|
|
||||||
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextProposalClosedSigned", $link);
|
|
||||||
break;
|
break;
|
||||||
case 'FICHINTER_ADD_CONTACT':
|
case 'FICHINTER_ADD_CONTACT':
|
||||||
$link = '<a href="'.$urlwithroot.'/fichinter/card.php?id='.$object->id.'&entity='.$object->entity.'">'.$newref.'</a>';
|
$link = '<a href="'.$urlwithroot.'/fichinter/card.php?id='.$object->id.'&entity='.$object->entity.'">'.$newref.'</a>';
|
||||||
@ -651,6 +648,23 @@ class Notify
|
|||||||
|
|
||||||
$labeltouse = !empty($labeltouse) ? $labeltouse : '';
|
$labeltouse = !empty($labeltouse) ? $labeltouse : '';
|
||||||
|
|
||||||
|
// Replace keyword __SUPERVISOREMAIL__
|
||||||
|
if (preg_match('/__SUPERVISOREMAIL__/', $sendto)) {
|
||||||
|
$newval = '';
|
||||||
|
if ($user->fk_user > 0) {
|
||||||
|
$supervisoruser = new User($this->db);
|
||||||
|
$supervisoruser->fetch($user->fk_user);
|
||||||
|
if ($supervisoruser->email) {
|
||||||
|
$newval = trim(dolGetFirstLastname($supervisoruser->firstname, $supervisoruser->lastname).' <'.$supervisoruser->email.'>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dol_syslog("Replace the __SUPERVISOREMAIL__ key into recipient email string with ".$newval);
|
||||||
|
$sendto = preg_replace('/__SUPERVISOREMAIL__/', $newval, $sendto);
|
||||||
|
$sendto = preg_replace('/,\s*,/', ',', $sendto); // in some case you can have $sendto like "email, __SUPERVISOREMAIL__ , otheremail" then you have "email, , othermail" and it's not valid
|
||||||
|
$sendto = preg_replace('/^[\s,]+/', '', $sendto); // Clean start of string
|
||||||
|
$sendto = preg_replace('/[\s,]+$/', '', $sendto); // Clean end of string
|
||||||
|
}
|
||||||
|
|
||||||
$parameters = array('notifcode'=>$notifcode, 'sendto'=>$sendto, 'replyto'=>$replyto, 'file'=>$filename_list, 'mimefile'=>$mimetype_list, 'filename'=>$mimefilename_list, 'outputlangs'=>$outputlangs, 'labeltouse'=>$labeltouse);
|
$parameters = array('notifcode'=>$notifcode, 'sendto'=>$sendto, 'replyto'=>$replyto, 'file'=>$filename_list, 'mimefile'=>$mimetype_list, 'filename'=>$mimefilename_list, 'outputlangs'=>$outputlangs, 'labeltouse'=>$labeltouse);
|
||||||
if (!isset($action)) {
|
if (!isset($action)) {
|
||||||
$action = '';
|
$action = '';
|
||||||
@ -721,6 +735,7 @@ class Notify
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check notification using fixed email
|
// Check notification using fixed email
|
||||||
|
// TODO Move vars NOTIFICATION_FIXEDEMAIL into table llx_notify_def and inclulde the case into previous loop of sql result
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
foreach ($conf->global as $key => $val) {
|
foreach ($conf->global as $key => $val) {
|
||||||
$reg = array();
|
$reg = array();
|
||||||
|
|||||||
@ -1003,8 +1003,8 @@ function dol_move($srcfile, $destfile, $newmask = 0, $overwriteifexists = 1, $te
|
|||||||
* @param string $srcdir Source directory
|
* @param string $srcdir Source directory
|
||||||
* @param string $destdir Destination directory
|
* @param string $destdir Destination directory
|
||||||
* @param int $overwriteifexists Overwrite directory if exists (1 by default)
|
* @param int $overwriteifexists Overwrite directory if exists (1 by default)
|
||||||
* @param int $indexdatabase Index new file into database.
|
* @param int $indexdatabase Index new name of files into database.
|
||||||
* @param int $renamedircontent Rename contents inside srcdir.
|
* @param int $renamedircontent Also rename contents inside srcdir after the move to match new destination name.
|
||||||
*
|
*
|
||||||
* @return boolean True if OK, false if KO
|
* @return boolean True if OK, false if KO
|
||||||
*/
|
*/
|
||||||
@ -1045,7 +1045,7 @@ function dol_move_dir($srcdir, $destdir, $overwriteifexists = 1, $indexdatabase
|
|||||||
if ($file["type"] == "dir") {
|
if ($file["type"] == "dir") {
|
||||||
$res = dol_move_dir($filepath.'/'.$oldname, $filepath.'/'.$newname, $overwriteifexists, $indexdatabase, $renamedircontent);
|
$res = dol_move_dir($filepath.'/'.$oldname, $filepath.'/'.$newname, $overwriteifexists, $indexdatabase, $renamedircontent);
|
||||||
} else {
|
} else {
|
||||||
$res = dol_move($filepath.'/'.$oldname, $filepath.'/'.$newname);
|
$res = dol_move($filepath.'/'.$oldname, $filepath.'/'.$newname, 0, $overwriteifexists, 0, $indexdatabase);
|
||||||
}
|
}
|
||||||
if (!$res) {
|
if (!$res) {
|
||||||
return $result;
|
return $result;
|
||||||
|
|||||||
@ -4006,8 +4006,9 @@ function dol_trunc($string, $size = 40, $trunc = 'right', $stringencoding = 'UTF
|
|||||||
* Show picto whatever it's its name (generic function)
|
* Show picto whatever it's its name (generic function)
|
||||||
*
|
*
|
||||||
* @param string $titlealt Text on title tag for tooltip. Not used if param notitle is set to 1.
|
* @param string $titlealt Text on title tag for tooltip. Not used if param notitle is set to 1.
|
||||||
* @param string $picto Name of image file to show ('filenew', ...)
|
* @param string $picto Name of image file to show ('filenew', ...).
|
||||||
* If no extension provided, we use '.png'. Image must be stored into theme/xxx/img directory.
|
* For font awesome icon (example 'user'), you can use picto_nocolor to not have the color of picto forced.
|
||||||
|
* If no extension provided and it is not a font awesome icon, we use '.png'. Image must be stored into theme/xxx/img directory.
|
||||||
* Example: picto.png if picto.png is stored into htdocs/theme/mytheme/img
|
* Example: picto.png if picto.png is stored into htdocs/theme/mytheme/img
|
||||||
* Example: picto.png@mymodule if picto.png is stored into htdocs/mymodule/img
|
* Example: picto.png@mymodule if picto.png is stored into htdocs/mymodule/img
|
||||||
* Example: /mydir/mysubdir/picto.png if picto.png is stored into htdocs/mydir/mysubdir (pictoisfullpath must be set to 1)
|
* Example: /mydir/mysubdir/picto.png if picto.png is stored into htdocs/mydir/mysubdir (pictoisfullpath must be set to 1)
|
||||||
@ -4045,6 +4046,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
} else {
|
} else {
|
||||||
$pictowithouttext = preg_replace('/(\.png|\.gif|\.svg)$/', '', $picto);
|
$pictowithouttext = preg_replace('/(\.png|\.gif|\.svg)$/', '', $picto);
|
||||||
$pictowithouttext = str_replace('object_', '', $pictowithouttext);
|
$pictowithouttext = str_replace('object_', '', $pictowithouttext);
|
||||||
|
$pictowithouttext = str_replace('_nocolor', '', $pictowithouttext);
|
||||||
|
|
||||||
if (strpos($pictowithouttext, 'fontawesome_') !== false || preg_match('/^fa-/', $pictowithouttext)) {
|
if (strpos($pictowithouttext, 'fontawesome_') !== false || preg_match('/^fa-/', $pictowithouttext)) {
|
||||||
// This is a font awesome image 'fonwtawesome_xxx' or 'fa-xxx'
|
// This is a font awesome image 'fonwtawesome_xxx' or 'fa-xxx'
|
||||||
@ -4102,7 +4104,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
'edit', 'ellipsis-h', 'email', 'entity', 'envelope', 'eraser', 'establishment', 'expensereport', 'external-link-alt', 'external-link-square-alt', 'eye',
|
'edit', 'ellipsis-h', 'email', 'entity', 'envelope', 'eraser', 'establishment', 'expensereport', 'external-link-alt', 'external-link-square-alt', 'eye',
|
||||||
'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'autofill', 'folder', 'folder-open', 'folder-plus',
|
'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'autofill', 'folder', 'folder-open', 'folder-plus',
|
||||||
'gears', 'generate', 'globe', 'globe-americas', 'graph', 'grip', 'grip_title', 'group',
|
'gears', 'generate', 'globe', 'globe-americas', 'graph', 'grip', 'grip_title', 'group',
|
||||||
'help', 'holiday',
|
'hands-helping', 'help', 'holiday',
|
||||||
'id-card', 'images', 'incoterm', 'info', 'intervention', 'inventory', 'intracommreport', 'jobprofile',
|
'id-card', 'images', 'incoterm', 'info', 'intervention', 'inventory', 'intracommreport', 'jobprofile',
|
||||||
'knowledgemanagement',
|
'knowledgemanagement',
|
||||||
'label', 'language', 'line', 'link', 'list', 'list-alt', 'listlight', 'loan', 'lock', 'lot', 'long-arrow-alt-right',
|
'label', 'language', 'line', 'link', 'list', 'list-alt', 'listlight', 'loan', 'lock', 'lot', 'long-arrow-alt-right',
|
||||||
@ -4254,7 +4256,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
//'title_setup'=>'infobox-action', 'tools'=>'infobox-action',
|
//'title_setup'=>'infobox-action', 'tools'=>'infobox-action',
|
||||||
'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode'
|
'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode'
|
||||||
);
|
);
|
||||||
if (!empty($arrayconvpictotomorcess[$pictowithouttext])) {
|
if (!empty($arrayconvpictotomorcess[$pictowithouttext]) && strpos($picto, '_nocolor') === false) {
|
||||||
$morecss .= ($morecss ? ' ' : '').$arrayconvpictotomorcess[$pictowithouttext];
|
$morecss .= ($morecss ? ' ' : '').$arrayconvpictotomorcess[$pictowithouttext];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4274,7 +4276,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
'uncheck'=>'#800', 'uparrow'=>'#555', 'user-cog'=>'#999', 'country'=>'#aaa', 'globe-americas'=>'#aaa', 'region'=>'#aaa', 'state'=>'#aaa',
|
'uncheck'=>'#800', 'uparrow'=>'#555', 'user-cog'=>'#999', 'country'=>'#aaa', 'globe-americas'=>'#aaa', 'region'=>'#aaa', 'state'=>'#aaa',
|
||||||
'website'=>'#304', 'workstation'=>'#a69944'
|
'website'=>'#304', 'workstation'=>'#a69944'
|
||||||
);
|
);
|
||||||
if (isset($arrayconvpictotocolor[$pictowithouttext])) {
|
if (isset($arrayconvpictotocolor[$pictowithouttext]) && strpos($picto, '_nocolor') === false) {
|
||||||
$facolor = $arrayconvpictotocolor[$pictowithouttext];
|
$facolor = $arrayconvpictotocolor[$pictowithouttext];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9091,11 +9093,9 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Error $e) {
|
} catch (Error $e) {
|
||||||
$error = 'Caught error : ';
|
$error = 'dol_eval try/catch error : ';
|
||||||
$error .= $e->getMessage() . ', ';
|
$error .= $e->getMessage();
|
||||||
$error .= 'Trace : ';
|
dol_syslog($error);
|
||||||
$error .= json_encode($e->getTrace());
|
|
||||||
error_log($error, 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -45,6 +45,11 @@ class pdf_strato extends ModelePDFContract
|
|||||||
*/
|
*/
|
||||||
public $db;
|
public $db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int The environment ID when using a multicompany module
|
||||||
|
*/
|
||||||
|
public $entity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string model name
|
* @var string model name
|
||||||
*/
|
*/
|
||||||
@ -114,7 +119,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Issuer
|
* Issuer
|
||||||
* @var Societe
|
* @var Societe Object that emits
|
||||||
*/
|
*/
|
||||||
public $emetteur;
|
public $emetteur;
|
||||||
|
|
||||||
@ -138,7 +143,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$this->description = $langs->trans("StandardContractsTemplate");
|
$this->description = $langs->trans("StandardContractsTemplate");
|
||||||
$this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template
|
$this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template
|
||||||
|
|
||||||
// Page size for A4 format
|
// Dimension page
|
||||||
$this->type = 'pdf';
|
$this->type = 'pdf';
|
||||||
$formatarray = pdf_getFormat();
|
$formatarray = pdf_getFormat();
|
||||||
|
|
||||||
@ -160,7 +165,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
// Get source company
|
// Get source company
|
||||||
$this->emetteur = $mysoc;
|
$this->emetteur = $mysoc;
|
||||||
if (empty($this->emetteur->country_code)) {
|
if (empty($this->emetteur->country_code)) {
|
||||||
$this->emetteur->country_code = substr($langs->defaultlang, -2); // By default, if not defined
|
$this->emetteur->country_code = substr($langs->defaultlang, -2); // By default, if was not defined
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define position of columns
|
// Define position of columns
|
||||||
@ -182,7 +187,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
|
public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $user, $langs, $conf, $hookmanager, $mysoc;
|
global $user, $langs, $conf, $mysoc, $db, $hookmanager, $nblines;
|
||||||
|
|
||||||
if (!is_object($outputlangs)) {
|
if (!is_object($outputlangs)) {
|
||||||
$outputlangs = $langs;
|
$outputlangs = $langs;
|
||||||
@ -192,15 +197,30 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$outputlangs->charset_output = 'ISO-8859-1';
|
$outputlangs->charset_output = 'ISO-8859-1';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load traductions files required by page
|
// Load translation files required by page
|
||||||
$outputlangs->loadLangs(array("main", "dict", "companies", "contracts"));
|
$outputlangs->loadLangs(array("main", "dict", "companies", "contracts"));
|
||||||
|
|
||||||
if ($conf->contrat->dir_output) {
|
// Show Draft Watermark
|
||||||
|
if ($object->statut == $object::STATUS_DRAFT && (!empty($conf->global->CONTRACT_DRAFT_WATERMARK))) {
|
||||||
|
$this->watermark = $conf->global->CONTRACT_DRAFT_WATERMARK;
|
||||||
|
}
|
||||||
|
|
||||||
|
global $outputlangsbis;
|
||||||
|
$outputlangsbis = null;
|
||||||
|
if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && $outputlangs->defaultlang != $conf->global->PDF_USE_ALSO_LANGUAGE_CODE) {
|
||||||
|
$outputlangsbis = new Translate('', $conf);
|
||||||
|
$outputlangsbis->setDefaultLang($conf->global->PDF_USE_ALSO_LANGUAGE_CODE);
|
||||||
|
$outputlangsbis->loadLangs(array("main", "dict", "companies", "bills", "products", "orders", "deliveries"));
|
||||||
|
}
|
||||||
|
|
||||||
|
$nblines = count($object->lines);
|
||||||
|
|
||||||
|
if ($conf->contract->multidir_output[$conf->entity]) {
|
||||||
$object->fetch_thirdparty();
|
$object->fetch_thirdparty();
|
||||||
|
|
||||||
// Definition of $dir and $file
|
// Definition of $dir and $file
|
||||||
if ($object->specimen) {
|
if ($object->specimen) {
|
||||||
$dir = $conf->contrat->dir_output;
|
$dir = $conf->contract->multidir_output[$conf->entity];
|
||||||
$file = $dir."/SPECIMEN.pdf";
|
$file = $dir."/SPECIMEN.pdf";
|
||||||
} else {
|
} else {
|
||||||
$objectref = dol_sanitizeFileName($object->ref);
|
$objectref = dol_sanitizeFileName($object->ref);
|
||||||
@ -210,7 +230,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
|
|
||||||
if (!file_exists($dir)) {
|
if (!file_exists($dir)) {
|
||||||
if (dol_mkdir($dir) < 0) {
|
if (dol_mkdir($dir) < 0) {
|
||||||
$this->error = $outputlangs->trans("ErrorCanNotCreateDir", $dir);
|
$this->error = $langs->trans("ErrorCanNotCreateDir", $dir);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -226,15 +246,20 @@ class pdf_strato extends ModelePDFContract
|
|||||||
global $action;
|
global $action;
|
||||||
$reshook = $hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
$reshook = $hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||||
|
|
||||||
|
// Set nblines with the new command lines content after hook
|
||||||
|
$nblines = count($object->lines);
|
||||||
|
|
||||||
|
// Create pdf instance
|
||||||
$pdf = pdf_getInstance($this->format);
|
$pdf = pdf_getInstance($this->format);
|
||||||
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
|
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
|
||||||
|
$pdf->SetAutoPageBreak(1, 0);
|
||||||
|
|
||||||
$heightforinfotot = 50; // Height reserved to output the info and total part
|
$heightforinfotot = 50; // Height reserved to output the info and total part
|
||||||
$heightforfreetext = (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT) ? $conf->global->MAIN_PDF_FREETEXT_HEIGHT : 5); // Height reserved to output the free text on last page
|
$heightforfreetext = (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT) ? $conf->global->MAIN_PDF_FREETEXT_HEIGHT : 5); // Height reserved to output the free text on last page
|
||||||
$heightforfooter = $this->marge_basse + 9; // Height reserved to output the footer (value include bottom margin)
|
$heightforfooter = $this->marge_basse + 9; // Height reserved to output the footer (value include bottom margin)
|
||||||
if (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS)) {
|
if (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS)) {
|
||||||
$heightforfooter += 6;
|
$heightforfooter += 6;
|
||||||
}
|
}
|
||||||
$pdf->SetAutoPageBreak(1, 0);
|
|
||||||
|
|
||||||
if (class_exists('TCPDF')) {
|
if (class_exists('TCPDF')) {
|
||||||
$pdf->setPrintHeader(false);
|
$pdf->setPrintHeader(false);
|
||||||
@ -243,7 +268,11 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$pdf->SetFont(pdf_getPDFFont($outputlangs));
|
$pdf->SetFont(pdf_getPDFFont($outputlangs));
|
||||||
// Set path to the background PDF File
|
// Set path to the background PDF File
|
||||||
if (!empty($conf->global->MAIN_ADD_PDF_BACKGROUND)) {
|
if (!empty($conf->global->MAIN_ADD_PDF_BACKGROUND)) {
|
||||||
$pagecount = $pdf->setSourceFile($conf->mycompany->dir_output.'/'.$conf->global->MAIN_ADD_PDF_BACKGROUND);
|
$logodir = $conf->mycompany->dir_output;
|
||||||
|
if (!empty($conf->mycompany->multidir_output[$object->entity])) {
|
||||||
|
$logodir = $conf->mycompany->multidir_output[$object->entity];
|
||||||
|
}
|
||||||
|
$pagecount = $pdf->setSourceFile($logodir.'/'.$conf->global->MAIN_ADD_PDF_BACKGROUND);
|
||||||
$tplidx = $pdf->importPage(1);
|
$tplidx = $pdf->importPage(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,10 +281,10 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$pdf->SetDrawColor(128, 128, 128);
|
$pdf->SetDrawColor(128, 128, 128);
|
||||||
|
|
||||||
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
||||||
$pdf->SetSubject($outputlangs->transnoentities("ContractCard"));
|
$pdf->SetSubject($outputlangs->transnoentities("Contract"));
|
||||||
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||||
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
||||||
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("ContractCard")." ".$outputlangs->convToOutputCharset($object->thirdparty->name));
|
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Contract")." ".$outputlangs->convToOutputCharset($object->thirdparty->name));
|
||||||
if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) {
|
if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) {
|
||||||
$pdf->SetCompression(false);
|
$pdf->SetCompression(false);
|
||||||
}
|
}
|
||||||
@ -268,7 +297,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$pdf->useTemplate($tplidx);
|
$pdf->useTemplate($tplidx);
|
||||||
}
|
}
|
||||||
$pagenb++;
|
$pagenb++;
|
||||||
$this->_pagehead($pdf, $object, 1, $outputlangs);
|
$top_shift = $this->_pagehead($pdf, $object, 1, $outputlangs, (is_object($outputlangsbis) ? $outputlangsbis : null));
|
||||||
$pdf->SetFont('', '', $default_font_size - 1);
|
$pdf->SetFont('', '', $default_font_size - 1);
|
||||||
$pdf->MultiCell(0, 3, ''); // Set interline to 3
|
$pdf->MultiCell(0, 3, ''); // Set interline to 3
|
||||||
$pdf->SetTextColor(0, 0, 0);
|
$pdf->SetTextColor(0, 0, 0);
|
||||||
@ -408,6 +437,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
{
|
{
|
||||||
$pdf->commitTransaction();
|
$pdf->commitTransaction();
|
||||||
}
|
}
|
||||||
|
$posYAfterDescription = $pdf->GetY();
|
||||||
|
|
||||||
$nexY = $pdf->GetY() + 2;
|
$nexY = $pdf->GetY() + 2;
|
||||||
$pageposafter = $pdf->getPage();
|
$pageposafter = $pdf->getPage();
|
||||||
@ -417,7 +447,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
$pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
|
||||||
|
|
||||||
// We suppose that a too long description is moved completely on next page
|
// We suppose that a too long description is moved completely on next page
|
||||||
if ($pageposafter > $pageposbefore) {
|
if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) {
|
||||||
$pdf->setPage($pageposafter);
|
$pdf->setPage($pageposafter);
|
||||||
$curY = $tab_top_newpage;
|
$curY = $tab_top_newpage;
|
||||||
}
|
}
|
||||||
@ -483,10 +513,6 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$pdf->Output($file, 'F');
|
$pdf->Output($file, 'F');
|
||||||
|
|
||||||
// Add pdfgeneration hook
|
// Add pdfgeneration hook
|
||||||
if (!is_object($hookmanager)) {
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
|
|
||||||
$hookmanager = new HookManager($this->db);
|
|
||||||
}
|
|
||||||
$hookmanager->initHooks(array('pdfgeneration'));
|
$hookmanager->initHooks(array('pdfgeneration'));
|
||||||
$parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs);
|
$parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs);
|
||||||
global $action;
|
global $action;
|
||||||
@ -500,13 +526,13 @@ class pdf_strato extends ModelePDFContract
|
|||||||
|
|
||||||
$this->result = array('fullpath'=>$file);
|
$this->result = array('fullpath'=>$file);
|
||||||
|
|
||||||
return 1;
|
return 1; // No error
|
||||||
} else {
|
} else {
|
||||||
$this->error = $langs->trans("ErrorCanNotCreateDir", $dir);
|
$this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->error = $langs->trans("ErrorConstantNotDefined", "CONTRACT_OUTPUTDIR");
|
$this->error = $langs->transnoentities("ErrorConstantNotDefined", "CONTRACT_OUTPUTDIR");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -534,7 +560,9 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$hidetop = -1;
|
$hidetop = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$currency = !empty($currency) ? $currency : $conf->currency;
|
||||||
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$pdf->SetXY($this->marge_gauche, $tab_top);
|
$pdf->SetXY($this->marge_gauche, $tab_top);
|
||||||
$pdf->MultiCell(190,8,$outputlangs->transnoentities("Description"),0,'L',0);
|
$pdf->MultiCell(190,8,$outputlangs->transnoentities("Description"),0,'L',0);
|
||||||
@ -600,76 +628,97 @@ class pdf_strato extends ModelePDFContract
|
|||||||
* @param Contrat $object Object to show
|
* @param Contrat $object Object to show
|
||||||
* @param int $showaddress 0=no, 1=yes
|
* @param int $showaddress 0=no, 1=yes
|
||||||
* @param Translate $outputlangs Object lang for output
|
* @param Translate $outputlangs Object lang for output
|
||||||
* @return void
|
* @param Translate $outputlangsbis Object lang for output bis
|
||||||
|
* @param string $titlekey Translation key to show as title of document
|
||||||
|
* @return int Return topshift value
|
||||||
*/
|
*/
|
||||||
protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
|
protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs, $outputlangsbis = null, $titlekey = "Contract")
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
// phpcs:enable
|
||||||
|
global $conf, $langs, $hookmanager;
|
||||||
|
|
||||||
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
$ltrdirection = 'L';
|
||||||
|
if ($outputlangs->trans("DIRECTION") == 'rtl') {
|
||||||
|
$ltrdirection = 'R';
|
||||||
|
}
|
||||||
|
|
||||||
// Load traductions files required by page
|
// Load traductions files required by page
|
||||||
$outputlangs->loadLangs(array("main", "dict", "contract", "companies"));
|
$outputlangs->loadLangs(array("main", "dict", "contract", "companies"));
|
||||||
|
|
||||||
|
$default_font_size = pdf_getPDFFontSize($outputlangs);
|
||||||
|
|
||||||
pdf_pagehead($pdf, $outputlangs, $this->page_hauteur);
|
pdf_pagehead($pdf, $outputlangs, $this->page_hauteur);
|
||||||
|
|
||||||
//Affiche le filigrane brouillon - Print Draft Watermark
|
|
||||||
if ($object->statut == 0 && (!empty($conf->global->CONTRACT_DRAFT_WATERMARK))) {
|
|
||||||
pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', $conf->global->CONTRACT_DRAFT_WATERMARK);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Prepare next
|
|
||||||
$pdf->SetTextColor(0, 0, 60);
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
$pdf->SetFont('', 'B', $default_font_size + 3);
|
$pdf->SetFont('', 'B', $default_font_size + 3);
|
||||||
|
|
||||||
$posx = $this->page_largeur - $this->marge_droite - 100;
|
$w = 100;
|
||||||
|
|
||||||
$posy = $this->marge_haute;
|
$posy = $this->marge_haute;
|
||||||
|
$posx = $this->page_largeur - $this->marge_droite - $w;
|
||||||
|
|
||||||
$pdf->SetXY($this->marge_gauche, $posy);
|
$pdf->SetXY($this->marge_gauche, $posy);
|
||||||
|
|
||||||
// Logo
|
// Logo
|
||||||
$logo = $conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo;
|
if (empty($conf->global->PDF_DISABLE_MYCOMPANY_LOGO)) {
|
||||||
if ($this->emetteur->logo) {
|
if ($this->emetteur->logo) {
|
||||||
if (is_readable($logo)) {
|
$logodir = $conf->mycompany->dir_output;
|
||||||
$height = pdf_getHeightForLogo($logo);
|
if (!empty($conf->mycompany->multidir_output[$object->entity])) {
|
||||||
$pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto)
|
$logodir = $conf->mycompany->multidir_output[$object->entity];
|
||||||
|
}
|
||||||
|
if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) {
|
||||||
|
$logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small;
|
||||||
|
} else {
|
||||||
|
$logo = $logodir.'/logos/'.$this->emetteur->logo;
|
||||||
|
}
|
||||||
|
if (is_readable($logo)) {
|
||||||
|
$height = pdf_getHeightForLogo($logo);
|
||||||
|
$pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto)
|
||||||
|
} else {
|
||||||
|
$pdf->SetTextColor(200, 0, 0);
|
||||||
|
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||||
|
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L');
|
||||||
|
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$pdf->SetTextColor(200, 0, 0);
|
$text = $this->emetteur->name;
|
||||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
$pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, $ltrdirection);
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L');
|
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L');
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
$text = $this->emetteur->name;
|
|
||||||
$pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$pdf->SetFont('', 'B', $default_font_size + 3);
|
$pdf->SetFont('', 'B', $default_font_size + 3);
|
||||||
$pdf->SetXY($posx, $posy);
|
$pdf->SetXY($posx, $posy);
|
||||||
$pdf->SetTextColor(0, 0, 60);
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
$title = $outputlangs->transnoentities("ContractCard");
|
$title = $outputlangs->transnoentities($titlekey);
|
||||||
$pdf->MultiCell(100, 4, $title, '', 'R');
|
$title .= ' '.$outputlangs->convToOutputCharset($object->ref);
|
||||||
|
if ($object->statut == $object::STATUS_DRAFT) {
|
||||||
|
$pdf->SetTextColor(128, 0, 0);
|
||||||
|
$title .= ' - '.$outputlangs->transnoentities("NotValidated");
|
||||||
|
}
|
||||||
|
$pdf->MultiCell($w, 3, $title, '', 'R');
|
||||||
|
|
||||||
$pdf->SetFont('', 'B', $default_font_size + 2);
|
$pdf->SetFont('', 'B', $default_font_size);
|
||||||
|
|
||||||
|
/*
|
||||||
$posy += 5;
|
$posy += 5;
|
||||||
$pdf->SetXY($posx, $posy);
|
$pdf->SetXY($posx, $posy);
|
||||||
$pdf->SetTextColor(0, 0, 60);
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Ref")." : ".$outputlangs->convToOutputCharset($object->ref), '', 'R');
|
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Ref")." : ".$outputlangs->convToOutputCharset($object->ref), '', 'R');
|
||||||
|
*/
|
||||||
|
|
||||||
$posy += 1;
|
$posy += 3;
|
||||||
$pdf->SetFont('', '', $default_font_size);
|
$pdf->SetFont('', '', $default_font_size - 1);
|
||||||
|
|
||||||
$posy += 4;
|
$posy += 4;
|
||||||
$pdf->SetXY($posx, $posy);
|
$pdf->SetXY($posx, $posy);
|
||||||
$pdf->SetTextColor(0, 0, 60);
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("Date")." : ".dol_print_date($object->date_contrat, "day", false, $outputlangs, true), '', 'R');
|
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("Date")." : ".dol_print_date($object->date_contrat, "day", false, $outputlangs, true), '', 'R');
|
||||||
|
|
||||||
if (empty($conf->global->MAIN_PDF_HIDE_CUSTOMER_CODE) && $object->thirdparty->code_client) {
|
if (empty($conf->global->MAIN_PDF_HIDE_CUSTOMER_CODE) && $object->thirdparty->code_client) {
|
||||||
$posy += 4;
|
$posy += 4;
|
||||||
$pdf->SetXY($posx, $posy);
|
$pdf->SetXY($posx, $posy);
|
||||||
$pdf->SetTextColor(0, 0, 60);
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : ".$outputlangs->transnoentities($object->thirdparty->code_client), '', 'R');
|
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("CustomerCode")." : ".$outputlangs->transnoentities($object->thirdparty->code_client), '', 'R');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($showaddress) {
|
if ($showaddress) {
|
||||||
@ -700,6 +749,7 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$pdf->SetXY($posx, $posy);
|
$pdf->SetXY($posx, $posy);
|
||||||
$pdf->SetFillColor(230, 230, 230);
|
$pdf->SetFillColor(230, 230, 230);
|
||||||
$pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1);
|
$pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1);
|
||||||
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show sender name
|
// Show sender name
|
||||||
@ -707,13 +757,13 @@ class pdf_strato extends ModelePDFContract
|
|||||||
$pdf->SetXY($posx + 2, $posy + 3);
|
$pdf->SetXY($posx + 2, $posy + 3);
|
||||||
$pdf->SetTextColor(0, 0, 60);
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
$pdf->SetFont('', 'B', $default_font_size);
|
$pdf->SetFont('', 'B', $default_font_size);
|
||||||
$pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L');
|
$pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L');
|
||||||
$posy = $pdf->getY();
|
$posy = $pdf->getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show sender information
|
// Show sender information
|
||||||
$pdf->SetFont('', '', $default_font_size - 1);
|
|
||||||
$pdf->SetXY($posx + 2, $posy);
|
$pdf->SetXY($posx + 2, $posy);
|
||||||
|
$pdf->SetFont('', '', $default_font_size - 1);
|
||||||
$pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L');
|
$pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L');
|
||||||
|
|
||||||
|
|
||||||
@ -736,14 +786,16 @@ class pdf_strato extends ModelePDFContract
|
|||||||
|
|
||||||
$this->recipient->name = pdfBuildThirdpartyName($thirdparty, $outputlangs);
|
$this->recipient->name = pdfBuildThirdpartyName($thirdparty, $outputlangs);
|
||||||
|
|
||||||
$carac_client = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, (isset($object->contact) ? $object->contact : ''), $usecontact, 'target', $object);
|
$mode = 'target';
|
||||||
|
$carac_client = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, (isset($object->contact) ? $object->contact : ''), $usecontact, $mode, $object);
|
||||||
|
|
||||||
// Show recipient
|
// Show recipient
|
||||||
$widthrecbox = 100;
|
$widthrecbox = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 100;
|
||||||
if ($this->page_largeur < 210) {
|
if ($this->page_largeur < 210) {
|
||||||
$widthrecbox = 84; // To work with US executive format
|
$widthrecbox = 84; // To work with US executive format
|
||||||
}
|
}
|
||||||
$posy = 42;
|
$posy = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42;
|
||||||
|
$posy += $top_shift;
|
||||||
$posx = $this->page_largeur - $this->marge_droite - $widthrecbox;
|
$posx = $this->page_largeur - $this->marge_droite - $widthrecbox;
|
||||||
if (!empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) {
|
if (!empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) {
|
||||||
$posx = $this->marge_gauche;
|
$posx = $this->marge_gauche;
|
||||||
@ -761,15 +813,18 @@ class pdf_strato extends ModelePDFContract
|
|||||||
// Show recipient name
|
// Show recipient name
|
||||||
$pdf->SetXY($posx + 2, $posy + 3);
|
$pdf->SetXY($posx + 2, $posy + 3);
|
||||||
$pdf->SetFont('', 'B', $default_font_size);
|
$pdf->SetFont('', 'B', $default_font_size);
|
||||||
$pdf->MultiCell($widthrecbox, 4, $this->recipient->name, 0, 'L');
|
$pdf->MultiCell($widthrecbox, 4, $this->recipient->name, 0, $ltrdirection);
|
||||||
|
|
||||||
$posy = $pdf->getY();
|
$posy = $pdf->getY();
|
||||||
|
|
||||||
// Show recipient information
|
// Show recipient information
|
||||||
$pdf->SetFont('', '', $default_font_size - 1);
|
$pdf->SetFont('', '', $default_font_size - 1);
|
||||||
$pdf->SetXY($posx + 2, $posy);
|
$pdf->SetXY($posx + 2, $posy);
|
||||||
$pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L');
|
$pdf->MultiCell($widthrecbox, 4, $carac_client, 0, $ltrdirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$pdf->SetTextColor(0, 0, 0);
|
||||||
|
return $top_shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||||
@ -785,6 +840,6 @@ class pdf_strato extends ModelePDFContract
|
|||||||
protected function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
|
protected function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
|
||||||
{
|
{
|
||||||
$showdetails = getDolGlobalInt('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS', 0);
|
$showdetails = getDolGlobalInt('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS', 0);
|
||||||
return pdf_pagefoot($pdf, $outputlangs, 'CONTRACT_FREE_TEXT', $this->emetteur, $this->marge_basse, $this->marge_gauche, $this->page_hauteur, $object, $showdetails, $hidefreetext);
|
return pdf_pagefoot($pdf, $outputlangs, 'CONTRACT_FREE_TEXT', $this->emetteur, $this->marge_basse, $this->marge_gauche, $this->page_hauteur, $object, $showdetails, $hidefreetext, $this->page_largeur, $this->watermark);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -212,7 +212,7 @@ class modPartnership extends DolibarrModules
|
|||||||
|
|
||||||
// Dictionaries
|
// Dictionaries
|
||||||
$this->dictionaries=array(
|
$this->dictionaries=array(
|
||||||
'langs'=>'partnership@partnership',
|
'langs'=>'partnership',
|
||||||
// List of tables we want to see into dictonnary editor
|
// List of tables we want to see into dictonnary editor
|
||||||
'tabname'=>array("c_partnership_type"),
|
'tabname'=>array("c_partnership_type"),
|
||||||
// Label of tables
|
// Label of tables
|
||||||
@ -291,7 +291,7 @@ class modPartnership extends DolibarrModules
|
|||||||
// 'leftmenu'=>'partnership',
|
// 'leftmenu'=>'partnership',
|
||||||
// 'url'=>'/partnership/partnership_list.php',
|
// 'url'=>'/partnership/partnership_list.php',
|
||||||
// // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
// // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||||
// 'langs'=>'partnership@partnership',
|
// 'langs'=>'partnership',
|
||||||
// 'position'=>1100+$r,
|
// 'position'=>1100+$r,
|
||||||
// // Define condition to show or hide menu entry. Use '$conf->partnership->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
|
// // Define condition to show or hide menu entry. Use '$conf->partnership->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
|
||||||
// 'enabled'=>'$conf->partnership->enabled',
|
// 'enabled'=>'$conf->partnership->enabled',
|
||||||
@ -349,18 +349,18 @@ class modPartnership extends DolibarrModules
|
|||||||
$r = 1;
|
$r = 1;
|
||||||
/* BEGIN MODULEBUILDER EXPORT PARTNERSHIP */
|
/* BEGIN MODULEBUILDER EXPORT PARTNERSHIP */
|
||||||
/*
|
/*
|
||||||
$langs->load("partnership@partnership");
|
$langs->load("partnership");
|
||||||
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
||||||
$this->export_label[$r]='PartnershipLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
$this->export_label[$r]='PartnershipLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
||||||
$this->export_icon[$r]='partnership@partnership';
|
$this->export_icon[$r]='partnership';
|
||||||
// Define $this->export_fields_array, $this->export_TypeFields_array and $this->export_entities_array
|
// Define $this->export_fields_array, $this->export_TypeFields_array and $this->export_entities_array
|
||||||
$keyforclass = 'Partnership'; $keyforclassfile='/partnership/class/partnership.class.php'; $keyforelement='partnership@partnership';
|
$keyforclass = 'Partnership'; $keyforclassfile='/partnership/class/partnership.class.php'; $keyforelement='partnership';
|
||||||
include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
||||||
//$this->export_fields_array[$r]['t.fieldtoadd']='FieldToAdd'; $this->export_TypeFields_array[$r]['t.fieldtoadd']='Text';
|
//$this->export_fields_array[$r]['t.fieldtoadd']='FieldToAdd'; $this->export_TypeFields_array[$r]['t.fieldtoadd']='Text';
|
||||||
//unset($this->export_fields_array[$r]['t.fieldtoremove']);
|
//unset($this->export_fields_array[$r]['t.fieldtoremove']);
|
||||||
//$keyforclass = 'PartnershipLine'; $keyforclassfile='/partnership/class/partnership.class.php'; $keyforelement='partnershipline@partnership'; $keyforalias='tl';
|
//$keyforclass = 'PartnershipLine'; $keyforclassfile='/partnership/class/partnership.class.php'; $keyforelement='partnershipline@partnership'; $keyforalias='tl';
|
||||||
//include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
//include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
||||||
$keyforselect='partnership'; $keyforaliasextra='extra'; $keyforelement='partnership@partnership';
|
$keyforselect='partnership'; $keyforaliasextra='extra'; $keyforelement='partnership';
|
||||||
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
||||||
//$keyforselect='partnershipline'; $keyforaliasextra='extraline'; $keyforelement='partnershipline@partnership';
|
//$keyforselect='partnershipline'; $keyforaliasextra='extraline'; $keyforelement='partnershipline@partnership';
|
||||||
//include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
//include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
||||||
@ -380,13 +380,13 @@ class modPartnership extends DolibarrModules
|
|||||||
$r = 1;
|
$r = 1;
|
||||||
/* BEGIN MODULEBUILDER IMPORT PARTNERSHIP */
|
/* BEGIN MODULEBUILDER IMPORT PARTNERSHIP */
|
||||||
/*
|
/*
|
||||||
$langs->load("partnership@partnership");
|
$langs->load("partnership");
|
||||||
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
$this->export_code[$r]=$this->rights_class.'_'.$r;
|
||||||
$this->export_label[$r]='PartnershipLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
$this->export_label[$r]='PartnershipLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
|
||||||
$this->export_icon[$r]='partnership@partnership';
|
$this->export_icon[$r]='partnership';
|
||||||
$keyforclass = 'Partnership'; $keyforclassfile='/partnership/class/partnership.class.php'; $keyforelement='partnership@partnership';
|
$keyforclass = 'Partnership'; $keyforclassfile='/partnership/class/partnership.class.php'; $keyforelement='partnership';
|
||||||
include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php';
|
||||||
$keyforselect='partnership'; $keyforaliasextra='extra'; $keyforelement='partnership@partnership';
|
$keyforselect='partnership'; $keyforaliasextra='extra'; $keyforelement='partnership';
|
||||||
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
|
||||||
//$this->export_dependencies_array[$r]=array('mysubobject'=>'ts.rowid', 't.myfield'=>array('t.myfield2','t.myfield3')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields)
|
//$this->export_dependencies_array[$r]=array('mysubobject'=>'ts.rowid', 't.myfield'=>array('t.myfield2','t.myfield3')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields)
|
||||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||||
@ -417,11 +417,11 @@ class modPartnership extends DolibarrModules
|
|||||||
// Create extrafields during init
|
// Create extrafields during init
|
||||||
//include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
//include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
//$extrafields = new ExtraFields($this->db);
|
//$extrafields = new ExtraFields($this->db);
|
||||||
//$result1=$extrafields->addExtraField('partnership_myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty', 0, 0, '', '', 1, '', 0, 0, '', '', 'partnership@partnership', '$conf->partnership->enabled');
|
//$result1=$extrafields->addExtraField('partnership_myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty', 0, 0, '', '', 1, '', 0, 0, '', '', 'partnership', '$conf->partnership->enabled');
|
||||||
//$result2=$extrafields->addExtraField('partnership_myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project', 0, 0, '', '', 1, '', 0, 0, '', '', 'partnership@partnership', '$conf->partnership->enabled');
|
//$result2=$extrafields->addExtraField('partnership_myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project', 0, 0, '', '', 1, '', 0, 0, '', '', 'partnership', '$conf->partnership->enabled');
|
||||||
//$result3=$extrafields->addExtraField('partnership_myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'partnership@partnership', '$conf->partnership->enabled');
|
//$result3=$extrafields->addExtraField('partnership_myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'partnership', '$conf->partnership->enabled');
|
||||||
//$result4=$extrafields->addExtraField('partnership_myattr4', "New Attr 4 label", 'select', 1, 3, 'thirdparty', 0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1,'', 0, 0, '', '', 'partnership@partnership', '$conf->partnership->enabled');
|
//$result4=$extrafields->addExtraField('partnership_myattr4', "New Attr 4 label", 'select', 1, 3, 'thirdparty', 0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1,'', 0, 0, '', '', 'partnership', '$conf->partnership->enabled');
|
||||||
//$result5=$extrafields->addExtraField('partnership_myattr5', "New Attr 5 label", 'text', 1, 10, 'user', 0, 0, '', '', 1, '', 0, 0, '', '', 'partnership@partnership', '$conf->partnership->enabled');
|
//$result5=$extrafields->addExtraField('partnership_myattr5', "New Attr 5 label", 'text', 1, 10, 'user', 0, 0, '', '', 1, '', 0, 0, '', '', 'partnership', '$conf->partnership->enabled');
|
||||||
|
|
||||||
// Permissions
|
// Permissions
|
||||||
$this->remove($options);
|
$this->remove($options);
|
||||||
|
|||||||
@ -328,7 +328,7 @@ if ($action == 'presend') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$contactarr = array();
|
$contactarr = array();
|
||||||
$contactarr = $tmpobject->liste_contact(-1, 'external');
|
$contactarr = $tmpobject->liste_contact(-1, 'external', 0, '', 1);
|
||||||
|
|
||||||
if (is_array($contactarr) && count($contactarr) > 0) {
|
if (is_array($contactarr) && count($contactarr) > 0) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
||||||
|
|||||||
@ -75,7 +75,10 @@ class InterfaceWorkflowManager extends DolibarrTriggers
|
|||||||
if (isModEnabled('commande') && !empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER)) {
|
if (isModEnabled('commande') && !empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER)) {
|
||||||
$object->fetchObjectLinked();
|
$object->fetchObjectLinked();
|
||||||
if (!empty($object->linkedObjectsIds['commande'])) {
|
if (!empty($object->linkedObjectsIds['commande'])) {
|
||||||
setEventMessages($langs->trans("OrderExists"), null, 'warnings');
|
if (empty($object->context['closedfromonlinesignature'])) {
|
||||||
|
$langs->load("orders");
|
||||||
|
setEventMessages($langs->trans("OrderExists"), null, 'warnings');
|
||||||
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
} else {
|
} else {
|
||||||
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
||||||
|
|||||||
@ -992,6 +992,8 @@ class InterfaceActionsAuto extends DolibarrTriggers
|
|||||||
$object->trackid = 'sub'.$object->id;
|
$object->trackid = 'sub'.$object->id;
|
||||||
} elseif (preg_match('/^MEMBER_/', $action)) {
|
} elseif (preg_match('/^MEMBER_/', $action)) {
|
||||||
$object->trackid = 'mem'.$object->id;
|
$object->trackid = 'mem'.$object->id;
|
||||||
|
} elseif (preg_match('/^PARTNERSHIP_/', $action)) {
|
||||||
|
$object->trackid = 'pship'.$object->id;
|
||||||
} elseif (preg_match('/^PROJECT_/', $action)) {
|
} elseif (preg_match('/^PROJECT_/', $action)) {
|
||||||
$object->trackid = 'proj'.$object->id;
|
$object->trackid = 'proj'.$object->id;
|
||||||
} elseif (preg_match('/^TASK_/', $action)) {
|
} elseif (preg_match('/^TASK_/', $action)) {
|
||||||
@ -1090,7 +1092,7 @@ class InterfaceActionsAuto extends DolibarrTriggers
|
|||||||
$actioncomm->errors_to = empty($object->errors_to) ? null : $object->errors_to;
|
$actioncomm->errors_to = empty($object->errors_to) ? null : $object->errors_to;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Object linked (if link is for thirdparty, contact, project it is a recording error. We should not have links in link table
|
// Object linked (if link is for thirdparty, contact or project, it is a recording error. We should not have links in link table
|
||||||
// for such objects because there is already a dedicated field into table llx_actioncomm or llx_actioncomm_resources.
|
// for such objects because there is already a dedicated field into table llx_actioncomm or llx_actioncomm_resources.
|
||||||
if (!in_array($elementtype, array('societe', 'contact', 'project'))) {
|
if (!in_array($elementtype, array('societe', 'contact', 'project'))) {
|
||||||
$actioncomm->fk_element = $elementid;
|
$actioncomm->fk_element = $elementid;
|
||||||
|
|||||||
@ -45,7 +45,7 @@ class InterfaceNotification extends DolibarrTriggers
|
|||||||
|
|
||||||
$this->name = preg_replace('/^Interface/i', '', get_class($this));
|
$this->name = preg_replace('/^Interface/i', '', get_class($this));
|
||||||
$this->family = "notification";
|
$this->family = "notification";
|
||||||
$this->description = "Triggers of this module send email notifications according to Notification module setup.";
|
$this->description = "Triggers of this module send Email notifications according to Notification module setup.";
|
||||||
// 'development', 'experimental', 'dolibarr' or version
|
// 'development', 'experimental', 'dolibarr' or version
|
||||||
$this->version = self::VERSION_DOLIBARR;
|
$this->version = self::VERSION_DOLIBARR;
|
||||||
$this->picto = 'email';
|
$this->picto = 'email';
|
||||||
@ -70,6 +70,7 @@ class InterfaceNotification extends DolibarrTriggers
|
|||||||
return 0; // Module not active, we do nothing
|
return 0; // Module not active, we do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the trigger code is not managed by the Notification module
|
||||||
if (!in_array($action, $this->listofmanagedevents)) {
|
if (!in_array($action, $this->listofmanagedevents)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -112,7 +113,7 @@ class InterfaceNotification extends DolibarrTriggers
|
|||||||
$ret = array();
|
$ret = array();
|
||||||
|
|
||||||
|
|
||||||
$sql = "SELECT rowid, code, label, description, elementtype";
|
$sql = "SELECT rowid, code, contexts, label, description, elementtype";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_action_trigger";
|
$sql .= " FROM ".MAIN_DB_PREFIX."c_action_trigger";
|
||||||
$sql .= $this->db->order("rang, elementtype, code");
|
$sql .= $this->db->order("rang, elementtype, code");
|
||||||
|
|
||||||
@ -153,7 +154,7 @@ class InterfaceNotification extends DolibarrTriggers
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($qualified) {
|
if ($qualified) {
|
||||||
$ret[] = array('rowid'=>$obj->rowid, 'code'=>$obj->code, 'label'=>$obj->label, 'description'=>$obj->description, 'elementtype'=>$obj->elementtype);
|
$ret[] = array('rowid'=>$obj->rowid, 'code'=>$obj->code, 'contexts'=>$obj->contexts, 'label'=>$obj->label, 'description'=>$obj->description, 'elementtype'=>$obj->elementtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
|
|||||||
@ -107,20 +107,58 @@ if (!defined('USEDOLIBARRSERVER') && !defined('USEDOLIBARREDITOR')) {
|
|||||||
// X-XSS-Protection
|
// X-XSS-Protection
|
||||||
//header("X-XSS-Protection: 1"); // XSS filtering protection of some browsers (note: use of Content-Security-Policy is more efficient). Disabled as deprecated.
|
//header("X-XSS-Protection: 1"); // XSS filtering protection of some browsers (note: use of Content-Security-Policy is more efficient). Disabled as deprecated.
|
||||||
|
|
||||||
// Content-Security-Policy
|
// Content-Security-Policy-Report-Only
|
||||||
if (!defined('WEBSITE_MAIN_SECURITY_FORCECSP')) {
|
if (!defined('WEBSITE_MAIN_SECURITY_FORCECSPRO')) {
|
||||||
// The constant WEBSITE_MAIN_SECURITY_FORCECSP should never be defined by page, but the variable used just after may be
|
|
||||||
|
|
||||||
// A default security policy that keep usage of js external component like ckeditor, stripe, google, working
|
// A default security policy that keep usage of js external component like ckeditor, stripe, google, working
|
||||||
// $contentsecuritypolicy = "font-src *; img-src *; style-src * 'unsafe-inline' 'unsafe-eval'; default-src 'self' *.stripe.com 'unsafe-inline' 'unsafe-eval'; script-src 'self' *.stripe.com 'unsafe-inline' 'unsafe-eval'; frame-ancestors 'self'; frame-src 'self' *.stripe.com; connect-src 'self';";
|
// For example: to restrict to only local resources, except for css (cloudflare+google), and js (transifex + google tags) and object/iframe (youtube)
|
||||||
$contentsecuritypolicy = getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCECSP');
|
// default-src 'self'; style-src: https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src: https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src: *;
|
||||||
|
// For example, to restrict everything to itself except img that can be on other servers:
|
||||||
|
// default-src 'self'; img-src *;
|
||||||
|
// Pre-existing site that uses too much js code to fix but wants to ensure resources are loaded only over https and disable plugins:
|
||||||
|
// default-src https: 'unsafe-inline' 'unsafe-eval'; object-src 'none'
|
||||||
|
//
|
||||||
|
// $contentsecuritypolicy = "frame-ancestors 'self'; img-src * data:; font-src *; default-src 'self' 'unsafe-inline' 'unsafe-eval' *.paypal.com *.stripe.com *.google.com *.googleapis.com *.google-analytics.com *.googletagmanager.com;";
|
||||||
|
// $contentsecuritypolicy = "frame-ancestors 'self'; img-src * data:; font-src *; default-src *; script-src 'self' 'unsafe-inline' *.paypal.com *.stripe.com *.google.com *.googleapis.com *.google-analytics.com *.googletagmanager.com; style-src 'self' 'unsafe-inline'; connect-src 'self';";
|
||||||
|
$contentsecuritypolicy = getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCECSPRO');
|
||||||
|
|
||||||
if (!is_object($hookmanager)) {
|
if (!is_object($hookmanager)) {
|
||||||
$hookmanager = new HookManager($db);
|
$hookmanager = new HookManager($db);
|
||||||
}
|
}
|
||||||
$hookmanager->initHooks(array("main"));
|
$hookmanager->initHooks(array("main"));
|
||||||
|
|
||||||
$parameters = array('contentsecuritypolicy'=>$contentsecuritypolicy);
|
$parameters = array('contentsecuritypolicy'=>$contentsecuritypolicy, 'mode'=>'reportonly');
|
||||||
|
$result = $hookmanager->executeHooks('setContentSecurityPolicy', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||||
|
if ($result > 0) {
|
||||||
|
$contentsecuritypolicy = $hookmanager->resPrint; // Replace CSP
|
||||||
|
} else {
|
||||||
|
$contentsecuritypolicy .= $hookmanager->resPrint; // Concat CSP
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($contentsecuritypolicy)) {
|
||||||
|
header("Content-Security-Policy-Report-Only: ".$contentsecuritypolicy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Content-Security-Policy
|
||||||
|
if (!defined('WEBSITE_MAIN_SECURITY_FORCECSP')) {
|
||||||
|
// A default security policy that keep usage of js external component like ckeditor, stripe, google, working
|
||||||
|
// For example: to restrict to only local resources, except for css (cloudflare+google), and js (transifex + google tags) and object/iframe (youtube)
|
||||||
|
// default-src 'self'; style-src: https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src: https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src: *;
|
||||||
|
// For example, to restrict everything to itself except img that can be on other servers:
|
||||||
|
// default-src 'self'; img-src *;
|
||||||
|
// Pre-existing site that uses too much js code to fix but wants to ensure resources are loaded only over https and disable plugins:
|
||||||
|
// default-src https: 'unsafe-inline' 'unsafe-eval'; object-src 'none'
|
||||||
|
//
|
||||||
|
// $contentsecuritypolicy = "frame-ancestors 'self'; img-src * data:; font-src *; default-src 'self' 'unsafe-inline' 'unsafe-eval' *.paypal.com *.stripe.com *.google.com *.googleapis.com *.google-analytics.com *.googletagmanager.com;";
|
||||||
|
// $contentsecuritypolicy = "frame-ancestors 'self'; img-src * data:; font-src *; default-src *; script-src 'self' 'unsafe-inline' *.paypal.com *.stripe.com *.google.com *.googleapis.com *.google-analytics.com *.googletagmanager.com; style-src 'self' 'unsafe-inline'; connect-src 'self';";
|
||||||
|
$contentsecuritypolicy = getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCECSP');
|
||||||
|
|
||||||
|
if (!is_object($hookmanager)) {
|
||||||
|
$hookmanager = new HookManager($db);
|
||||||
|
}
|
||||||
|
$hookmanager->initHooks(array("main"));
|
||||||
|
|
||||||
|
$parameters = array('contentsecuritypolicy'=>$contentsecuritypolicy, 'mode'=>'active');
|
||||||
$result = $hookmanager->executeHooks('setContentSecurityPolicy', $parameters); // Note that $action and $object may have been modified by some hooks
|
$result = $hookmanager->executeHooks('setContentSecurityPolicy', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
$contentsecuritypolicy = $hookmanager->resPrint; // Replace CSP
|
$contentsecuritypolicy = $hookmanager->resPrint; // Replace CSP
|
||||||
@ -129,12 +167,6 @@ if (!defined('USEDOLIBARRSERVER') && !defined('USEDOLIBARREDITOR')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($contentsecuritypolicy)) {
|
if (!empty($contentsecuritypolicy)) {
|
||||||
// For example: to restrict to only local resources, except for css (cloudflare+google), and js (transifex + google tags) and object/iframe (youtube)
|
|
||||||
// default-src 'self'; style-src: https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src: https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src: *;
|
|
||||||
// For example, to restrict everything to itself except img that can be on other servers:
|
|
||||||
// default-src 'self'; img-src *;
|
|
||||||
// Pre-existing site that uses too much js code to fix but wants to ensure resources are loaded only over https and disable plugins:
|
|
||||||
// default-src https: 'unsafe-inline' 'unsafe-eval'; object-src 'none'
|
|
||||||
header("Content-Security-Policy: ".$contentsecuritypolicy);
|
header("Content-Security-Policy: ".$contentsecuritypolicy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1171,7 +1171,7 @@ class Don extends CommonObject
|
|||||||
$return .= '<br><span class="opacitymedium" >'.$langs->trans("Amount").'</span> : <span class="info-box-label amount">'.price($this->amount).'</span>';
|
$return .= '<br><span class="opacitymedium" >'.$langs->trans("Amount").'</span> : <span class="info-box-label amount">'.price($this->amount).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'LibStatut')) {
|
if (method_exists($this, 'LibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->LibStatut($this->labelStatus, 5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
* Copyright (C) 2016-2021 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2016-2021 Ferran Marcet <fmarcet@2byte.es>
|
||||||
* Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
|
* Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||||
* Copyright (C) 2020 Thibault FOUCART <support@ptibogxiv.net>
|
* Copyright (C) 2020 Thibault FOUCART <support@ptibogxiv.net>
|
||||||
|
* Copyright (C) 2023 Christophe Battarel <christophe@altairis.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -72,7 +73,6 @@ $search_datedelivery_end = dol_mktime(23, 59, 59, GETPOST('search_datedelivery_e
|
|||||||
$search_datereceipt_start = dol_mktime(0, 0, 0, GETPOST('search_datereceipt_startmonth', 'int'), GETPOST('search_datereceipt_startday', 'int'), GETPOST('search_datereceipt_startyear', 'int'));
|
$search_datereceipt_start = dol_mktime(0, 0, 0, GETPOST('search_datereceipt_startmonth', 'int'), GETPOST('search_datereceipt_startday', 'int'), GETPOST('search_datereceipt_startyear', 'int'));
|
||||||
$search_datereceipt_end = dol_mktime(23, 59, 59, GETPOST('search_datereceipt_endmonth', 'int'), GETPOST('search_datereceipt_endday', 'int'), GETPOST('search_datereceipt_endyear', 'int'));
|
$search_datereceipt_end = dol_mktime(23, 59, 59, GETPOST('search_datereceipt_endmonth', 'int'), GETPOST('search_datereceipt_endday', 'int'), GETPOST('search_datereceipt_endyear', 'int'));
|
||||||
$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'));
|
$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'));
|
||||||
$socid = GETPOST('socid', 'int');
|
|
||||||
$search_user = GETPOST('search_user', 'int');
|
$search_user = GETPOST('search_user', 'int');
|
||||||
$search_sale = GETPOST('search_sale', 'int');
|
$search_sale = GETPOST('search_sale', 'int');
|
||||||
$search_categ_cus = GETPOST("search_categ_cus", 'int');
|
$search_categ_cus = GETPOST("search_categ_cus", 'int');
|
||||||
|
|||||||
@ -2793,7 +2793,7 @@ class ExpenseReport extends CommonObject
|
|||||||
$return .= '<span class="info-box-label">'.dol_print_date($this->date_fin, 'day').'</span>';
|
$return .= '<span class="info-box-label">'.dol_print_date($this->date_fin, 'day').'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -744,7 +744,7 @@ class PaymentExpenseReport extends CommonObject
|
|||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="info-box-label amount">'.price($this->amount).'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("Amount").'</span> : <span class="info-box-label amount">'.price($this->amount).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -1503,7 +1503,7 @@ class Fichinter extends CommonObject
|
|||||||
$return .= '<br><span class="info-box-label ">'.$langs->trans("Duration").' : '.convertSecondToTime($this->duration, 'allhourmin').'</span>';
|
$return .= '<br><span class="info-box-label ">'.$langs->trans("Duration").' : '.convertSecondToTime($this->duration, 'allhourmin').'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -3648,7 +3648,7 @@ class CommandeFournisseur extends CommonOrder
|
|||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("Billed").' : </span><span class="info-box-label">'.yn($this->billed).'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("Billed").' : </span><span class="info-box-label">'.yn($this->billed).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -3307,7 +3307,7 @@ class FactureFournisseur extends CommonInvoice
|
|||||||
$return .= '<br><span class="opacitymedium">'.$langs->trans("AmountHT").'</span> : <span class="info-box-label amount">'.price($this->total_ht).'</span>';
|
$return .= '<br><span class="opacitymedium">'.$langs->trans("AmountHT").'</span> : <span class="info-box-label amount">'.price($this->total_ht).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -2493,7 +2493,7 @@ class Holiday extends CommonObject
|
|||||||
$return .= '<span class="info-box-label">'.dol_print_date($this->date_fin, 'day').'</span>';
|
$return .= '<span class="info-box-label">'.dol_print_date($this->date_fin, 'day').'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -1084,7 +1084,7 @@ class Evaluation extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</span>';
|
$return .= '</span>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -333,7 +333,7 @@ class TCPDI extends FPDF_TPL {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($tpl['x'] != 0 || $tpl['y'] != 0) {
|
} elseif (!empty($tpl['x']) || !empty($tpl['y'])) {
|
||||||
$tx = -$tpl['x'] * 2;
|
$tx = -$tpl['x'] * 2;
|
||||||
$ty = $tpl['y'] * 2;
|
$ty = $tpl['y'] * 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -162,7 +162,7 @@ if ($rss) {
|
|||||||
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
||||||
|
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
if (dol_move($outputfiletmp, $outputfile, 0, 1)) {
|
if (dol_move($outputfiletmp, $outputfile, 0, 1, 0, 0)) {
|
||||||
$result = 1;
|
$result = 1;
|
||||||
} else {
|
} else {
|
||||||
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
||||||
|
|||||||
@ -162,7 +162,7 @@ if ($rss) {
|
|||||||
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
||||||
|
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
if (dol_move($outputfiletmp, $outputfile, 0, 1)) {
|
if (dol_move($outputfiletmp, $outputfile, 0, 1, 0, 0)) {
|
||||||
$result = 1;
|
$result = 1;
|
||||||
} else {
|
} else {
|
||||||
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
||||||
|
|||||||
@ -162,7 +162,7 @@ if ($rss) {
|
|||||||
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
||||||
|
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
if (dol_move($outputfiletmp, $outputfile, 0, 1)) {
|
if (dol_move($outputfiletmp, $outputfile, 0, 1, 0, 0)) {
|
||||||
$result = 1;
|
$result = 1;
|
||||||
} else {
|
} else {
|
||||||
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
||||||
|
|||||||
@ -162,7 +162,7 @@ if ($rss) {
|
|||||||
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
||||||
|
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
if (dol_move($outputfiletmp, $outputfile, 0, 1)) {
|
if (dol_move($outputfiletmp, $outputfile, 0, 1, 0, 0)) {
|
||||||
$result = 1;
|
$result = 1;
|
||||||
} else {
|
} else {
|
||||||
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
||||||
|
|||||||
@ -162,7 +162,7 @@ if ($rss) {
|
|||||||
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
||||||
|
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
if (dol_move($outputfiletmp, $outputfile, 0, 1)) {
|
if (dol_move($outputfiletmp, $outputfile, 0, 1, 0, 0)) {
|
||||||
$result = 1;
|
$result = 1;
|
||||||
} else {
|
} else {
|
||||||
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
||||||
|
|||||||
@ -143,7 +143,7 @@ if ($rss) {
|
|||||||
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
$result = build_rssfile($format, $title, $desc, $eventarray, $outputfiletmp, '', $website->virtualhost.'/wrapper.php?rss=1'.($l ? '&l='.$l : ''), $l);
|
||||||
|
|
||||||
if ($result >= 0) {
|
if ($result >= 0) {
|
||||||
if (dol_move($outputfiletmp, $outputfile, 0, 1)) $result = 1;
|
if (dol_move($outputfiletmp, $outputfile, 0, 1, 0, 0)) $result = 1;
|
||||||
else {
|
else {
|
||||||
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
$error = 'Failed to rename '.$outputfiletmp.' into '.$outputfile;
|
||||||
dol_syslog("build_exportfile ".$error, LOG_ERR);
|
dol_syslog("build_exportfile ".$error, LOG_ERR);
|
||||||
|
|||||||
@ -43,9 +43,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
|
|||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_MODIFY','Customer proposal modified','Executed when a customer proposal is modified','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_MODIFY','Customer proposal modified','Executed when a customer proposal is modified','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_SENTBYMAIL','Commercial proposal sent by mail','Executed when a commercial proposal is sent by mail','propal',3);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_SENTBYMAIL','Commercial proposal sent by mail','Executed when a commercial proposal is sent by mail','propal',3);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_SIGNED','Customer proposal closed signed','Executed when a customer proposal is closed signed','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_SIGNED','Customer proposal closed signed','Executed when a customer proposal is closed signed','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_SIGNED_WEB','Customer proposal closed signed on portal','Executed when a customer proposal is closed signed on portal','propal',2);
|
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_REFUSED_WEB','Customer proposal closed refused on portal','Executed when a customer proposal is closed refused on portal','propal',2);
|
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_DELETE','Customer proposal deleted','Executed when a customer proposal is deleted','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_DELETE','Customer proposal deleted','Executed when a customer proposal is deleted','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_VALIDATE','Customer order validate','Executed when a customer order is validated','commande',4);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_VALIDATE','Customer order validate','Executed when a customer order is validated','commande',4);
|
||||||
@ -153,6 +151,8 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
|
|||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_MODIFY','Contact address update','Executed when a contact is updated','contact',51);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_MODIFY','Contact address update','Executed when a contact is updated','contact',51);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_SENTBYMAIL','Mails sent from third party card','Executed when you send email from contact address record','contact',52);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_SENTBYMAIL','Mails sent from third party card','Executed when you send email from contact address record','contact',52);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_DELETE','Contact address deleted','Executed when a contact is deleted','contact',53);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTACT_DELETE','Contact address deleted','Executed when a contact is deleted','contact',53);
|
||||||
|
|
||||||
|
-- recruitment module
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('RECRUITMENTJOBPOSITION_CREATE','Job created','Executed when a job is created','recruitment',7500);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('RECRUITMENTJOBPOSITION_CREATE','Job created','Executed when a job is created','recruitment',7500);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('RECRUITMENTJOBPOSITION_MODIFY','Job modified','Executed when a job is modified','recruitment',7502);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('RECRUITMENTJOBPOSITION_MODIFY','Job modified','Executed when a job is modified','recruitment',7502);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('RECRUITMENTJOBPOSITION_SENTBYMAIL','Mails sent from job record','Executed when you send email from job record','recruitment',7504);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('RECRUITMENTJOBPOSITION_SENTBYMAIL','Mails sent from job record','Executed when you send email from job record','recruitment',7504);
|
||||||
@ -181,3 +181,10 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
|
|||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_MODIFY','Template invoices update','Executed when a Template invoices is updated','facturerec',901);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_MODIFY','Template invoices update','Executed when a Template invoices is updated','facturerec',901);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_DELETE','Template invoices deleted','Executed when a Template invoices is deleted','facturerec',902);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_DELETE','Template invoices deleted','Executed when a Template invoices is deleted','facturerec',902);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_AUTOCREATEBILL','Template invoices use to create invoices with auto batch','Executed when a Template invoices is use to create invoice with auto batch','facturerec',903);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILLREC_AUTOCREATEBILL','Template invoices use to create invoices with auto batch','Executed when a Template invoices is use to create invoice with auto batch','facturerec',903);
|
||||||
|
|
||||||
|
-- partnership module
|
||||||
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PARTNERSHIP_CREATE','Partnership created','Executed when a partnership is created','partnership',58000);
|
||||||
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PARTNERSHIP_MODIFY','Partnership modified','Executed when a partnership is modified','partnership',58002);
|
||||||
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PARTNERSHIP_SENTBYMAIL','Mails sent from partnership file','Executed when you send email from partnership file','partnership',58004);
|
||||||
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PARTNERSHIP_DELETE','Partnership deleted','Executed when a partnership is deleted','partnership',58006);
|
||||||
|
|
||||||
|
|||||||
@ -64,6 +64,7 @@ ALTER TABLE llx_actioncomm ADD INDEX idx_actioncomm_percent (percent);
|
|||||||
|
|
||||||
UPDATE llx_c_paiement SET code = 'BANCON' WHERE code = 'BAN' AND libelle = 'Bancontact';
|
UPDATE llx_c_paiement SET code = 'BANCON' WHERE code = 'BAN' AND libelle = 'Bancontact';
|
||||||
|
|
||||||
|
ALTER TABLE llx_partnership DROP FOREIGN KEY llx_partnership_fk_user_creat;
|
||||||
-- VMYSQL4.3 ALTER TABLE llx_partnership MODIFY COLUMN fk_user_creat integer NULL;
|
-- VMYSQL4.3 ALTER TABLE llx_partnership MODIFY COLUMN fk_user_creat integer NULL;
|
||||||
-- VPGSQL8.2 ALTER TABLE llx_partnership ALTER COLUMN fk_user_creat DROP NOT NULL;
|
-- VPGSQL8.2 ALTER TABLE llx_partnership ALTER COLUMN fk_user_creat DROP NOT NULL;
|
||||||
|
|
||||||
@ -241,9 +242,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
|
|||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_MODIFY','Customer proposal modified','Executed when a customer proposal is modified','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_MODIFY','Customer proposal modified','Executed when a customer proposal is modified','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_SENTBYMAIL','Commercial proposal sent by mail','Executed when a commercial proposal is sent by mail','propal',3);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_SENTBYMAIL','Commercial proposal sent by mail','Executed when a commercial proposal is sent by mail','propal',3);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_SIGNED','Customer proposal closed signed','Executed when a customer proposal is closed signed','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_SIGNED','Customer proposal closed signed','Executed when a customer proposal is closed signed','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_SIGNED_WEB','Customer proposal closed signed on portal','Executed when a customer proposal is closed signed on portal','propal',2);
|
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_REFUSED_WEB','Customer proposal closed refused on portal','Executed when a customer proposal is closed refused on portal','propal',2);
|
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_DELETE','Customer proposal deleted','Executed when a customer proposal is deleted','propal',2);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_DELETE','Customer proposal deleted','Executed when a customer proposal is deleted','propal',2);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_VALIDATE','Customer order validate','Executed when a customer order is validated','commande',4);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_VALIDATE','Customer order validate','Executed when a customer order is validated','commande',4);
|
||||||
|
|||||||
@ -45,6 +45,12 @@ ALTER TABLE llx_facture_fourn_det MODIFY COLUMN ref varchar(128);
|
|||||||
|
|
||||||
-- v18
|
-- v18
|
||||||
|
|
||||||
|
ALTER TABLE llx_notify_def ADD COLUMN email varchar(255);
|
||||||
|
ALTER TABLE llx_notify_def ADD COLUMN threshold double(24,8);
|
||||||
|
ALTER TABLE llx_notify_def ADD COLUMN context varchar(128);
|
||||||
|
|
||||||
|
ALTER TABLE llx_c_action_trigger ADD COLUMN contexts varchar(255) NULL;
|
||||||
|
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROJECT_CLOSE','Project closed','Executed when a project is closed','project',145);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROJECT_CLOSE','Project closed','Executed when a project is closed','project',145);
|
||||||
|
|
||||||
-- amount was removed in v12
|
-- amount was removed in v12
|
||||||
@ -73,6 +79,7 @@ ALTER TABLE llx_bank_account ADD COLUMN owner_zip varchar(25);
|
|||||||
ALTER TABLE llx_bank_account ADD COLUMN owner_town varchar(50);
|
ALTER TABLE llx_bank_account ADD COLUMN owner_town varchar(50);
|
||||||
ALTER TABLE llx_bank_account ADD COLUMN owner_country_id integer DEFAULT NULL;
|
ALTER TABLE llx_bank_account ADD COLUMN owner_country_id integer DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE llx_prelevement_bons ADD COLUMN fk_bank_account integer DEFAULT NULL;
|
||||||
|
|
||||||
ALTER TABLE llx_supplier_proposal ADD UNIQUE INDEX uk_supplier_proposal_ref (ref, entity);
|
ALTER TABLE llx_supplier_proposal ADD UNIQUE INDEX uk_supplier_proposal_ref (ref, entity);
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,7 @@ create table llx_c_action_trigger
|
|||||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||||
elementtype varchar(64) NOT NULL,
|
elementtype varchar(64) NOT NULL,
|
||||||
code varchar(128) NOT NULL,
|
code varchar(128) NOT NULL,
|
||||||
|
contexts varchar(255) NULL, -- list of possible contexts when ther is different context of trigger
|
||||||
label varchar(128) NOT NULL,
|
label varchar(128) NOT NULL,
|
||||||
description varchar(255),
|
description varchar(255),
|
||||||
rang integer DEFAULT 0
|
rang integer DEFAULT 0
|
||||||
|
|||||||
@ -27,5 +27,8 @@ create table llx_notify_def
|
|||||||
fk_soc integer,
|
fk_soc integer,
|
||||||
fk_contact integer,
|
fk_contact integer,
|
||||||
fk_user integer,
|
fk_user integer,
|
||||||
|
email varchar(255), -- for fixed email notif
|
||||||
|
threshold double(24,8), -- threshold on an amount to qualify the notification
|
||||||
|
context varchar(128), -- only for a particular contet
|
||||||
type varchar(16) DEFAULT 'email' -- 'browser', 'email', 'sms', 'webservice', ...
|
type varchar(16) DEFAULT 'email' -- 'browser', 'email', 'sms', 'webservice', ...
|
||||||
)ENGINE=innodb;
|
)ENGINE=innodb;
|
||||||
|
|||||||
@ -20,24 +20,25 @@
|
|||||||
--
|
--
|
||||||
-- Direct debit or credit orders
|
-- Direct debit or credit orders
|
||||||
--
|
--
|
||||||
|
-- statut 0 : draft
|
||||||
-- statut 1 : sent to the bank
|
-- statut 1 : sent to the bank
|
||||||
-- statut 2 : paid
|
-- statut 2 : paid
|
||||||
--
|
--
|
||||||
create table llx_prelevement_bons
|
create table llx_prelevement_bons
|
||||||
(
|
(
|
||||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||||
type varchar(16) DEFAULT 'debit-order', -- 'debit-order' or 'bank-transfer'
|
type varchar(16) DEFAULT 'debit-order', -- 'debit-order' or 'bank-transfer'
|
||||||
ref varchar(12), -- reference
|
ref varchar(12), -- reference
|
||||||
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
||||||
datec datetime, -- date de creation
|
datec datetime, -- date de creation
|
||||||
amount double(24,8) DEFAULT 0, -- montant total du prelevement
|
amount double(24,8) DEFAULT 0, -- montant total du prelevement
|
||||||
statut smallint DEFAULT 0, -- statut
|
statut smallint DEFAULT 0, -- statut
|
||||||
credite smallint DEFAULT 0, -- indique si le prelevement a ete credite
|
credite smallint DEFAULT 0, -- indique si le prelevement a ete credite
|
||||||
note text,
|
note text,
|
||||||
date_trans datetime, -- date de transmission a la banque
|
date_trans datetime, -- date de transmission a la banque
|
||||||
method_trans smallint, -- methode de transmission
|
method_trans smallint, -- methode de transmission
|
||||||
fk_user_trans integer, -- user qui a effectue la transmission
|
fk_user_trans integer, -- user qui a effectue la transmission
|
||||||
date_credit datetime, -- date de credit sur le compte
|
date_credit datetime, -- date de credit sur le compte
|
||||||
fk_user_credit integer -- user qui a remonte l'info de credit
|
fk_user_credit integer, -- user qui a remonte l'info de credit
|
||||||
|
fk_bank_account integer DEFAULT NULL
|
||||||
)ENGINE=innodb;
|
)ENGINE=innodb;
|
||||||
|
|||||||
@ -1145,7 +1145,7 @@ class KnowledgeRecord extends CommonObject
|
|||||||
$return .= '<span class="info-box-label">'.dolGetFirstLineOfText($this->question).'</span>';
|
$return .= '<span class="info-box-label">'.dolGetFirstLineOfText($this->question).'</span>';
|
||||||
}
|
}
|
||||||
if (method_exists($this, 'getLibStatut')) {
|
if (method_exists($this, 'getLibStatut')) {
|
||||||
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(5).'</div>';
|
$return .= '<br><div class="info-box-status margintoponly">'.$this->getLibStatut(3).'</div>';
|
||||||
}
|
}
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
$return .= '</div>';
|
$return .= '</div>';
|
||||||
|
|||||||
@ -167,9 +167,9 @@ ACCOUNTANCY_COMBO_FOR_AUX=تمكين قائمة التحرير والسرد لل
|
|||||||
ACCOUNTING_DATE_START_BINDING=تحديد موعد لبدء الربط والتحويل في المحاسبة. بعد هذا التاريخ ، لن يتم تحويل المعاملات إلى المحاسبة.
|
ACCOUNTING_DATE_START_BINDING=تحديد موعد لبدء الربط والتحويل في المحاسبة. بعد هذا التاريخ ، لن يتم تحويل المعاملات إلى المحاسبة.
|
||||||
ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=في تحويل المحاسبة ، ما هي الفترة المحددة افتراضيا
|
ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=في تحويل المحاسبة ، ما هي الفترة المحددة افتراضيا
|
||||||
|
|
||||||
ACCOUNTING_SELL_JOURNAL=المبيعات في اليومية العامة (المبيعات و المرتجعات)
|
ACCOUNTING_SELL_JOURNAL=Sales journal - sales and returns
|
||||||
ACCOUNTING_PURCHASE_JOURNAL=المشتريات في اليومية العامة (المشتريات و المرتجعات)
|
ACCOUNTING_PURCHASE_JOURNAL=Purchase journal - purchase and returns
|
||||||
ACCOUNTING_BANK_JOURNAL=النقدي اليومية ( المقبوضات و المدفوعات)
|
ACCOUNTING_BANK_JOURNAL=Cash journal - receipts and disbursements
|
||||||
ACCOUNTING_EXPENSEREPORT_JOURNAL=دفتر تقرير المصروف اليومي
|
ACCOUNTING_EXPENSEREPORT_JOURNAL=دفتر تقرير المصروف اليومي
|
||||||
ACCOUNTING_MISCELLANEOUS_JOURNAL=اليومية العامة
|
ACCOUNTING_MISCELLANEOUS_JOURNAL=اليومية العامة
|
||||||
ACCOUNTING_HAS_NEW_JOURNAL=له دفتر يوميات جديد
|
ACCOUNTING_HAS_NEW_JOURNAL=له دفتر يوميات جديد
|
||||||
@ -238,6 +238,7 @@ ConfirmDeleteMvt=سيؤدي هذا إلى حذف جميع سطور المحاس
|
|||||||
ConfirmDeleteMvtPartial=سيؤدي هذا إلى حذف المعاملة من المحاسبة (سيتم حذف جميع الأسطر المتعلقة بنفس المعاملة)
|
ConfirmDeleteMvtPartial=سيؤدي هذا إلى حذف المعاملة من المحاسبة (سيتم حذف جميع الأسطر المتعلقة بنفس المعاملة)
|
||||||
FinanceJournal=دفتر المالية اليومي
|
FinanceJournal=دفتر المالية اليومي
|
||||||
ExpenseReportsJournal=دفتر تقارير المصاريف
|
ExpenseReportsJournal=دفتر تقارير المصاريف
|
||||||
|
InventoryJournal=المخزون في اليومية
|
||||||
DescFinanceJournal=دفتر المالية اليومي المتضمن لجميع الدفعات عن طريق الحساب المصرفي
|
DescFinanceJournal=دفتر المالية اليومي المتضمن لجميع الدفعات عن طريق الحساب المصرفي
|
||||||
DescJournalOnlyBindedVisible=هذه طريقة عرض للسجل مرتبطة بالحساب ويمكن تسجيلها في دفتر اليوميات و الأستاذ.
|
DescJournalOnlyBindedVisible=هذه طريقة عرض للسجل مرتبطة بالحساب ويمكن تسجيلها في دفتر اليوميات و الأستاذ.
|
||||||
VATAccountNotDefined=حساب ضريبة القيمة المضافة غير محدد
|
VATAccountNotDefined=حساب ضريبة القيمة المضافة غير محدد
|
||||||
|
|||||||
@ -145,6 +145,7 @@ Box=بريمج
|
|||||||
Boxes=بريمجات
|
Boxes=بريمجات
|
||||||
MaxNbOfLinesForBoxes=الحد الأعلى لعدد أسطر البريمجات
|
MaxNbOfLinesForBoxes=الحد الأعلى لعدد أسطر البريمجات
|
||||||
AllWidgetsWereEnabled=جميع البريمجات المتاحة ممكنة
|
AllWidgetsWereEnabled=جميع البريمجات المتاحة ممكنة
|
||||||
|
WidgetAvailable=Widget available
|
||||||
PositionByDefault=الطلبية الإفتراضية
|
PositionByDefault=الطلبية الإفتراضية
|
||||||
Position=الوضع
|
Position=الوضع
|
||||||
MenusDesc=يقوم مديرو القائمة بتعيين محتوى شريطي القائمة (الأفقي والعمودي).
|
MenusDesc=يقوم مديرو القائمة بتعيين محتوى شريطي القائمة (الأفقي والعمودي).
|
||||||
@ -374,7 +375,7 @@ DoTestSendHTML=اختبار ارسال هتمل
|
|||||||
ErrorCantUseRazIfNoYearInMask=خطأ، لا يمكن استخدام الخيار @ لإعادة تعيين عداد سنويا إذا تسلسل {} أو {yyyy إنهاء س س س س} ليس في قناع.
|
ErrorCantUseRazIfNoYearInMask=خطأ، لا يمكن استخدام الخيار @ لإعادة تعيين عداد سنويا إذا تسلسل {} أو {yyyy إنهاء س س س س} ليس في قناع.
|
||||||
ErrorCantUseRazInStartedYearIfNoYearMonthInMask=خطأ ، لا يمكن للمستخدم الخيار في حال تسلسل @ (ذ ذ م م)) ((سنة أو ملم)) (لا تخفي.
|
ErrorCantUseRazInStartedYearIfNoYearMonthInMask=خطأ ، لا يمكن للمستخدم الخيار في حال تسلسل @ (ذ ذ م م)) ((سنة أو ملم)) (لا تخفي.
|
||||||
UMask=معلمة جديدة UMask صورة يونيكس / لينكس / بي إس دي نظام الملفات.
|
UMask=معلمة جديدة UMask صورة يونيكس / لينكس / بي إس دي نظام الملفات.
|
||||||
UMaskExplanation=تسمح لك هذه المعلمة لتحديد الاذونات التي حددها تقصير من الملفات التي أنشأتها Dolibarr على الخادم (خلال تحميلها على سبيل المثال). <br> يجب أن يكون ثمانية القيمة (على سبيل المثال ، 0666 وسائل القراءة والكتابة للجميع). <br> م شمال شرق paramètre سرت sous الامم المتحدة لتقييم الأداء ويندوز serveur.
|
UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).<br>It must be the octal value (for example, 0666 means read and write for everyone.). Recommended value is 0600 or 0660<br>This parameter is useless on a Windows server.
|
||||||
SeeWikiForAllTeam=قم بإلقاء نظرة على صفحة Wiki للحصول على قائمة بالمساهمين ومنظمتهم
|
SeeWikiForAllTeam=قم بإلقاء نظرة على صفحة Wiki للحصول على قائمة بالمساهمين ومنظمتهم
|
||||||
UseACacheDelay= التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ)
|
UseACacheDelay= التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ)
|
||||||
DisableLinkToHelpCenter=إخفاء الارتباط "<b> بحاجة إلى مساعدة أو دعم </b>" في صفحة تسجيل الدخول
|
DisableLinkToHelpCenter=إخفاء الارتباط "<b> بحاجة إلى مساعدة أو دعم </b>" في صفحة تسجيل الدخول
|
||||||
@ -663,7 +664,7 @@ Module2900Desc=GeoIP التحويلات Maxmind القدرات
|
|||||||
Module3200Name=المحفوظات غير القابلة للتغيير
|
Module3200Name=المحفوظات غير القابلة للتغيير
|
||||||
Module3200Desc=تمكين سجل غير قابل للتغيير لأحداث العمل. يتم أرشفة الأحداث في الوقت الحقيقي. السجل هو جدول للقراءة فقط للأحداث المتسلسلة التي يمكن تصديرها. قد تكون هذه الوحدة إلزامية لبعض البلدان.
|
Module3200Desc=تمكين سجل غير قابل للتغيير لأحداث العمل. يتم أرشفة الأحداث في الوقت الحقيقي. السجل هو جدول للقراءة فقط للأحداث المتسلسلة التي يمكن تصديرها. قد تكون هذه الوحدة إلزامية لبعض البلدان.
|
||||||
Module3300Name=Module Builder
|
Module3300Name=Module Builder
|
||||||
Module3200Desc=تمكين سجل غير قابل للتغيير لأحداث العمل. يتم أرشفة الأحداث في الوقت الحقيقي. السجل هو جدول للقراءة فقط للأحداث المتسلسلة التي يمكن تصديرها. قد تكون هذه الوحدة إلزامية لبعض البلدان.
|
Module3300Desc=A RAD (Rapid Application Development - low-code and no-code) tool to help developers or advanced users to build their own module/application.
|
||||||
Module3400Name=الشبكات الاجتماعية
|
Module3400Name=الشبكات الاجتماعية
|
||||||
Module3400Desc=قم بتمكين حقول الشبكات الاجتماعية في عناوين وعناوين الأطراف الثالثة (سكايب ، تويتر ، فيسبوك ، ...).
|
Module3400Desc=قم بتمكين حقول الشبكات الاجتماعية في عناوين وعناوين الأطراف الثالثة (سكايب ، تويتر ، فيسبوك ، ...).
|
||||||
Module4000Name=HRM
|
Module4000Name=HRM
|
||||||
@ -2299,7 +2300,7 @@ ExportUseLowMemoryMode=استخدم وضع ذاكرة منخفضة
|
|||||||
ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors.
|
ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors.
|
||||||
|
|
||||||
ModuleWebhookName = الويب هوك
|
ModuleWebhookName = الويب هوك
|
||||||
ModuleWebhookDesc = واجهة للقبض على مشغلات dolibarr وإرسالها إلى عنوان URL
|
ModuleWebhookDesc = Interface to catch dolibarr triggers and send data of the event to an URL
|
||||||
WebhookSetup = إعداد Webhook
|
WebhookSetup = إعداد Webhook
|
||||||
Settings = الإعدادات
|
Settings = الإعدادات
|
||||||
WebhookSetupPage = صفحة إعداد Webhook
|
WebhookSetupPage = صفحة إعداد Webhook
|
||||||
@ -2372,3 +2373,6 @@ WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set
|
|||||||
WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation.
|
WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation.
|
||||||
EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails.
|
EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails.
|
||||||
MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated).
|
MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated).
|
||||||
|
MAIN_CHECKBOX_LEFT_COLUMN=Show the column for field and line selection on the left (on the right by default)
|
||||||
|
|
||||||
|
CSSPage=CSS Style
|
||||||
|
|||||||
@ -50,7 +50,7 @@ UseDateWithoutHourOnFichinter=يخفي الساعات والدقائق خارج
|
|||||||
InterventionStatistics=إحصائيات التدخلات
|
InterventionStatistics=إحصائيات التدخلات
|
||||||
NbOfinterventions=عدد بطاقات التدخل
|
NbOfinterventions=عدد بطاقات التدخل
|
||||||
NumberOfInterventionsByMonth=عدد بطاقات التدخل بالشهر (تاريخ المصادقة)
|
NumberOfInterventionsByMonth=عدد بطاقات التدخل بالشهر (تاريخ المصادقة)
|
||||||
AmountOfInteventionNotIncludedByDefault=لا يتم تضمين مقدار التدخل بشكل افتراضي في الربح (في معظم الحالات ، يتم استخدام الجداول الزمنية لحساب الوقت المنقضي). أضف الخيار PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT إلى 1 في المنزل-الإعداد الآخر لتضمينها.
|
AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). You can use PROJECT_ELEMENTS_FOR_ADD_MARGIN and PROJECT_ELEMENTS_FOR_MINUS_MARGIN option into home-setup-other to complete list of element included into profit.
|
||||||
InterId=تدخل معرف
|
InterId=تدخل معرف
|
||||||
InterRef=تدخل المرجع.
|
InterRef=تدخل المرجع.
|
||||||
InterDateCreation=تدخل تاريخ الإنشاء
|
InterDateCreation=تدخل تاريخ الإنشاء
|
||||||
|
|||||||
@ -91,7 +91,7 @@ MailingModuleDescContactsByFunction=Contacts by position
|
|||||||
MailingModuleDescEmailsFromFile=رسائل البريد الإلكتروني من الملف
|
MailingModuleDescEmailsFromFile=رسائل البريد الإلكتروني من الملف
|
||||||
MailingModuleDescEmailsFromUser=إدخال رسائل البريد الإلكتروني من قبل المستخدم
|
MailingModuleDescEmailsFromUser=إدخال رسائل البريد الإلكتروني من قبل المستخدم
|
||||||
MailingModuleDescDolibarrUsers=المستخدمون الذين لديهم رسائل بريد إلكتروني
|
MailingModuleDescDolibarrUsers=المستخدمون الذين لديهم رسائل بريد إلكتروني
|
||||||
MailingModuleDescThirdPartiesByCategories=الأطراف الثالثة (حسب الفئات)
|
MailingModuleDescThirdPartiesByCategories=أطراف ثالثة
|
||||||
SendingFromWebInterfaceIsNotAllowed=الإرسال من واجهة الويب غير مسموح به.
|
SendingFromWebInterfaceIsNotAllowed=الإرسال من واجهة الويب غير مسموح به.
|
||||||
EmailCollectorFilterDesc=يجب أن تتطابق جميع المرشحات حتى يتم جمع بريد إلكتروني
|
EmailCollectorFilterDesc=يجب أن تتطابق جميع المرشحات حتى يتم جمع بريد إلكتروني
|
||||||
|
|
||||||
@ -179,3 +179,4 @@ RecordCreatedByEmailCollector=السجل الذي تم إنشاؤه بواسطة
|
|||||||
DefaultBlacklistMailingStatus=القيمة الافتراضية للحقل "%s" عند تكوين جهة اتصال جديدة
|
DefaultBlacklistMailingStatus=القيمة الافتراضية للحقل "%s" عند تكوين جهة اتصال جديدة
|
||||||
DefaultStatusEmptyMandatory=فارغ ولكنه إلزامي
|
DefaultStatusEmptyMandatory=فارغ ولكنه إلزامي
|
||||||
WarningLimitSendByDay=تحذير: إعداد أو عقد المثيل الخاص بك يحد من عدد رسائل البريد الإلكتروني يوميًا إلى <b> %s </b>. قد تؤدي محاولة إرسال المزيد إلى إبطاء المثيل أو تعليقه. يرجى الاتصال بالدعم الخاص بك إذا كنت بحاجة إلى حصة أعلى.
|
WarningLimitSendByDay=تحذير: إعداد أو عقد المثيل الخاص بك يحد من عدد رسائل البريد الإلكتروني يوميًا إلى <b> %s </b>. قد تؤدي محاولة إرسال المزيد إلى إبطاء المثيل أو تعليقه. يرجى الاتصال بالدعم الخاص بك إذا كنت بحاجة إلى حصة أعلى.
|
||||||
|
NoMoreRecipientToSendTo=No more recipient to send the email to
|
||||||
|
|||||||
@ -186,7 +186,7 @@ CreatedBy=تم الإنشاء بواسطة
|
|||||||
NewTicket=تذكرة جديدة
|
NewTicket=تذكرة جديدة
|
||||||
SubjectAnswerToTicket=إجابة التذكرة
|
SubjectAnswerToTicket=إجابة التذكرة
|
||||||
TicketTypeRequest=نوع الطلب
|
TicketTypeRequest=نوع الطلب
|
||||||
TicketCategory=تصنيف التذكرة
|
TicketCategory=Ticket group
|
||||||
SeeTicket=عرض التذكرة
|
SeeTicket=عرض التذكرة
|
||||||
TicketMarkedAsRead=تم تحديد التذكرة كمقروءة
|
TicketMarkedAsRead=تم تحديد التذكرة كمقروءة
|
||||||
TicketReadOn=تمت القراءة في
|
TicketReadOn=تمت القراءة في
|
||||||
|
|||||||
@ -145,6 +145,7 @@ Box=Джаджа
|
|||||||
Boxes=Джаджи
|
Boxes=Джаджи
|
||||||
MaxNbOfLinesForBoxes=Максимален брой редове за джаджи
|
MaxNbOfLinesForBoxes=Максимален брой редове за джаджи
|
||||||
AllWidgetsWereEnabled=Всички налични джаджи са активирани
|
AllWidgetsWereEnabled=Всички налични джаджи са активирани
|
||||||
|
WidgetAvailable=Widget available
|
||||||
PositionByDefault=Позиция по подразбиране
|
PositionByDefault=Позиция по подразбиране
|
||||||
Position=Позиция
|
Position=Позиция
|
||||||
MenusDesc=Меню мениджърите определят съдържанието на двете ленти с менюта (хоризонтална и вертикална).
|
MenusDesc=Меню мениджърите определят съдържанието на двете ленти с менюта (хоризонтална и вертикална).
|
||||||
@ -374,7 +375,7 @@ DoTestSendHTML=Тестово изпращане на HTML
|
|||||||
ErrorCantUseRazIfNoYearInMask=Грешка, не може да се използва опция @, за да нулирате брояча всяка година, ако последователността {yy} или {yyyy} не е в маската.
|
ErrorCantUseRazIfNoYearInMask=Грешка, не може да се използва опция @, за да нулирате брояча всяка година, ако последователността {yy} или {yyyy} не е в маската.
|
||||||
ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Грешка, не може да се използва опция @, ако последователността {yy}{mm} или {yyyy}{mm} не са в маската.
|
ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Грешка, не може да се използва опция @, ако последователността {yy}{mm} или {yyyy}{mm} не са в маската.
|
||||||
UMask=UMask параметър за нови файлове на Unix / Linux / BSD / Mac файлова система.
|
UMask=UMask параметър за нови файлове на Unix / Linux / BSD / Mac файлова система.
|
||||||
UMaskExplanation=Този параметър ви позволява да дефинирате права, зададени по подразбиране на файлове, които са създадени от Dolibarr на сървъра (например при качване). <br> Необходимо е да бъде в осмична стойност (например 0666 означава четене и запис за всички). <br> Този параметър е безполезен на Windows сървър.
|
UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).<br>It must be the octal value (for example, 0666 means read and write for everyone.). Recommended value is 0600 or 0660<br>This parameter is useless on a Windows server.
|
||||||
SeeWikiForAllTeam=Разгледайте страницата на Wiki за списък на сътрудниците и тяхната организация
|
SeeWikiForAllTeam=Разгледайте страницата на Wiki за списък на сътрудниците и тяхната организация
|
||||||
UseACacheDelay= Забавяне при кеширане на отговора за експорт в секунди (0 или празно, за да не се използва кеш)
|
UseACacheDelay= Забавяне при кеширане на отговора за експорт в секунди (0 или празно, за да не се използва кеш)
|
||||||
DisableLinkToHelpCenter=Hide the link "<b>Need help or support</b>" on the login page
|
DisableLinkToHelpCenter=Hide the link "<b>Need help or support</b>" on the login page
|
||||||
@ -663,7 +664,7 @@ Module2900Desc=GeoIP Maxmind възможности за преобразува
|
|||||||
Module3200Name=Неизменими архиви
|
Module3200Name=Неизменими архиви
|
||||||
Module3200Desc=Непроменлив дневник на бизнес събития. Събитията се архивират в реално време. Дневникът е таблица, достъпна единствено за четене, която съдържа последователни събития, които могат да бъдат експортирани. Този модул може да е задължителен за някои страни.
|
Module3200Desc=Непроменлив дневник на бизнес събития. Събитията се архивират в реално време. Дневникът е таблица, достъпна единствено за четене, която съдържа последователни събития, които могат да бъдат експортирани. Този модул може да е задължителен за някои страни.
|
||||||
Module3300Name=Module Builder
|
Module3300Name=Module Builder
|
||||||
Module3200Desc=Непроменлив дневник на бизнес събития. Събитията се архивират в реално време. Дневникът е таблица, достъпна единствено за четене, която съдържа последователни събития, които могат да бъдат експортирани. Този модул може да е задължителен за някои страни.
|
Module3300Desc=A RAD (Rapid Application Development - low-code and no-code) tool to help developers or advanced users to build their own module/application.
|
||||||
Module3400Name=Социални мрежи
|
Module3400Name=Социални мрежи
|
||||||
Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...).
|
Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...).
|
||||||
Module4000Name=ЧР
|
Module4000Name=ЧР
|
||||||
@ -2299,7 +2300,7 @@ ExportUseLowMemoryMode=Use a low memory mode
|
|||||||
ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors.
|
ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors.
|
||||||
|
|
||||||
ModuleWebhookName = Webhook
|
ModuleWebhookName = Webhook
|
||||||
ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL
|
ModuleWebhookDesc = Interface to catch dolibarr triggers and send data of the event to an URL
|
||||||
WebhookSetup = Webhook setup
|
WebhookSetup = Webhook setup
|
||||||
Settings = Настройки
|
Settings = Настройки
|
||||||
WebhookSetupPage = Webhook setup page
|
WebhookSetupPage = Webhook setup page
|
||||||
@ -2372,3 +2373,6 @@ WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set
|
|||||||
WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation.
|
WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation.
|
||||||
EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails.
|
EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails.
|
||||||
MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated).
|
MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated).
|
||||||
|
MAIN_CHECKBOX_LEFT_COLUMN=Show the column for field and line selection on the left (on the right by default)
|
||||||
|
|
||||||
|
CSSPage=CSS Style
|
||||||
|
|||||||
@ -50,7 +50,7 @@ UseDateWithoutHourOnFichinter=Скриване на часовете и мину
|
|||||||
InterventionStatistics=Статистика на интервенции
|
InterventionStatistics=Статистика на интервенции
|
||||||
NbOfinterventions=Брой интервенции
|
NbOfinterventions=Брой интервенции
|
||||||
NumberOfInterventionsByMonth=Брой интервенции по месец (по дата на валидиране)
|
NumberOfInterventionsByMonth=Брой интервенции по месец (по дата на валидиране)
|
||||||
AmountOfInteventionNotIncludedByDefault=Общата продължителност на интервенцията не е включена по подразбиране в печалбата (в повечето случаи за отчитане на времето се използват графиците за отделно време). Добавете опцията PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT със стойност 1 в Начало -> Настройки -> Други настройки, за да я включите.
|
AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). You can use PROJECT_ELEMENTS_FOR_ADD_MARGIN and PROJECT_ELEMENTS_FOR_MINUS_MARGIN option into home-setup-other to complete list of element included into profit.
|
||||||
InterId=Идентификатор на интервенция
|
InterId=Идентификатор на интервенция
|
||||||
InterRef=Съгласно интервенция №
|
InterRef=Съгласно интервенция №
|
||||||
InterDateCreation=Дата на създаване на интервенцията
|
InterDateCreation=Дата на създаване на интервенцията
|
||||||
@ -66,3 +66,7 @@ RepeatableIntervention=Шаблон на интервенция
|
|||||||
ToCreateAPredefinedIntervention=За да създадете предварително определена или повтаряща се интервенция, създайте интервенция и я превърнете в шаблон за интервенция.
|
ToCreateAPredefinedIntervention=За да създадете предварително определена или повтаряща се интервенция, създайте интервенция и я превърнете в шаблон за интервенция.
|
||||||
ConfirmReopenIntervention=Are you sure you want to open back the intervention <b>%s</b>?
|
ConfirmReopenIntervention=Are you sure you want to open back the intervention <b>%s</b>?
|
||||||
GenerateInter=Generate intervention
|
GenerateInter=Generate intervention
|
||||||
|
FichinterNoContractLinked=Intervention %s has been created without a linked contract.
|
||||||
|
ErrorFicheinterCompanyDoesNotExist=Company does not exist. Intervention has not been created.
|
||||||
|
NextDateToIntervention=Date for next intervention generation
|
||||||
|
NoIntervention=No intervention
|
||||||
|
|||||||
@ -91,7 +91,7 @@ MailingModuleDescContactsByFunction=Контакти с длъжност
|
|||||||
MailingModuleDescEmailsFromFile=Имейли от файл
|
MailingModuleDescEmailsFromFile=Имейли от файл
|
||||||
MailingModuleDescEmailsFromUser=Имейли, въведени от потребител
|
MailingModuleDescEmailsFromUser=Имейли, въведени от потребител
|
||||||
MailingModuleDescDolibarrUsers=Потребители с имейли
|
MailingModuleDescDolibarrUsers=Потребители с имейли
|
||||||
MailingModuleDescThirdPartiesByCategories=Контрагенти (с категории)
|
MailingModuleDescThirdPartiesByCategories=Контрагенти
|
||||||
SendingFromWebInterfaceIsNotAllowed=Изпращането от уеб интерфейса не е позволено.
|
SendingFromWebInterfaceIsNotAllowed=Изпращането от уеб интерфейса не е позволено.
|
||||||
EmailCollectorFilterDesc=All filters must match to have an email being collected
|
EmailCollectorFilterDesc=All filters must match to have an email being collected
|
||||||
|
|
||||||
@ -179,3 +179,4 @@ RecordCreatedByEmailCollector=Record created by the Email Collector %s from emai
|
|||||||
DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact
|
DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact
|
||||||
DefaultStatusEmptyMandatory=Empty but mandatory
|
DefaultStatusEmptyMandatory=Empty but mandatory
|
||||||
WarningLimitSendByDay=WARNING: The setup or contract of your instance limits your number of emails per day to <b>%s</b>. Trying to send more may result in having your instance slow down or suspended. Please contact your support if you need a higher quota.
|
WarningLimitSendByDay=WARNING: The setup or contract of your instance limits your number of emails per day to <b>%s</b>. Trying to send more may result in having your instance slow down or suspended. Please contact your support if you need a higher quota.
|
||||||
|
NoMoreRecipientToSendTo=No more recipient to send the email to
|
||||||
|
|||||||
@ -91,7 +91,7 @@ MailingModuleDescContactsByFunction=Contacts by position
|
|||||||
MailingModuleDescEmailsFromFile=Emails from file
|
MailingModuleDescEmailsFromFile=Emails from file
|
||||||
MailingModuleDescEmailsFromUser=Emails input by user
|
MailingModuleDescEmailsFromUser=Emails input by user
|
||||||
MailingModuleDescDolibarrUsers=Users with Emails
|
MailingModuleDescDolibarrUsers=Users with Emails
|
||||||
MailingModuleDescThirdPartiesByCategories=Third parties (by categories)
|
MailingModuleDescThirdPartiesByCategories=Subjekti
|
||||||
SendingFromWebInterfaceIsNotAllowed=Sending from web interface is not allowed.
|
SendingFromWebInterfaceIsNotAllowed=Sending from web interface is not allowed.
|
||||||
EmailCollectorFilterDesc=All filters must match to have an email being collected
|
EmailCollectorFilterDesc=All filters must match to have an email being collected
|
||||||
|
|
||||||
@ -179,3 +179,4 @@ RecordCreatedByEmailCollector=Record created by the Email Collector %s from emai
|
|||||||
DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact
|
DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact
|
||||||
DefaultStatusEmptyMandatory=Empty but mandatory
|
DefaultStatusEmptyMandatory=Empty but mandatory
|
||||||
WarningLimitSendByDay=WARNING: The setup or contract of your instance limits your number of emails per day to <b>%s</b>. Trying to send more may result in having your instance slow down or suspended. Please contact your support if you need a higher quota.
|
WarningLimitSendByDay=WARNING: The setup or contract of your instance limits your number of emails per day to <b>%s</b>. Trying to send more may result in having your instance slow down or suspended. Please contact your support if you need a higher quota.
|
||||||
|
NoMoreRecipientToSendTo=No more recipient to send the email to
|
||||||
|
|||||||
@ -95,13 +95,13 @@ ChangeAndLoad=Canviar i carregar
|
|||||||
Addanaccount=Afegir un compte comptable
|
Addanaccount=Afegir un compte comptable
|
||||||
AccountAccounting=Compte comptable
|
AccountAccounting=Compte comptable
|
||||||
AccountAccountingShort=Compte
|
AccountAccountingShort=Compte
|
||||||
SubledgerAccount=Subcompte comptable
|
SubledgerAccount=Compte de subllibre
|
||||||
SubledgerAccountLabel=Nom del compte del llibre major
|
SubledgerAccountLabel=Nom del compte de subllibre
|
||||||
ShowAccountingAccount=Mostrar diari de comptes
|
ShowAccountingAccount=Mostrar diari de comptes
|
||||||
ShowAccountingJournal=Mostrar diari comptable
|
ShowAccountingJournal=Mostrar diari comptable
|
||||||
ShowAccountingAccountInLedger=Mostra el compte comptable al Llibre major
|
ShowAccountingAccountInLedger=Mostra el compte comptable al Llibre major
|
||||||
ShowAccountingAccountInJournals=Mostra el compte comptable als diaris
|
ShowAccountingAccountInJournals=Mostra el compte comptable als diaris
|
||||||
DataUsedToSuggestAccount=Data used to suggest account
|
DataUsedToSuggestAccount=Dades utilitzades per a suggerir un compte
|
||||||
AccountAccountingSuggest=Compte suggerit
|
AccountAccountingSuggest=Compte suggerit
|
||||||
MenuDefaultAccounts=Comptes per defecte
|
MenuDefaultAccounts=Comptes per defecte
|
||||||
MenuBankAccounts=Comptes bancaris
|
MenuBankAccounts=Comptes bancaris
|
||||||
@ -125,7 +125,7 @@ UpdateMvts=Modificació d'una transacció
|
|||||||
ValidTransaction=Valida l'assentament
|
ValidTransaction=Valida l'assentament
|
||||||
WriteBookKeeping=Registrar transaccions en comptabilitat
|
WriteBookKeeping=Registrar transaccions en comptabilitat
|
||||||
Bookkeeping=Llibre major
|
Bookkeeping=Llibre major
|
||||||
BookkeepingSubAccount=Subcompte
|
BookkeepingSubAccount=Subquadern
|
||||||
AccountBalance=Compte saldo
|
AccountBalance=Compte saldo
|
||||||
AccountBalanceSubAccount=Saldo de subcomptes
|
AccountBalanceSubAccount=Saldo de subcomptes
|
||||||
ObjectsRef=Referència de l'objecte origen
|
ObjectsRef=Referència de l'objecte origen
|
||||||
@ -167,9 +167,9 @@ ACCOUNTANCY_COMBO_FOR_AUX=Activa la llista combinada per a un compte subsidiari
|
|||||||
ACCOUNTING_DATE_START_BINDING=Definiu una data per a començar la vinculació i transferència a la comptabilitat. Per sota d’aquesta data, les transaccions no es transferiran a la comptabilitat.
|
ACCOUNTING_DATE_START_BINDING=Definiu una data per a començar la vinculació i transferència a la comptabilitat. Per sota d’aquesta data, les transaccions no es transferiran a la comptabilitat.
|
||||||
ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=En la transferència comptable, quin és el període seleccionat per defecte
|
ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=En la transferència comptable, quin és el període seleccionat per defecte
|
||||||
|
|
||||||
ACCOUNTING_SELL_JOURNAL=Diari de vendes (vendes i devolucions)
|
ACCOUNTING_SELL_JOURNAL=Diari de vendes: vendes i devolucions
|
||||||
ACCOUNTING_PURCHASE_JOURNAL=Diari de compres (compres i devolucions)
|
ACCOUNTING_PURCHASE_JOURNAL=Diari de compres: compres i devolucions
|
||||||
ACCOUNTING_BANK_JOURNAL=Diari d'efectiu (entrades i desemborsaments)
|
ACCOUNTING_BANK_JOURNAL=Diari d'efectiu: rebuts i desemborsaments
|
||||||
ACCOUNTING_EXPENSEREPORT_JOURNAL=Diari de l'informe de despeses
|
ACCOUNTING_EXPENSEREPORT_JOURNAL=Diari de l'informe de despeses
|
||||||
ACCOUNTING_MISCELLANEOUS_JOURNAL=Diari general
|
ACCOUNTING_MISCELLANEOUS_JOURNAL=Diari general
|
||||||
ACCOUNTING_HAS_NEW_JOURNAL=Té un nou Diari
|
ACCOUNTING_HAS_NEW_JOURNAL=Té un nou Diari
|
||||||
@ -185,27 +185,27 @@ TransitionalAccount=Compte de transferència bancària transitòria
|
|||||||
|
|
||||||
ACCOUNTING_ACCOUNT_SUSPENSE=Compte (del pla comptable) que s'utilitzarà com a compte per als fons no assignats, ja siguin rebuts o pagats, és a dir, fons en "espera"
|
ACCOUNTING_ACCOUNT_SUSPENSE=Compte (del pla comptable) que s'utilitzarà com a compte per als fons no assignats, ja siguin rebuts o pagats, és a dir, fons en "espera"
|
||||||
DONATION_ACCOUNTINGACCOUNT=Compte (del pla comptable) que s'utilitzarà per a registrar donacions (mòdul de donacions)
|
DONATION_ACCOUNTINGACCOUNT=Compte (del pla comptable) que s'utilitzarà per a registrar donacions (mòdul de donacions)
|
||||||
ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Account (from the Chart Of Account) to be used to register memberships subscriptions (Membership module - if membership recorded without invoice)
|
ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Compte (del pla comptable) que s'utilitzarà per a registrar les subscripcions de socis (mòdul d'afiliació - si l'afiliació es registra sense factura)
|
||||||
|
|
||||||
ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be used as the default account to register customer deposit
|
ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per registrar el dipòsit del client
|
||||||
UseAuxiliaryAccountOnCustomerDeposit=Emmagatzema el compte del client com a compte individual al llibre major subsidiari per a les línies de pagament inicial (si està desactivat, el compte individual per a les línies de pagament inicial romandrà buit)
|
UseAuxiliaryAccountOnCustomerDeposit=Emmagatzema el compte del client com a compte individual al llibre major subsidiari per a les línies de pagament inicial (si està desactivat, el compte individual per a les línies de pagament inicial romandrà buit)
|
||||||
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be used as the default
|
ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Compte (del pla comptable) que s'utilitzarà com a predeterminat
|
||||||
UseAuxiliaryAccountOnSupplierDeposit=Emmagatzema el compte del proveïdor com a compte individual al llibre major subsidiari per a les línies de pagament inicial (si està desactivat, el compte individual de les línies de pagament inicial romandrà buit)
|
UseAuxiliaryAccountOnSupplierDeposit=Emmagatzema el compte del proveïdor com a compte individual al llibre major subsidiari per a les línies de pagament inicial (si està desactivat, el compte individual de les línies de pagament inicial romandrà buit)
|
||||||
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty
|
ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Compte comptable per defecte per a registrar la garantia retinguda del client
|
||||||
|
|
||||||
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes comprats al mateix país (utilitzat si no està definit a la fitxa del producte)
|
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes comprats al mateix país (utilitzat si no està definit a la fitxa del producte)
|
||||||
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet)
|
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes comprats des de la CEE a un altre país de la CEE (utilitzat si no està definit a la fitxa del producte)
|
||||||
ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased and imported from any other foreign country (used if not defined in the product sheet)
|
ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes comprats i importats de qualsevol altre país estranger (utilitzat si no està definit a la fitxa del producte)
|
||||||
ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes venuts (utilitzat si no està definit a la fitxa del producte)
|
ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes venuts (utilitzat si no està definit a la fitxa del producte)
|
||||||
ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products sold from EEC to another EEC country (used if not defined in the product sheet)
|
ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes venuts des de la CEE a un altre país de la CEE (utilitzat si no està definit a la fitxa del producte)
|
||||||
ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products sold and exported to any other foreign country (used if not defined in the product sheet)
|
ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes venuts i exportats a qualsevol altre país estranger (utilitzat si no està definit a la fitxa del producte)
|
||||||
|
|
||||||
ACCOUNTING_SERVICE_BUY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis adquirits al mateix país (utilitzat si no està definit al full de servei)
|
ACCOUNTING_SERVICE_BUY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis adquirits al mateix país (utilitzat si no està definit al full de servei)
|
||||||
ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services purchased from EEC to another EEC country (used if not defined in the service sheet)
|
ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis adquirits de la CEE a un altre país de la CEE (utilitzat si no està definit al full de servei)
|
||||||
ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services purchased and imported from other foreign country (used if not defined in the service sheet)
|
ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis comprats i importats d'un altre país estranger (utilitzat si no està definit al full de servei)
|
||||||
ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis venuts (utilitzat si no està definit al full de servei)
|
ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis venuts (utilitzat si no està definit al full de servei)
|
||||||
ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services sold from EEC to another EEC country (used if not defined in the service sheet)
|
ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis venuts des de la CEE a un altre país de la CEE (utilitzat si no està definit al full de servei)
|
||||||
ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services sold and exported to any other foreign country (used if not defined in the service sheet)
|
ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis venuts i exportats a qualsevol altre país estranger (utilitzat si no està definit al full de servei)
|
||||||
|
|
||||||
Doctype=Tipus de document
|
Doctype=Tipus de document
|
||||||
Docdate=Data
|
Docdate=Data
|
||||||
@ -223,7 +223,7 @@ TransactionNumShort=Número de transacció
|
|||||||
AccountingCategory=Grup de comptes personalitzat
|
AccountingCategory=Grup de comptes personalitzat
|
||||||
AccountingCategories=Grups de comptes personalitzats
|
AccountingCategories=Grups de comptes personalitzats
|
||||||
GroupByAccountAccounting=Agrupa per compte major
|
GroupByAccountAccounting=Agrupa per compte major
|
||||||
GroupBySubAccountAccounting=Agrupa per subcompte comptable
|
GroupBySubAccountAccounting=Agrupa per compte del subllibre
|
||||||
AccountingAccountGroupsDesc=Podeu definir aquí alguns grups de comptes comptables. S'utilitzaran per a informes comptables personalitzats.
|
AccountingAccountGroupsDesc=Podeu definir aquí alguns grups de comptes comptables. S'utilitzaran per a informes comptables personalitzats.
|
||||||
ByAccounts=Per comptes
|
ByAccounts=Per comptes
|
||||||
ByPredefinedAccountGroups=Per grups predefinits
|
ByPredefinedAccountGroups=Per grups predefinits
|
||||||
@ -238,6 +238,7 @@ ConfirmDeleteMvt=Això suprimirà totes les línies de comptabilitat per a l'any
|
|||||||
ConfirmDeleteMvtPartial=Això suprimirà la transacció de la comptabilitat (se suprimiran totes les línies relacionades amb la mateixa transacció)
|
ConfirmDeleteMvtPartial=Això suprimirà la transacció de la comptabilitat (se suprimiran totes les línies relacionades amb la mateixa transacció)
|
||||||
FinanceJournal=Diari de finances
|
FinanceJournal=Diari de finances
|
||||||
ExpenseReportsJournal=Informe-diari de despeses
|
ExpenseReportsJournal=Informe-diari de despeses
|
||||||
|
InventoryJournal=Diari d'inventari
|
||||||
DescFinanceJournal=Diari financer que inclou tots els tipus de pagaments per compte bancari
|
DescFinanceJournal=Diari financer que inclou tots els tipus de pagaments per compte bancari
|
||||||
DescJournalOnlyBindedVisible=Aquesta és una vista de registre que està vinculada a un compte comptable i que es pot registrar als diaris i llibres majors.
|
DescJournalOnlyBindedVisible=Aquesta és una vista de registre que està vinculada a un compte comptable i que es pot registrar als diaris i llibres majors.
|
||||||
VATAccountNotDefined=Comptes comptables d'IVA sense definir
|
VATAccountNotDefined=Comptes comptables d'IVA sense definir
|
||||||
@ -257,9 +258,9 @@ DescThirdPartyReport=Consulteu aquí la llista dels clients i proveïdors de ter
|
|||||||
ListAccounts=Llistat dels comptes comptables
|
ListAccounts=Llistat dels comptes comptables
|
||||||
UnknownAccountForThirdparty=Compte comptable de tercer desconeguda, utilitzarem %s
|
UnknownAccountForThirdparty=Compte comptable de tercer desconeguda, utilitzarem %s
|
||||||
UnknownAccountForThirdpartyBlocking=Compte comptable de tercer desconegut. Error de bloqueig
|
UnknownAccountForThirdpartyBlocking=Compte comptable de tercer desconegut. Error de bloqueig
|
||||||
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Compte Subterrani no definit o desconegut per tercers o usuaris. Utilitzarem %s
|
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Compte de subllibre no definit o tercer o usuari desconegut. Utilitzarem %s
|
||||||
ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Tercer desconegut i subcompte comptable no definit al pagament. Es manté buit el valor del subcompte comptable.
|
ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Tercer desconegut i subcompte comptable no definit al pagament. Es manté buit el valor del subcompte comptable.
|
||||||
ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Compte Subterrani no definit o desconegut per tercers o usuaris. Error de bloqueig.
|
ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Compte de subllibre no definit o tercer o usuari desconegut. Error de bloqueig.
|
||||||
UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Compte de tercers desconegut i compte d'espera no definit. Error de bloqueig
|
UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Compte de tercers desconegut i compte d'espera no definit. Error de bloqueig
|
||||||
PaymentsNotLinkedToProduct=Pagament no vinculat a cap producte / servei
|
PaymentsNotLinkedToProduct=Pagament no vinculat a cap producte / servei
|
||||||
OpeningBalance=Saldo d'obertura
|
OpeningBalance=Saldo d'obertura
|
||||||
@ -269,7 +270,7 @@ ShowSubtotalByGroup=Mostra el subtotal per nivell
|
|||||||
|
|
||||||
Pcgtype=Grup de comptes
|
Pcgtype=Grup de comptes
|
||||||
PcgtypeDesc=S'utilitzen grups de comptes com a criteris predefinits de «filtre» i «agrupació» per a alguns informes de comptabilitat. Per exemple, «INGRESSOS» o «DESPESES» s'utilitzen com a grups per a comptes comptables de productes per a crear l'informe de despeses/ingressos.
|
PcgtypeDesc=S'utilitzen grups de comptes com a criteris predefinits de «filtre» i «agrupació» per a alguns informes de comptabilitat. Per exemple, «INGRESSOS» o «DESPESES» s'utilitzen com a grups per a comptes comptables de productes per a crear l'informe de despeses/ingressos.
|
||||||
AccountingCategoriesDesc=Custom group of accounts can be used to group accounting accounts into one name to ease filter use or building of custom reports.
|
AccountingCategoriesDesc=El grup de comptes personalitzat es pot utilitzar per a agrupar els comptes comptables en un sol nom per a facilitar l'ús del filtre o la creació d'informes personalitzats.
|
||||||
|
|
||||||
Reconcilable=Reconciliable
|
Reconcilable=Reconciliable
|
||||||
|
|
||||||
@ -299,7 +300,7 @@ DescValidateMovements=Queda prohibida qualsevol modificació o supressió de reg
|
|||||||
|
|
||||||
ValidateHistory=Comptabilitza automàticament
|
ValidateHistory=Comptabilitza automàticament
|
||||||
AutomaticBindingDone=Enllaços automàtics fets (%s): l'enllaç automàtic no és possible per a alguns registres (%s)
|
AutomaticBindingDone=Enllaços automàtics fets (%s): l'enllaç automàtic no és possible per a alguns registres (%s)
|
||||||
DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically.
|
DoManualBindingForFailedRecord=Heu de fer un enllaç manual per a les %s files no enllaçades automàticament.
|
||||||
|
|
||||||
ErrorAccountancyCodeIsAlreadyUse=Error, no podeu eliminar ni desactivar aquest compte del pla comptable perquè està en ús
|
ErrorAccountancyCodeIsAlreadyUse=Error, no podeu eliminar ni desactivar aquest compte del pla comptable perquè està en ús
|
||||||
MvtNotCorrectlyBalanced=Moviment no equilibrat correctament. Dèbit = %s i crèdit = %s
|
MvtNotCorrectlyBalanced=Moviment no equilibrat correctament. Dèbit = %s i crèdit = %s
|
||||||
@ -342,11 +343,11 @@ NumberOfAccountancyMovements=Nombre de moviments
|
|||||||
ACCOUNTING_DISABLE_BINDING_ON_SALES=Desactiva la vinculació i transferència de comptabilitat en vendes (les factures dels clients no es tindran en compte a la comptabilitat)
|
ACCOUNTING_DISABLE_BINDING_ON_SALES=Desactiva la vinculació i transferència de comptabilitat en vendes (les factures dels clients no es tindran en compte a la comptabilitat)
|
||||||
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Desactiva la vinculació i transferència a la comptabilitat de les compres (les factures de proveïdors no es tindran en compte a la comptabilitat)
|
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Desactiva la vinculació i transferència a la comptabilitat de les compres (les factures de proveïdors no es tindran en compte a la comptabilitat)
|
||||||
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Desactiva la vinculació i transferència de comptes en els informes de despeses (els informes de despeses no es tindran en compte a la comptabilitat)
|
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Desactiva la vinculació i transferència de comptes en els informes de despeses (els informes de despeses no es tindran en compte a la comptabilitat)
|
||||||
ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting
|
ACCOUNTING_ENABLE_LETTERING=Habiliteu la funció de lletres a la comptabilitat
|
||||||
ACCOUNTING_ENABLE_AUTOLETTERING=Habiliteu la lletra automàtica en traspassar a la comptabilitat
|
ACCOUNTING_ENABLE_AUTOLETTERING=Habiliteu la lletra automàtica en traspassar a la comptabilitat
|
||||||
|
|
||||||
## Export
|
## Export
|
||||||
NotExportLettering=Do not export the lettering when generating the file
|
NotExportLettering=No exporteu la lletra en generar el fitxer
|
||||||
NotifiedExportDate=Marca les línies exportades com a Exportades <span class="warning">(per a modificar una línia, hauràs de suprimir tota la transacció i tornar-la a transferir a la comptabilitat)</span>
|
NotifiedExportDate=Marca les línies exportades com a Exportades <span class="warning">(per a modificar una línia, hauràs de suprimir tota la transacció i tornar-la a transferir a la comptabilitat)</span>
|
||||||
NotifiedValidationDate=Validar i bloquejar les entrades exportades <span class="warning">(mateix efecte que la característica "%s", la modificació i la supressió de les línies DEFINITIVAMENT no seran possibles)</span>
|
NotifiedValidationDate=Validar i bloquejar les entrades exportades <span class="warning">(mateix efecte que la característica "%s", la modificació i la supressió de les línies DEFINITIVAMENT no seran possibles)</span>
|
||||||
NotifiedExportFull=Exportar documents?
|
NotifiedExportFull=Exportar documents?
|
||||||
@ -406,7 +407,7 @@ SaleLocal=Venda local
|
|||||||
SaleExport=Venda d’exportació
|
SaleExport=Venda d’exportació
|
||||||
SaleEEC=Venda en CEE
|
SaleEEC=Venda en CEE
|
||||||
SaleEECWithVAT=Venda a la CEE amb un IVA que no és nul, per la qual cosa suposem que NO es tracta d’una venda intracomunitària i el compte suggerit és el compte estàndard del producte.
|
SaleEECWithVAT=Venda a la CEE amb un IVA que no és nul, per la qual cosa suposem que NO es tracta d’una venda intracomunitària i el compte suggerit és el compte estàndard del producte.
|
||||||
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fall back on the account for standard sales. You can fix the VAT ID of the thirdparty, or change the product account suggested for binding if needed.
|
SaleEECWithoutVATNumber=Venda a la CEE sense IVA, però l'identificador d'IVA del tercer no està definit. Tornem al compte de vendes estàndard. Podeu corregir l'identificador d'IVA del tercer o canviar el compte del producte suggerit per vincular-lo si cal.
|
||||||
ForbiddenTransactionAlreadyExported=Prohibit: la transacció ha estat validada i/o exportada.
|
ForbiddenTransactionAlreadyExported=Prohibit: la transacció ha estat validada i/o exportada.
|
||||||
ForbiddenTransactionAlreadyValidated=Prohibit: la transacció s'ha validat.
|
ForbiddenTransactionAlreadyValidated=Prohibit: la transacció s'ha validat.
|
||||||
## Dictionary
|
## Dictionary
|
||||||
@ -430,7 +431,7 @@ AccountancyUnletteringModifiedSuccessfully=%s conciliació desfeta correctament
|
|||||||
## Confirm box
|
## Confirm box
|
||||||
ConfirmMassUnletteringAuto=Confirmació de desconciliació automàtica massiva
|
ConfirmMassUnletteringAuto=Confirmació de desconciliació automàtica massiva
|
||||||
ConfirmMassUnletteringManual=Confirmació de desconciliació manual massiva
|
ConfirmMassUnletteringManual=Confirmació de desconciliació manual massiva
|
||||||
ConfirmMassUnletteringQuestion=Are you sure you want to unreconcile the %s selected record(s)?
|
ConfirmMassUnletteringQuestion=Esteu segur que voleu anul·lar la conciliació dels registres seleccionats %s?
|
||||||
ConfirmMassDeleteBookkeepingWriting=Confirmació d'esborrament massiu
|
ConfirmMassDeleteBookkeepingWriting=Confirmació d'esborrament massiu
|
||||||
ConfirmMassDeleteBookkeepingWritingQuestion=Això suprimirà la transacció de la comptabilitat (se suprimiran totes les línies relacionades amb la mateixa transacció) Esteu segur que voleu suprimir els registres seleccionats %s?
|
ConfirmMassDeleteBookkeepingWritingQuestion=Això suprimirà la transacció de la comptabilitat (se suprimiran totes les línies relacionades amb la mateixa transacció) Esteu segur que voleu suprimir els registres seleccionats %s?
|
||||||
|
|
||||||
@ -461,11 +462,11 @@ FECFormatEntryNum=Número de peça (EcritureNum)
|
|||||||
FECFormatEntryDate=Data de la peça (EcritureDate)
|
FECFormatEntryDate=Data de la peça (EcritureDate)
|
||||||
FECFormatGeneralAccountNumber=Número de compte general (CompteNum)
|
FECFormatGeneralAccountNumber=Número de compte general (CompteNum)
|
||||||
FECFormatGeneralAccountLabel=Nom de compte general (CompteLib)
|
FECFormatGeneralAccountLabel=Nom de compte general (CompteLib)
|
||||||
FECFormatSubledgerAccountNumber=Número de compte de Subledger (CompAuxNum)
|
FECFormatSubledgerAccountNumber=Número de compte auxiliar (CompAuxNum)
|
||||||
FECFormatSubledgerAccountLabel=Número de compte de Subledger (CompAuxLib)
|
FECFormatSubledgerAccountLabel=Número de compte auxiliar (CompAuxLib)
|
||||||
FECFormatPieceRef=Peça ref. (PieceRef)
|
FECFormatPieceRef=Peça ref. (PieceRef)
|
||||||
FECFormatPieceDate=Creació de la data de la peça (PieceDate)
|
FECFormatPieceDate=Creació de la data de la peça (PieceDate)
|
||||||
FECFormatLabelOperation=Funcionament de l'etiqueta (EcritureLib)
|
FECFormatLabelOperation=Nom de l'operació (EcritureLib)
|
||||||
FECFormatDebit=Dèbit (dèbit)
|
FECFormatDebit=Dèbit (dèbit)
|
||||||
FECFormatCredit=Crèdit (Crèdit)
|
FECFormatCredit=Crèdit (Crèdit)
|
||||||
FECFormatReconcilableCode=Codi reconciliable (EcritureLet)
|
FECFormatReconcilableCode=Codi reconciliable (EcritureLet)
|
||||||
@ -477,7 +478,7 @@ FECFormatMulticurrencyCode=Codi multidivisa (Idevise)
|
|||||||
DateExport=Data d'exportació
|
DateExport=Data d'exportació
|
||||||
WarningReportNotReliable=Avís, aquest informe no està basat en el Llibre Major, de manera que no conté assentaments modificats manualment en el Llibre Major. Si el registre diari està actualitzat, la vista de comptes és més precisa.
|
WarningReportNotReliable=Avís, aquest informe no està basat en el Llibre Major, de manera que no conté assentaments modificats manualment en el Llibre Major. Si el registre diari està actualitzat, la vista de comptes és més precisa.
|
||||||
ExpenseReportJournal=Diari d'informe de despeses
|
ExpenseReportJournal=Diari d'informe de despeses
|
||||||
DocsAlreadyExportedAreExcluded=Docs already exported are excluded
|
DocsAlreadyExportedAreExcluded=S'exclouen els documents ja exportats
|
||||||
ClickToHideAlreadyExportedLines=Click to hide already exported lines
|
ClickToHideAlreadyExportedLines=Feu clic per a amagar les línies ja exportades
|
||||||
|
|
||||||
NAccounts=comptes %s
|
NAccounts=comptes %s
|
||||||
|
|||||||
@ -87,7 +87,7 @@ NotAvailableWhenAjaxDisabled=No disponible quan Ajax estigui desactivat
|
|||||||
AllowToSelectProjectFromOtherCompany=En un document d'un tercer, pots triar un projecte enllaçat a un altre tercer
|
AllowToSelectProjectFromOtherCompany=En un document d'un tercer, pots triar un projecte enllaçat a un altre tercer
|
||||||
TimesheetPreventAfterFollowingMonths=Eviteu el temps de gravació passat el següent nombre de mesos
|
TimesheetPreventAfterFollowingMonths=Eviteu el temps de gravació passat el següent nombre de mesos
|
||||||
JavascriptDisabled=Javascript desactivat
|
JavascriptDisabled=Javascript desactivat
|
||||||
UsePreviewTabs=Veure fitxes "vista prèvia"
|
UsePreviewTabs=Utilitzeu pestanyes de vista prèvia
|
||||||
ShowPreview=Veure previsualització
|
ShowPreview=Veure previsualització
|
||||||
ShowHideDetails=Mostra-Amaga els detalls
|
ShowHideDetails=Mostra-Amaga els detalls
|
||||||
PreviewNotAvailable=Vista prèvia no disponible
|
PreviewNotAvailable=Vista prèvia no disponible
|
||||||
@ -111,7 +111,7 @@ UseCaptchaCode=Utilitzeu el codi gràfic (CAPTCHA) a la pàgina d'inici de sessi
|
|||||||
AntiVirusCommand=Camí complet a l'ordre antivirus
|
AntiVirusCommand=Camí complet a l'ordre antivirus
|
||||||
AntiVirusCommandExample=Exemple per al dimoni ClamAv (requereix clamav-daemon): /usr/bin/clamdscan<br>Exemple per a ClamWin (molt molt lent): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
|
AntiVirusCommandExample=Exemple per al dimoni ClamAv (requereix clamav-daemon): /usr/bin/clamdscan<br>Exemple per a ClamWin (molt molt lent): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
|
||||||
AntiVirusParam= Més paràmetres a la línia d'ordres
|
AntiVirusParam= Més paràmetres a la línia d'ordres
|
||||||
AntiVirusParamExample=Exemple per al dimoni de ClamAv: --fdpass<br>Exemple per a ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib"
|
AntiVirusParamExample=Exemple del dimoni de ClamAv: --fdpass<br>Exemple de ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib"
|
||||||
ComptaSetup=Configuració del mòdul Comptabilitat
|
ComptaSetup=Configuració del mòdul Comptabilitat
|
||||||
UserSetup=Configuració de gestió d'usuaris
|
UserSetup=Configuració de gestió d'usuaris
|
||||||
MultiCurrencySetup=Configuració multidivisa
|
MultiCurrencySetup=Configuració multidivisa
|
||||||
@ -145,6 +145,7 @@ Box=Panell
|
|||||||
Boxes=Panells
|
Boxes=Panells
|
||||||
MaxNbOfLinesForBoxes=Màx. nombre de línies pels panells
|
MaxNbOfLinesForBoxes=Màx. nombre de línies pels panells
|
||||||
AllWidgetsWereEnabled=Tots els widgets disponibles estan habilitats
|
AllWidgetsWereEnabled=Tots els widgets disponibles estan habilitats
|
||||||
|
WidgetAvailable=Giny disponible
|
||||||
PositionByDefault=Posició per defecte
|
PositionByDefault=Posició per defecte
|
||||||
Position=Lloc
|
Position=Lloc
|
||||||
MenusDesc=Els gestors de menú configuren el contingut de les dues barres de menú (horitzontal i vertical).
|
MenusDesc=Els gestors de menú configuren el contingut de les dues barres de menú (horitzontal i vertical).
|
||||||
@ -346,13 +347,13 @@ UnpackPackageInModulesRoot=Per a implementar/instal·lar un mòdul extern, heu d
|
|||||||
SetupIsReadyForUse=La instal·lació del mòdul ha finalitzat. No obstant això, ha d'habilitar i configurar el mòdul en la seva aplicació, aneu a la pàgina per a configurar els mòduls: <a href="%s">%s</a>.
|
SetupIsReadyForUse=La instal·lació del mòdul ha finalitzat. No obstant això, ha d'habilitar i configurar el mòdul en la seva aplicació, aneu a la pàgina per a configurar els mòduls: <a href="%s">%s</a>.
|
||||||
NotExistsDirect=No s'ha definit el directori arrel alternatiu a un directori existent.<br>
|
NotExistsDirect=No s'ha definit el directori arrel alternatiu a un directori existent.<br>
|
||||||
InfDirAlt=Des de la versió 3, és possible definir un directori arrel alternatiu. Això li permet emmagatzemar, en un directori dedicat, plug-ins i plantilles personalitzades.<br>Només ha de crear un directori a l'arrel de Dolibarr (per exemple: custom).<br>
|
InfDirAlt=Des de la versió 3, és possible definir un directori arrel alternatiu. Això li permet emmagatzemar, en un directori dedicat, plug-ins i plantilles personalitzades.<br>Només ha de crear un directori a l'arrel de Dolibarr (per exemple: custom).<br>
|
||||||
InfDirExample=Llavors <br>declareu-ho a l'arxiu <strong>conf.php </strong><br> $dolibarr_main_url_root_alt='/custom'<br> $dolibarr_main_document_root_alt='/ruta/del/dolibarr/htdocs/custom'<br> Si aquestes línies estan comentades amb "#", per a activar-les simplement descomenteu-les traient el caràcter "#".
|
InfDirExample=<br>Llavors declareu-ho al fitxer <strong>conf.php</strong><br> $dolibarr_main_url_root_alt='/custom'<br>$dolibarr_main_document_root_alt='/cami/del/dolibarr/htdocs/custom'<br>Si aquestes línies estan comentades amb «#», per a activar-les només cal treure el comentari eliminant el caràcter «#».
|
||||||
YouCanSubmitFile=Podeu pujar el fitxer .zip del paquet del mòdul des d’aquí:
|
YouCanSubmitFile=Podeu pujar el fitxer .zip del paquet del mòdul des d’aquí:
|
||||||
CurrentVersion=Versió actual de Dolibarr
|
CurrentVersion=Versió actual de Dolibarr
|
||||||
CallUpdatePage=Aneu a la pàgina que actualitza l'estructura i les dades de la base de dades: %s.
|
CallUpdatePage=Aneu a la pàgina que actualitza l'estructura i les dades de la base de dades: %s.
|
||||||
LastStableVersion=Última versió estable
|
LastStableVersion=Última versió estable
|
||||||
LastActivationDate=Data de l'última activació
|
LastActivationDate=Última data d'activació
|
||||||
LastActivationAuthor=Últim autor d'activació
|
LastActivationAuthor=Autor de l'última activació
|
||||||
LastActivationIP=Última IP d'activació
|
LastActivationIP=Última IP d'activació
|
||||||
LastActivationVersion=Última versió d'activació
|
LastActivationVersion=Última versió d'activació
|
||||||
UpdateServerOffline=Actualitza el servidor fora de línia
|
UpdateServerOffline=Actualitza el servidor fora de línia
|
||||||
@ -374,11 +375,11 @@ DoTestSendHTML=Prova l'enviament HTML
|
|||||||
ErrorCantUseRazIfNoYearInMask=Error, no es pot utilitzar l'opció @ per a restablir el comptador cada any si la seqüència {yy} o {yyyy} no està emmascarada.
|
ErrorCantUseRazIfNoYearInMask=Error, no es pot utilitzar l'opció @ per a restablir el comptador cada any si la seqüència {yy} o {yyyy} no està emmascarada.
|
||||||
ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, no es pot usar opció @ si la seqüència (yy) (mm) o (yyyy) (mm) no es troba a la màscara.
|
ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, no es pot usar opció @ si la seqüència (yy) (mm) o (yyyy) (mm) no es troba a la màscara.
|
||||||
UMask=Paràmetre UMask de nous fitxers en Unix/Linux/BSD.
|
UMask=Paràmetre UMask de nous fitxers en Unix/Linux/BSD.
|
||||||
UMaskExplanation=Aquest paràmetre determina els drets dels arxius creats en el servidor Dolibarr (durant la pujada, per exemple).<br>Aquest ha de ser el valor octal (per exemple, 0666 significa lectura/escriptura per a tots).<br>Aquest paràmetre no té cap efecte sobre un servidor Windows.
|
UMaskExplanation=Aquest paràmetre us permet definir els permisos establerts per defecte als fitxers creats per Dolibarr al servidor (durant la càrrega, per exemple).<br>Ha de ser el valor octal (per exemple, 0666 significa llegir i escriure per a tothom). El valor recomanat és 0600 o 0660<br>Aquest paràmetre no té ús en un servidor Windows.
|
||||||
SeeWikiForAllTeam=Mireu la pàgina Wiki per a obtenir una llista dels col·laboradors i la seva organització
|
SeeWikiForAllTeam=Mireu la pàgina Wiki per a obtenir una llista dels col·laboradors i la seva organització
|
||||||
UseACacheDelay= Demora en memòria cau de l'exportació en segons (0 o buit sense memòria)
|
UseACacheDelay= Demora en memòria cau de l'exportació en segons (0 o buit sense memòria)
|
||||||
DisableLinkToHelpCenter=Amagueu l'enllaç "<b> Necessiteu ajuda o assistència </b>" a la pàgina d'inici de sessió
|
DisableLinkToHelpCenter=Amaga l'enllaç «<b>Necessites ajuda o assistència</b>» a la pàgina d'inici de sessió
|
||||||
DisableLinkToHelp=Amagueu l'enllaç a l'ajuda en línia "<b> %s </b>"
|
DisableLinkToHelp=Amaga l'enllaç a l'ajuda en línia «<b>%s</b>»
|
||||||
AddCRIfTooLong=No hi ha cap tall de text automàtic, el text massa llarg no es mostrarà als documents. Si cal, afegiu devolucions de carro a l'àrea de text.
|
AddCRIfTooLong=No hi ha cap tall de text automàtic, el text massa llarg no es mostrarà als documents. Si cal, afegiu devolucions de carro a l'àrea de text.
|
||||||
ConfirmPurge=Esteu segur que voleu executar aquesta purga? <br>Això suprimirà permanentment tots els fitxers de dades sense opció de restaurar-los (fitxers del GED, fitxers adjunts...).
|
ConfirmPurge=Esteu segur que voleu executar aquesta purga? <br>Això suprimirà permanentment tots els fitxers de dades sense opció de restaurar-los (fitxers del GED, fitxers adjunts...).
|
||||||
MinLength=Longitud mínima
|
MinLength=Longitud mínima
|
||||||
@ -393,14 +394,14 @@ FollowingSubstitutionKeysCanBeUsed= <br> Per a saber com crear les teves plantil
|
|||||||
FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Crear_un_modelo_de_documento_ODT
|
FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Crear_un_modelo_de_documento_ODT
|
||||||
FirstnameNamePosition=Posició del Nom/Cognoms
|
FirstnameNamePosition=Posició del Nom/Cognoms
|
||||||
DescWeather=Les imatges següents es mostraran al tauler de control quan el nombre d'accions posteriors arriba als valors següents:
|
DescWeather=Les imatges següents es mostraran al tauler de control quan el nombre d'accions posteriors arriba als valors següents:
|
||||||
KeyForWebServicesAccess=Clau per a utilitzar els serveis web (paràmetre "dolibarrkey" als serveis web)
|
KeyForWebServicesAccess=Clau per a utilitzar els serveis web (paràmetre «dolibarrkey» als serveis web)
|
||||||
TestSubmitForm=Formulari de proves
|
TestSubmitForm=Formulari de proves
|
||||||
ThisForceAlsoTheme=L’ús d’aquest gestor de menús també farà servir el seu propi tema sigui quina sigui l’opció de l’usuari. A més, aquest gestor de menú especialitzat per a telèfons intel·ligents no funciona en tots els telèfons intel·ligents. Utilitzeu un altre gestor de menús si teniu problemes amb el vostre.
|
ThisForceAlsoTheme=L’ús d’aquest gestor de menús també farà servir el seu propi tema sigui quina sigui l’opció de l’usuari. A més, aquest gestor de menú especialitzat per a telèfons intel·ligents no funciona en tots els telèfons intel·ligents. Utilitzeu un altre gestor de menús si teniu problemes amb el vostre.
|
||||||
ThemeDir=Directori dels temes
|
ThemeDir=Directori dels temes
|
||||||
ConnectionTimeout=Temps d'espera de connexió
|
ConnectionTimeout=Temps d'espera de connexió
|
||||||
ResponseTimeout=Timeout de resposta
|
ResponseTimeout=Timeout de resposta
|
||||||
SmsTestMessage=Missatge de prova de __PHONEFROM__ per __PHONETO__
|
SmsTestMessage=Missatge de prova de __PHONEFROM__ per __PHONETO__
|
||||||
ModuleMustBeEnabledFirst=El mòdul "<b>%s</b>" ha d'habilitar-se primer si necessita aquesta funcionalitat.
|
ModuleMustBeEnabledFirst=El mòdul <b>%s</b> s'ha d'activar primer si necessiteu aquesta funció.
|
||||||
SecurityToken=Clau per a protegir els URL
|
SecurityToken=Clau per a protegir els URL
|
||||||
NoSmsEngine=No hi ha cap gestor de remitents d'SMS disponible. Un gestor de remitents d'SMS no està instal·lat amb la distribució predeterminada perquè depenen d'un proveïdor extern, però podeu trobar-ne alguns a %s
|
NoSmsEngine=No hi ha cap gestor de remitents d'SMS disponible. Un gestor de remitents d'SMS no està instal·lat amb la distribució predeterminada perquè depenen d'un proveïdor extern, però podeu trobar-ne alguns a %s
|
||||||
PDF=PDF
|
PDF=PDF
|
||||||
@ -451,7 +452,7 @@ ExtrafieldCheckBox=Caselles de selecció
|
|||||||
ExtrafieldCheckBoxFromList=Caselles de selecció des d'una taula
|
ExtrafieldCheckBoxFromList=Caselles de selecció des d'una taula
|
||||||
ExtrafieldLink=Enllaç a un objecte
|
ExtrafieldLink=Enllaç a un objecte
|
||||||
ComputedFormula=Camp calculat
|
ComputedFormula=Camp calculat
|
||||||
ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: <strong>$db, $conf, $langs, $mysoc, $user, $objectoffield</strong>.<br><strong>WARNING</strong>: If you need properties of an object not loaded, just fetch yourself the object into your formula like in the second example.<br>Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.<br><br>Example of formula:<br>$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)<br><br>Example to reload object<br>(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1')<br><br>Other example of formula to force load of object and its parent object:<br>(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found'
|
ComputedFormulaDesc=Podeu introduir aquí una fórmula utilitzant altres propietats de l’objecte o qualsevol codi PHP per a obtenir un valor calculat dinàmicament. Podeu utilitzar qualsevol fórmula compatible amb PHP, inclòs l'operador condicional «?» i els següents objectes globals:<strong>$db, $conf, $langs, $mysoc, $user, $object</strong>.<br><strong>ATENCIÓ</strong>: Només poden estar disponibles algunes propietats de $object. Si necessiteu una propietat no carregada, només cal que incorporeu l'objecte a la vostra fórmula com en el segon exemple.<br>Utilitzar un camp calculat implica que no podreu introduir cap valor des de la interfície. A més, si hi ha un error de sintaxi, la fórmula pot no tornar res.<br><br>Exemple de fórmula:<br>$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)<br><br>Exemple per a tornar a carregar l'objecte <br>(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1')<br><br>Un altre exemple de fórmula per a forçar la càrrega de l'objecte i el seu objecte pare:<br>(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found'
|
||||||
Computedpersistent=Emmagatzemar el camp computat
|
Computedpersistent=Emmagatzemar el camp computat
|
||||||
ComputedpersistentDesc=Els camps addicionals calculats s’emmagatzemaran a la base de dades, però el valor només es recalcularà quan es canviï l’objecte d’aquest camp. Si el camp calculat depèn d'altres objectes o dades globals, aquest valor pot ser incorrecte!!
|
ComputedpersistentDesc=Els camps addicionals calculats s’emmagatzemaran a la base de dades, però el valor només es recalcularà quan es canviï l’objecte d’aquest camp. Si el camp calculat depèn d'altres objectes o dades globals, aquest valor pot ser incorrecte!!
|
||||||
ExtrafieldParamHelpPassword=Si deixeu aquest camp en blanc, vol dir que aquest valor s'emmagatzemarà sense xifratge (el camp només s'ha d'amagar amb una estrella a la pantalla). <br> Establiu 'auto' per a utilitzar la regla de xifratge predeterminada per a desar la contrasenya a la base de dades (aleshores, el valor llegit serà només el hash, no hi ha manera de recuperar el valor original)
|
ExtrafieldParamHelpPassword=Si deixeu aquest camp en blanc, vol dir que aquest valor s'emmagatzemarà sense xifratge (el camp només s'ha d'amagar amb una estrella a la pantalla). <br> Establiu 'auto' per a utilitzar la regla de xifratge predeterminada per a desar la contrasenya a la base de dades (aleshores, el valor llegit serà només el hash, no hi ha manera de recuperar el valor original)
|
||||||
@ -512,8 +513,8 @@ DependsOn=Aquest mòdul necessita els mòduls
|
|||||||
RequiredBy=Aquest mòdul és requerit pel/s mòdul/s
|
RequiredBy=Aquest mòdul és requerit pel/s mòdul/s
|
||||||
TheKeyIsTheNameOfHtmlField=Aquest és el nom del camp HTML. Es necessiten coneixements tècnics per a llegir el contingut de la pàgina HTML per a obtenir el nom clau d’un camp.
|
TheKeyIsTheNameOfHtmlField=Aquest és el nom del camp HTML. Es necessiten coneixements tècnics per a llegir el contingut de la pàgina HTML per a obtenir el nom clau d’un camp.
|
||||||
PageUrlForDefaultValues=Has d'introduir aquí l'URL relatiu de la pàgina. Si inclous paràmetres a l'URL, els valors predeterminats seran efectius si tots els paràmetres s'estableixen en el mateix valor.
|
PageUrlForDefaultValues=Has d'introduir aquí l'URL relatiu de la pàgina. Si inclous paràmetres a l'URL, els valors predeterminats seran efectius si tots els paràmetres s'estableixen en el mateix valor.
|
||||||
PageUrlForDefaultValuesCreate=<br>Exemple:<br>Per al formulari per a crear un tercer nou, és <strong>%s</strong>.<br>Per a l'URL dels mòduls externs instal·lats al directori personalitzat, no incloeu el "custom/", així que utilitzeu una ruta com <strong>mymodule/mypage.php</strong> i no custom/mymodule/mypage.php.<br>Si només voleu un valor per defecte si l'URL té algun paràmetre, podeu utilitzar <strong>%s</strong>
|
PageUrlForDefaultValuesCreate=<br>Exemple:<br>Per al formulari per a crear un tercer nou, és <strong>%s</strong>.<br>Per a l'URL dels mòduls externs instal·lats al directori personalitzat, no inclogueu el «custom/», de manera que utilitzeu un camí com <strong>elmeumodul/lamevapagina.php</strong> i no custom/elmeumodul/lamevapagina.php.<br>Si només voleu un valor predeterminat si l'URL té algun paràmetre, podeu utilitzar <strong>%s</strong>
|
||||||
PageUrlForDefaultValuesList= <br>Exemple:<br> Per a la pàgina que llista els tercers, és <strong>%s</strong>. <br> Per a l'URL dels mòduls externs instal·lats al directori personalitzat, no incloeu el "custom/", de manera que utilitzeu una ruta com <strong>mymodule/mypagelist.php </strong> i no custom/mymodule/mypagelist.php. <br> Si només voleu un valor per defecte si l'URL té algun paràmetre, podeu utilitzar <strong>%s</strong>
|
PageUrlForDefaultValuesList=<br>Exemple:<br>Per a la pàgina que llista els tercers, és <strong>%s</strong>.<br>Per a l'URL dels mòduls externs instal·lats al directori personalitzat, no inclogueu «custom/», així que utilitzeu un camí com <strong>elmeumodul/lamevapaginallistat.php</strong> i no custom/elmeumodul/lamevapaginallistat.php.<br>Si només voleu un valor predeterminat si l'URL té algun paràmetre, podeu utilitzar <strong>%s</strong>
|
||||||
AlsoDefaultValuesAreEffectiveForActionCreate=També tingueu en compte que sobreescriure valors predeterminats per a la creació de formularis funciona només per a pàgines dissenyades correctament (de manera que amb el paràmetre action = create o presend ...)
|
AlsoDefaultValuesAreEffectiveForActionCreate=També tingueu en compte que sobreescriure valors predeterminats per a la creació de formularis funciona només per a pàgines dissenyades correctament (de manera que amb el paràmetre action = create o presend ...)
|
||||||
EnableDefaultValues=Activa la personalització dels valors predeterminats
|
EnableDefaultValues=Activa la personalització dels valors predeterminats
|
||||||
EnableOverwriteTranslation=Permet la personalització de les traduccions
|
EnableOverwriteTranslation=Permet la personalització de les traduccions
|
||||||
@ -646,7 +647,7 @@ Module2300Desc=Gestió de tasques programades (àlies cron o taula de crons)
|
|||||||
Module2400Name=Esdeveniments/Agenda
|
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.
|
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=Sistema de calendari de reserves
|
Module2430Name=Sistema de calendari de reserves
|
||||||
Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities.
|
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
|
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.
|
Module2500Desc=Sistema de gestió de documents / Gestió de continguts electrònics. Organització automàtica dels vostres documents generats o emmagatzemats. Compartiu-los quan ho necessiteu.
|
||||||
Module2600Name=Serveis API / Web (servidor SOAP)
|
Module2600Name=Serveis API / Web (servidor SOAP)
|
||||||
@ -663,7 +664,7 @@ Module2900Desc=Capacitats de conversió GeoIP Maxmind
|
|||||||
Module3200Name=Arxius inalterables
|
Module3200Name=Arxius inalterables
|
||||||
Module3200Desc=Activa el registre d'alguns esdeveniments de negoci en un registre inalterable. Els esdeveniments s'arxiven en temps real. El registre és una taula d'esdeveniments encadenats que només es poden llegir i exportar. Aquest mòdul pot ser obligatori per a alguns països.
|
Module3200Desc=Activa el registre d'alguns esdeveniments de negoci en un registre inalterable. Els esdeveniments s'arxiven en temps real. El registre és una taula d'esdeveniments encadenats que només es poden llegir i exportar. Aquest mòdul pot ser obligatori per a alguns països.
|
||||||
Module3300Name=Creador de mòduls
|
Module3300Name=Creador de mòduls
|
||||||
Module3200Desc=Activa el registre d'alguns esdeveniments de negoci en un registre inalterable. Els esdeveniments s'arxiven en temps real. El registre és una taula d'esdeveniments encadenats que només es poden llegir i exportar. Aquest mòdul pot ser obligatori per a alguns països.
|
Module3300Desc=Una eina RAD (Desenvolupament ràpid d'aplicacions: codi baix i sense codi) per a ajudar els desenvolupadors o usuaris avançats a crear el seu propi mòdul/aplicació.
|
||||||
Module3400Name=Xarxes socials
|
Module3400Name=Xarxes socials
|
||||||
Module3400Desc=Activa els camps de les xarxes socials a tercers i adreces (skype, twitter, facebook...).
|
Module3400Desc=Activa els camps de les xarxes socials a tercers i adreces (skype, twitter, facebook...).
|
||||||
Module4000Name=RH
|
Module4000Name=RH
|
||||||
@ -704,8 +705,8 @@ Module62000Name=Incoterms
|
|||||||
Module62000Desc=Afegeix funcions per a gestionar Incoterms
|
Module62000Desc=Afegeix funcions per a gestionar Incoterms
|
||||||
Module63000Name=Recursos
|
Module63000Name=Recursos
|
||||||
Module63000Desc=Gestiona els recursos (impressores, cotxes, habitacions...) que pots compartir en esdeveniments
|
Module63000Desc=Gestiona els recursos (impressores, cotxes, habitacions...) que pots compartir en esdeveniments
|
||||||
Module66000Name=Enable OAuth2 authentication
|
Module66000Name=Activa l'autenticació OAuth2
|
||||||
Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules.
|
Module66000Desc=Proporcioneu una eina per a generar i gestionar fitxes OAuth2. El testimoni pot ser utilitzat per alguns altres mòduls.
|
||||||
Module94160Name=Recepcions
|
Module94160Name=Recepcions
|
||||||
Permission11=Consulta les factures dels clients (i els cobraments)
|
Permission11=Consulta les factures dels clients (i els cobraments)
|
||||||
Permission12=Crear/Modificar factures
|
Permission12=Crear/Modificar factures
|
||||||
@ -860,7 +861,7 @@ Permission331=Consultar bookmarks
|
|||||||
Permission332=Crear/modificar bookmarks
|
Permission332=Crear/modificar bookmarks
|
||||||
Permission333=Eliminar bookmarks
|
Permission333=Eliminar bookmarks
|
||||||
Permission341=Consultar els seus propis permisos
|
Permission341=Consultar els seus propis permisos
|
||||||
Permission342=Crear/modificar la seva pròpia info d'usuari
|
Permission342=Crea/modifica la seva pròpia informació d'usuari
|
||||||
Permission343=Modificar la seva pròpia contrasenya
|
Permission343=Modificar la seva pròpia contrasenya
|
||||||
Permission344=Modificar els seus propis permisos
|
Permission344=Modificar els seus propis permisos
|
||||||
Permission351=Consultar els grups
|
Permission351=Consultar els grups
|
||||||
@ -980,9 +981,9 @@ Permission3301=Genera mòduls nous
|
|||||||
Permission4001=Llegir habilitat/ocupació/posició
|
Permission4001=Llegir habilitat/ocupació/posició
|
||||||
Permission4002=Crear/modificar habilitat/ocupació/posició
|
Permission4002=Crear/modificar habilitat/ocupació/posició
|
||||||
Permission4003=Esborra habilitat/ocupació/posició
|
Permission4003=Esborra habilitat/ocupació/posició
|
||||||
Permission4021=Read evaluations (yours and your subordinates)
|
Permission4021=Consulta les avaluacions (teves i dels teus subordinats)
|
||||||
Permission4022=Create/modify evaluations
|
Permission4022=Crear/modificar avaluacions
|
||||||
Permission4023=Validate evaluation
|
Permission4023=Valida l'avaluació
|
||||||
Permission4025=Elimina l'avaluació
|
Permission4025=Elimina l'avaluació
|
||||||
Permission4028=Veure menú comparatiu
|
Permission4028=Veure menú comparatiu
|
||||||
Permission4031=Llegeix informació personal
|
Permission4031=Llegeix informació personal
|
||||||
@ -1102,7 +1103,7 @@ VATManagement=Gestió IVA
|
|||||||
VATIsUsedDesc=De manera predeterminada, quan es creen clients potencials, factures, comandes, etc., la tarifa de l'impost de vendes segueix la norma estàndard activa: <br> Si el venedor no està subjecte a l'impost de vendes, l'impost de vendes s'estableix per defecte a 0. Final de la regla. <br> Si el (país del venedor = país del comprador), l'impost de vendes per defecte és igual a l'impost de vendes del producte al país del venedor. Fi de la regla. <br> Si el venedor i el comprador es troben a la Comunitat Europea i els productes són productes relacionats amb el transport (transport, enviament, línia aèria), l'IVA per defecte és 0. Aquesta norma depèn del país del venedor, consulteu amb el vostre comptador. L'IVA s'ha de pagar pel comprador a l'oficina de duanes del seu país i no al venedor. Fi de la regla. <br> Si el venedor i el comprador es troben a la Comunitat Europea i el comprador no és una empresa (amb un número d'IVA intracomunitari registrat), l'IVA es fa per defecte al tipus d'IVA del país del venedor. Fi de la regla. <br> Si el venedor i el comprador es troben a la Comunitat Europea i el comprador és una empresa (amb un número d'IVA intracomunitari registrat), l'IVA és 0 per defecte. Fi de la regla. <br> En qualsevol altre cas, el valor predeterminat proposat és l'impost de vendes = 0. Fi de la regla.
|
VATIsUsedDesc=De manera predeterminada, quan es creen clients potencials, factures, comandes, etc., la tarifa de l'impost de vendes segueix la norma estàndard activa: <br> Si el venedor no està subjecte a l'impost de vendes, l'impost de vendes s'estableix per defecte a 0. Final de la regla. <br> Si el (país del venedor = país del comprador), l'impost de vendes per defecte és igual a l'impost de vendes del producte al país del venedor. Fi de la regla. <br> Si el venedor i el comprador es troben a la Comunitat Europea i els productes són productes relacionats amb el transport (transport, enviament, línia aèria), l'IVA per defecte és 0. Aquesta norma depèn del país del venedor, consulteu amb el vostre comptador. L'IVA s'ha de pagar pel comprador a l'oficina de duanes del seu país i no al venedor. Fi de la regla. <br> Si el venedor i el comprador es troben a la Comunitat Europea i el comprador no és una empresa (amb un número d'IVA intracomunitari registrat), l'IVA es fa per defecte al tipus d'IVA del país del venedor. Fi de la regla. <br> Si el venedor i el comprador es troben a la Comunitat Europea i el comprador és una empresa (amb un número d'IVA intracomunitari registrat), l'IVA és 0 per defecte. Fi de la regla. <br> En qualsevol altre cas, el valor predeterminat proposat és l'impost de vendes = 0. Fi de la regla.
|
||||||
VATIsNotUsedDesc=El tipus d'IVA proposat per defecte és 0. Aquest és el cas d'associacions, particulars o algunes petites societats.
|
VATIsNotUsedDesc=El tipus d'IVA proposat per defecte és 0. Aquest és el cas d'associacions, particulars o algunes petites societats.
|
||||||
VATIsUsedExampleFR=A França, es tracta de les societats o organismes que trien un règim fiscal general (General simplificat o General normal), règim en el qual es declara l'IVA.
|
VATIsUsedExampleFR=A França, es tracta de les societats o organismes que trien un règim fiscal general (General simplificat o General normal), règim en el qual es declara l'IVA.
|
||||||
VATIsNotUsedExampleFR=A França, es tracta d'associacions que no siguin declarades per vendes o empreses, organitzacions o professions liberals que hagin triat el sistema fiscal de la microempresa (Impost sobre vendes en franquícia) i paguen una franquícia. Impost sobre vendes sense declaració d'impost sobre vendes. Aquesta elecció mostrarà la referència "Impost sobre vendes no aplicable - art-293B de CGI" a les factures.
|
VATIsNotUsedExampleFR=A França, s'entén per associacions que no declaren l'impost de vendes o d'empreses, organitzacions o professions liberals que han escollit el sistema fiscal de microempresa (Impost sobre vendes en franquícia) i han pagat un impost sobre vendes de franquícia sense cap declaració d'impost sobre vendes. Aquesta opció mostrarà la referència «Impost sobre vendes no aplicable - art-293B de CGI» a les factures.
|
||||||
##### Local Taxes #####
|
##### Local Taxes #####
|
||||||
TypeOfSaleTaxes=Tipus d’impost sobre vendes
|
TypeOfSaleTaxes=Tipus d’impost sobre vendes
|
||||||
LTRate=Tarifa
|
LTRate=Tarifa
|
||||||
@ -1208,7 +1209,7 @@ DoNotSuggestPaymentMode=No ho suggereixis
|
|||||||
NoActiveBankAccountDefined=Cap compte bancari actiu definit
|
NoActiveBankAccountDefined=Cap compte bancari actiu definit
|
||||||
OwnerOfBankAccount=Titular del compte %s
|
OwnerOfBankAccount=Titular del compte %s
|
||||||
BankModuleNotActive=Mòdul comptes bancaris no activat
|
BankModuleNotActive=Mòdul comptes bancaris no activat
|
||||||
ShowBugTrackLink=Mostra l'enllaç "<strong> %s </strong>"
|
ShowBugTrackLink=Mostra l'enllaç «<strong>%s</strong>»
|
||||||
ShowBugTrackLinkDesc=Manteniu-lo buit per no mostrar aquest enllaç, utilitzeu el valor 'github' per a l'enllaç al projecte Dolibarr o definiu directament un URL 'https://...'
|
ShowBugTrackLinkDesc=Manteniu-lo buit per no mostrar aquest enllaç, utilitzeu el valor 'github' per a l'enllaç al projecte Dolibarr o definiu directament un URL 'https://...'
|
||||||
Alerts=Alertes
|
Alerts=Alertes
|
||||||
DelaysOfToleranceBeforeWarning=S'està mostrant una alerta d'advertència per...
|
DelaysOfToleranceBeforeWarning=S'està mostrant una alerta d'advertència per...
|
||||||
@ -1236,7 +1237,7 @@ SetupDescription4= <a href="%s"> %s -> %s </a> <br> <br> Aquest programari és
|
|||||||
SetupDescription5=Altres entrades del menú d'instal·lació gestionen paràmetres opcionals.
|
SetupDescription5=Altres entrades del menú d'instal·lació gestionen paràmetres opcionals.
|
||||||
SetupDescriptionLink= <a href="%s"> %s - %s </a>
|
SetupDescriptionLink= <a href="%s"> %s - %s </a>
|
||||||
SetupDescription3b=Paràmetres bàsics utilitzats per a personalitzar el comportament predeterminat de la vostra aplicació (p. ex., per a funcions relacionades amb el país).
|
SetupDescription3b=Paràmetres bàsics utilitzats per a personalitzar el comportament predeterminat de la vostra aplicació (p. ex., per a funcions relacionades amb el país).
|
||||||
SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules.
|
SetupDescription4b=Aquest programari és un conjunt de molts mòduls/aplicacions. Cal activar els mòduls relacionats amb les vostres necessitats. Les entrades del menú apareixeran amb l'activació d'aquests mòduls.
|
||||||
AuditedSecurityEvents=Esdeveniments de seguretat que s’auditen
|
AuditedSecurityEvents=Esdeveniments de seguretat que s’auditen
|
||||||
NoSecurityEventsAreAduited=No s’audita cap esdeveniment de seguretat. Podeu activar-les des del menú %s
|
NoSecurityEventsAreAduited=No s’audita cap esdeveniment de seguretat. Podeu activar-les des del menú %s
|
||||||
Audit=Esdeveniments de seguretat
|
Audit=Esdeveniments de seguretat
|
||||||
@ -1257,7 +1258,7 @@ LogEventDesc=Habiliteu el registre per a esdeveniments de seguretat específics.
|
|||||||
AreaForAdminOnly=Els paràmetres de configuració només poden ser establerts per <b>usuaris administradors</b>.
|
AreaForAdminOnly=Els paràmetres de configuració només poden ser establerts per <b>usuaris administradors</b>.
|
||||||
SystemInfoDesc=La informació del sistema és informació tècnica diversa que obteniu en mode de només lectura i visible només per als administradors.
|
SystemInfoDesc=La informació del sistema és informació tècnica diversa que obteniu en mode de només lectura i visible només per als administradors.
|
||||||
SystemAreaForAdminOnly=Aquesta àrea només està disponible per als usuaris administradors. Els permisos d'usuari de Dolibarr no poden canviar aquesta restricció.
|
SystemAreaForAdminOnly=Aquesta àrea només està disponible per als usuaris administradors. Els permisos d'usuari de Dolibarr no poden canviar aquesta restricció.
|
||||||
CompanyFundationDesc=Editeu la informació de la vostra empresa / organització. Feu clic al botó "%s" al final de la pàgina quan hagi acabat.
|
CompanyFundationDesc=Editeu la informació de la vostra empresa/organització. Fes clic al botó «%s» a la part inferior de la pàgina quan hagis acabat.
|
||||||
MoreNetworksAvailableWithModule=És possible que hi hagi més xarxes socials disponibles activant el mòdul "Xarxes socials".
|
MoreNetworksAvailableWithModule=És possible que hi hagi més xarxes socials disponibles activant el mòdul "Xarxes socials".
|
||||||
AccountantDesc=Si teniu un comptable extern, podeu editar aquí la seva informació.
|
AccountantDesc=Si teniu un comptable extern, podeu editar aquí la seva informació.
|
||||||
AccountantFileNumber=Número de fila
|
AccountantFileNumber=Número de fila
|
||||||
@ -1265,7 +1266,7 @@ DisplayDesc=Els paràmetres que afecten l'aspecte i la presentació de l'aplicac
|
|||||||
AvailableModules=Mòduls/complements disponibles
|
AvailableModules=Mòduls/complements disponibles
|
||||||
ToActivateModule=Per a activar mòduls, aneu a l'àrea de configuració (Inici->Configuració->Mòduls).
|
ToActivateModule=Per a activar mòduls, aneu a l'àrea de configuració (Inici->Configuració->Mòduls).
|
||||||
SessionTimeOut=Temps de desconnexió per a la sessió
|
SessionTimeOut=Temps de desconnexió per a la sessió
|
||||||
SessionExplanation=Aquest número garanteix que la sessió no caduqui abans d'aquest retard, si el netejador de sessió es fa mitjançant un netejador de sessió de PHP intern (i res més). El netejador de sessió intern de PHP no garanteix que la sessió expire després d'aquest retard. Caducarà, després d'aquest retard, i quan s'executi el netejador de sessió, de manera que cada accés <b> %s / %s </b>, però només durant l'accés fet per altres sessions (si el valor és 0, significa que l'eliminació de la sessió només es fa mitjançant un extern procés). <br> Nota: en alguns servidors amb un mecanisme de neteja de sessió externa (cron sota debian, ubuntu ...), les sessions es poden destruir després d'un període definit per una configuració externa, independentment del valor introduït aquí.
|
SessionExplanation=Aquest número garanteix que la sessió no caducarà mai abans d'aquest retard, si el netejador de sessions el fa el netejador de sessions intern de PHP (i res més). El netejador de sessions intern de PHP no garanteix que la sessió caduqui després d'aquest retard. Caducarà, després d'aquest retard, i quan s'executi el netejador de sessions, de manera que cada accés <b>%s/%s</b>, però només durant l'accés realitzat per altres sessions (si el valor és 0, vol dir que només s'esborra la sessió per un procés extern).<br>Nota: en alguns servidors amb un mecanisme de neteja de sessions extern (cron sota debian, ubuntu...), les sessions es poden destruir després d'un període definit per una configuració externa, sense importar quin sigui el valor introduït aquí.
|
||||||
SessionsPurgedByExternalSystem=Sembla que les sessions en aquest servidor són netejades mitjançant un mecanisme extern (cron sota debian, ubuntu ...), probablement cada <b> %s </b> segons (= el valor del paràmetre sessió.gc_maxlifetime ), així que modificant aquest valor aquí no té cap efecte, Heu de sol·licitar a l’administrador del servidor que canviï la durada de la sessió.
|
SessionsPurgedByExternalSystem=Sembla que les sessions en aquest servidor són netejades mitjançant un mecanisme extern (cron sota debian, ubuntu ...), probablement cada <b> %s </b> segons (= el valor del paràmetre sessió.gc_maxlifetime ), així que modificant aquest valor aquí no té cap efecte, Heu de sol·licitar a l’administrador del servidor que canviï la durada de la sessió.
|
||||||
TriggersAvailable=Triggers disponibles
|
TriggersAvailable=Triggers disponibles
|
||||||
TriggersDesc=Els activadors són fitxers que modificaran el comportament del flux de treball de Dolibarr un cop copiat al directori <b>htdocs/core/triggers</b>. Realitzen accions noves, activades en esdeveniments Dolibarr (creació d'empresa nova, validació de factures...).
|
TriggersDesc=Els activadors són fitxers que modificaran el comportament del flux de treball de Dolibarr un cop copiat al directori <b>htdocs/core/triggers</b>. Realitzen accions noves, activades en esdeveniments Dolibarr (creació d'empresa nova, validació de factures...).
|
||||||
@ -1310,7 +1311,7 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Heu d'executar aquesta ordre de
|
|||||||
YourPHPDoesNotHaveSSLSupport=Funcions SSL no disponibles al vostre PHP
|
YourPHPDoesNotHaveSSLSupport=Funcions SSL no disponibles al vostre PHP
|
||||||
DownloadMoreSkins=Més temes per a descarregar
|
DownloadMoreSkins=Més temes per a descarregar
|
||||||
SimpleNumRefModelDesc=Retorna el número de referència en el format %syymm-nnnn on yy és l'any, mm és el mes i nnnn és un número d'increment automàtic seqüencial sense restablir
|
SimpleNumRefModelDesc=Retorna el número de referència en el format %syymm-nnnn on yy és l'any, mm és el mes i nnnn és un número d'increment automàtic seqüencial sense restablir
|
||||||
SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset
|
SimpleRefNumRefModelDesc=Retorna el número de referència en el format n on n és un nombre seqüencial d'increment automàtic sense restabliment
|
||||||
AdvancedNumRefModelDesc=Retorna el número de referència en el format %syymm-nnnn on yy és l'any, mm és el mes i nnnn és un número d'increment automàtic seqüencial sense restablir
|
AdvancedNumRefModelDesc=Retorna el número de referència en el format %syymm-nnnn on yy és l'any, mm és el mes i nnnn és un número d'increment automàtic seqüencial sense restablir
|
||||||
SimpleNumRefNoDateModelDesc=Retorna el número de referència en el format %s-nnnn on nnnn és un número d’increment automàtic seqüencial sense restablir
|
SimpleNumRefNoDateModelDesc=Retorna el número de referència en el format %s-nnnn on nnnn és un número d’increment automàtic seqüencial sense restablir
|
||||||
ShowProfIdInAddress=Mostra el DNI professional amb adreces
|
ShowProfIdInAddress=Mostra el DNI professional amb adreces
|
||||||
@ -1369,7 +1370,7 @@ TitleNumberOfActivatedModules=Mòduls activats
|
|||||||
TotalNumberOfActivatedModules=Mòduls activats: <b> %s </b> / <b> %s </b>
|
TotalNumberOfActivatedModules=Mòduls activats: <b> %s </b> / <b> %s </b>
|
||||||
YouMustEnableOneModule=Ha d'activar almenys 1 mòdul.
|
YouMustEnableOneModule=Ha d'activar almenys 1 mòdul.
|
||||||
YouMustEnableTranslationOverwriteBefore=Primer heu d'activar la sobreescriptura de traduccions per a poder substituir una traducció
|
YouMustEnableTranslationOverwriteBefore=Primer heu d'activar la sobreescriptura de traduccions per a poder substituir una traducció
|
||||||
ClassNotFoundIntoPathWarning=La classe %s no s'ha trobat a la ruta PHP
|
ClassNotFoundIntoPathWarning=La classe %s no s'ha trobat al camí PHP
|
||||||
YesInSummer=Sí a l'estiu
|
YesInSummer=Sí a l'estiu
|
||||||
OnlyFollowingModulesAreOpenedToExternalUsers=Tingueu en compte que només els següents mòduls estan disponibles per als usuaris externs (independentment dels permisos d'aquests usuaris) i només si es concedeixen permisos: <br>
|
OnlyFollowingModulesAreOpenedToExternalUsers=Tingueu en compte que només els següents mòduls estan disponibles per als usuaris externs (independentment dels permisos d'aquests usuaris) i només si es concedeixen permisos: <br>
|
||||||
SuhosinSessionEncrypt=Emmagatzematge de sessions xifrades per Suhosin
|
SuhosinSessionEncrypt=Emmagatzematge de sessions xifrades per Suhosin
|
||||||
@ -1452,8 +1453,8 @@ SuppliersPayment=Pagaments a proveïdors
|
|||||||
SupplierPaymentSetup=Configuració de pagaments a proveïdors
|
SupplierPaymentSetup=Configuració de pagaments a proveïdors
|
||||||
InvoiceCheckPosteriorDate=Comproveu la data de fabricació abans de la validació
|
InvoiceCheckPosteriorDate=Comproveu la data de fabricació abans de la validació
|
||||||
InvoiceCheckPosteriorDateHelp=La validació d'una factura estarà prohibida si la seva data és anterior a la data de l'última factura del mateix tipus.
|
InvoiceCheckPosteriorDateHelp=La validació d'una factura estarà prohibida si la seva data és anterior a la data de l'última factura del mateix tipus.
|
||||||
InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice.
|
InvoiceOptionCategoryOfOperations=Mostra la menció «categoria d'operacions» a la factura.
|
||||||
InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:<br>- Category of operations: Delivery of goods<br>- Category of operations: Provision of services<br>- Category of operations: Mixed - Delivery of goods & provision of services
|
InvoiceOptionCategoryOfOperationsHelp=Segons la situació, la menció apareixerà en la forma:<br>- Categoria d'operacions: Entrega de mercaderies<br>- Categoria d'operacions: Prestació de serveis<br>- Categoria d'operacions: Mixta - Entrega de mercaderies i Prestació de serveis
|
||||||
InvoiceOptionCategoryOfOperationsYes1=Sí, a sota del bloc d'adreces
|
InvoiceOptionCategoryOfOperationsYes1=Sí, a sota del bloc d'adreces
|
||||||
InvoiceOptionCategoryOfOperationsYes2=Sí, a la cantonada inferior esquerra
|
InvoiceOptionCategoryOfOperationsYes2=Sí, a la cantonada inferior esquerra
|
||||||
##### Proposals #####
|
##### Proposals #####
|
||||||
@ -1700,7 +1701,7 @@ SyslogSetup=Configuració del mòdul Syslog
|
|||||||
SyslogOutput=Sortida del log
|
SyslogOutput=Sortida del log
|
||||||
SyslogFacility=Facilitat
|
SyslogFacility=Facilitat
|
||||||
SyslogLevel=Nivell
|
SyslogLevel=Nivell
|
||||||
SyslogFilename=Nom i ruta de l'arxiu
|
SyslogFilename=Nom i camí del fitxer
|
||||||
YouCanUseDOL_DATA_ROOT=Podeu utilitzar DOL_DATA_ROOT/dolibarr.log per a un fitxer de registre al directori "documents" de Dolibarr. Podeu establir un camí diferent per a emmagatzemar aquest fitxer.
|
YouCanUseDOL_DATA_ROOT=Podeu utilitzar DOL_DATA_ROOT/dolibarr.log per a un fitxer de registre al directori "documents" de Dolibarr. Podeu establir un camí diferent per a emmagatzemar aquest fitxer.
|
||||||
ErrorUnknownSyslogConstant=La constant %s no és una constant syslog coneguda
|
ErrorUnknownSyslogConstant=La constant %s no és una constant syslog coneguda
|
||||||
OnlyWindowsLOG_USER=En Windows, només s'admetrà la funció LOG_USER
|
OnlyWindowsLOG_USER=En Windows, només s'admetrà la funció LOG_USER
|
||||||
@ -1766,7 +1767,7 @@ FCKeditorForNotePublic=WYSIWIG creació/edició del camp "notes públiques" d'el
|
|||||||
FCKeditorForNotePrivate=Creació/edició WYSIWIG del camp "notes privades" d'elements
|
FCKeditorForNotePrivate=Creació/edició WYSIWIG del camp "notes privades" d'elements
|
||||||
FCKeditorForCompany=Creació / edició de WYSIWIG de la descripció del camp d'elements (excepte productes / serveis)
|
FCKeditorForCompany=Creació / edició de WYSIWIG de la descripció del camp d'elements (excepte productes / serveis)
|
||||||
FCKeditorForProductDetails=Creació/edició WYSIWIG de descripció de productes o línies per objectes (línies de pressupostos, comandes, factures, etc...).
|
FCKeditorForProductDetails=Creació/edició WYSIWIG de descripció de productes o línies per objectes (línies de pressupostos, comandes, factures, etc...).
|
||||||
FCKeditorForProductDetails2=Warning: Using this option for this case is seriously not recommended as it can create problems with special characters and page formatting when building PDF files.
|
FCKeditorForProductDetails2=Avís: l'ús d'aquesta opció per a aquest cas no es recomana, ja que pot crear problemes amb caràcters especials i format de pàgina en crear fitxers PDF.
|
||||||
FCKeditorForMailing= Creació/edició WYSIWIG dels E-Mails
|
FCKeditorForMailing= Creació/edició WYSIWIG dels E-Mails
|
||||||
FCKeditorForUserSignature=Creació/edició WYSIWIG de la signatura de l'usuari
|
FCKeditorForUserSignature=Creació/edició WYSIWIG de la signatura de l'usuari
|
||||||
FCKeditorForMail=Edició/creació WYSIWIG per tots els e-mails (excepte Eines->eMailing)
|
FCKeditorForMail=Edició/creació WYSIWIG per tots els e-mails (excepte Eines->eMailing)
|
||||||
@ -1863,7 +1864,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=La disminució d'accions en POS no é
|
|||||||
CashDeskYouDidNotDisableStockDecease=No vau desactivar la disminució de l'estoc en fer una venda des del TPV. Per tant, es requereix un magatzem.
|
CashDeskYouDidNotDisableStockDecease=No vau desactivar la disminució de l'estoc en fer una venda des del TPV. Per tant, es requereix un magatzem.
|
||||||
CashDeskForceDecreaseStockLabel=S'ha forçat la disminució de l'estoc de productes per lots.
|
CashDeskForceDecreaseStockLabel=S'ha forçat la disminució de l'estoc de productes per lots.
|
||||||
CashDeskForceDecreaseStockDesc=Disminuïu primer les dates més antigues de consumir i vendre.
|
CashDeskForceDecreaseStockDesc=Disminuïu primer les dates més antigues de consumir i vendre.
|
||||||
CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13)
|
CashDeskReaderKeyCodeForEnter=Codi ASCII per "Enter" definit al lector de codis de barres (Exemple: 13)
|
||||||
##### Bookmark #####
|
##### Bookmark #####
|
||||||
BookmarkSetup=Configuració del mòdul Bookmark
|
BookmarkSetup=Configuració del mòdul Bookmark
|
||||||
BookmarkDesc=Aquest mòdul us permet gestionar els marcadors. També podeu afegir dreceres a totes les pàgines de Dolibarr o llocs web externs al menú de l'esquerra.
|
BookmarkDesc=Aquest mòdul us permet gestionar els marcadors. També podeu afegir dreceres a totes les pàgines de Dolibarr o llocs web externs al menú de l'esquerra.
|
||||||
@ -1934,7 +1935,7 @@ SalariesSetup=Configuració del mòdul de salaris
|
|||||||
SortOrder=Ordre de classificació
|
SortOrder=Ordre de classificació
|
||||||
Format=Format
|
Format=Format
|
||||||
TypePaymentDesc=0:Forma de pagament a client, 1:Forma de pagament a proveïdor, 2:Mateixa forma de pagament per clients i proveïdors
|
TypePaymentDesc=0:Forma de pagament a client, 1:Forma de pagament a proveïdor, 2:Mateixa forma de pagament per clients i proveïdors
|
||||||
IncludePath=Incloure ruta (que es defineix a la variable %s)
|
IncludePath=Inclou el camí (definit en la variable %s)
|
||||||
ExpenseReportsSetup=Configuració del mòdul Informe de Despeses
|
ExpenseReportsSetup=Configuració del mòdul Informe de Despeses
|
||||||
TemplatePDFExpenseReports=Plantilles de documents per a generar un document d’informe de despeses
|
TemplatePDFExpenseReports=Plantilles de documents per a generar un document d’informe de despeses
|
||||||
ExpenseReportsRulesSetup=Configurar mòdul Informes de despeses - Regles
|
ExpenseReportsRulesSetup=Configurar mòdul Informes de despeses - Regles
|
||||||
@ -1952,7 +1953,7 @@ BackupDumpWizard=Assistent per a crear el fitxer d'exportació de la base de dad
|
|||||||
BackupZipWizard=Assistent per a crear el directori d’arxiu de documents
|
BackupZipWizard=Assistent per a crear el directori d’arxiu de documents
|
||||||
SomethingMakeInstallFromWebNotPossible=No és possible la instal·lació de mòduls externs des de la interfície web per la següent raó:
|
SomethingMakeInstallFromWebNotPossible=No és possible la instal·lació de mòduls externs des de la interfície web per la següent raó:
|
||||||
SomethingMakeInstallFromWebNotPossible2=Per aquest motiu, el procés d'actualització descrit aquí és un procés manual que només un usuari privilegiat pot realitzar.
|
SomethingMakeInstallFromWebNotPossible2=Per aquest motiu, el procés d'actualització descrit aquí és un procés manual que només un usuari privilegiat pot realitzar.
|
||||||
InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature.
|
InstallModuleFromWebHasBeenDisabledContactUs=La instal·lació o desenvolupament de mòduls externs o llocs web dinàmics, des de l'aplicació, està actualment bloquejat per motius de seguretat. Si us plau, poseu-vos en contacte amb nosaltres si necessiteu habilitar aquesta funció.
|
||||||
InstallModuleFromWebHasBeenDisabledByFile=El vostre administrador ha desactivat la instal·lació del mòdul extern des de l'aplicació. Heu de demanar-li que suprimeixi el fitxer <strong> %s </strong> per a permetre aquesta funció.
|
InstallModuleFromWebHasBeenDisabledByFile=El vostre administrador ha desactivat la instal·lació del mòdul extern des de l'aplicació. Heu de demanar-li que suprimeixi el fitxer <strong> %s </strong> per a permetre aquesta funció.
|
||||||
ConfFileMustContainCustom=Per a instal·lar o crear un mòdul extern des de l'aplicació es necessita desar els fitxers del mòdul en el directori <strong>%s</strong>. Per a permetre a Dolibarr el processament d'aquest directori, has de configurar el teu <strong>conf/conf.php</strong> afegint aquestes 2 línies:<br><strong>$dolibarr_main_url_root_alt='/custom';</strong><br><strong>$dolibarr_main_document_root_alt='%s/custom';</strong>
|
ConfFileMustContainCustom=Per a instal·lar o crear un mòdul extern des de l'aplicació es necessita desar els fitxers del mòdul en el directori <strong>%s</strong>. Per a permetre a Dolibarr el processament d'aquest directori, has de configurar el teu <strong>conf/conf.php</strong> afegint aquestes 2 línies:<br><strong>$dolibarr_main_url_root_alt='/custom';</strong><br><strong>$dolibarr_main_document_root_alt='%s/custom';</strong>
|
||||||
HighlightLinesOnMouseHover=Remarca línies de la taula quan el ratolí passi per sobre
|
HighlightLinesOnMouseHover=Remarca línies de la taula quan el ratolí passi per sobre
|
||||||
@ -2050,7 +2051,7 @@ activateModuleDependNotSatisfied=El mòdul "%s" depèn del mòdul "%s", que falt
|
|||||||
CommandIsNotInsideAllowedCommands=L'ordre que intenteu executar no es troba a la llista de comandaments permesos definits al paràmetre <strong> $ dolibarr_main_restrict_os_commands </strong> al fitxer <strong> conf.php </strong>.
|
CommandIsNotInsideAllowedCommands=L'ordre que intenteu executar no es troba a la llista de comandaments permesos definits al paràmetre <strong> $ dolibarr_main_restrict_os_commands </strong> al fitxer <strong> conf.php </strong>.
|
||||||
LandingPage=Pàgina de destinació principal
|
LandingPage=Pàgina de destinació principal
|
||||||
SamePriceAlsoForSharedCompanies=Si utilitzeu un mòdul multicompany, amb l'opció "Preu únic", el preu també serà el mateix per a totes les empreses si es comparteixen productes entre entorns
|
SamePriceAlsoForSharedCompanies=Si utilitzeu un mòdul multicompany, amb l'opció "Preu únic", el preu també serà el mateix per a totes les empreses si es comparteixen productes entre entorns
|
||||||
ModuleEnabledAdminMustCheckRights=El mòdul s'ha activat. Els permisos per als mòduls activats només es donen als usuaris administradors. És possible que hagueu de concedir permisos a altres usuaris o grups manualment si cal.
|
ModuleEnabledAdminMustCheckRights=El mòdul s'ha activat. Els permisos per als mòduls activats només es donen als usuaris administradors. És possible que hàgiu de concedir permisos a altres usuaris o grups manualment si cal.
|
||||||
UserHasNoPermissions=Aquest usuari no té permisos definits
|
UserHasNoPermissions=Aquest usuari no té permisos definits
|
||||||
TypeCdr=Utilitzeu "Cap" si la data del termini de pagament és la data de la factura més un delta en dies (el delta és el camp "%s") <br> Utilitzeu "Al final del mes", si, després del delta, s'ha d'augmentar la data per a arribar al final del mes (+ opcional "%s" en dies) <br> Utilitzeu "Actual/Següent" perquè la data del termini de pagament sigui la primera N del mes després del delta (el delta és el camp "%s", N s'emmagatzema al camp "%s").
|
TypeCdr=Utilitzeu "Cap" si la data del termini de pagament és la data de la factura més un delta en dies (el delta és el camp "%s") <br> Utilitzeu "Al final del mes", si, després del delta, s'ha d'augmentar la data per a arribar al final del mes (+ opcional "%s" en dies) <br> Utilitzeu "Actual/Següent" perquè la data del termini de pagament sigui la primera N del mes després del delta (el delta és el camp "%s", N s'emmagatzema al camp "%s").
|
||||||
BaseCurrency=Moneda de referència de l'empresa (anar a la configuració de l'empresa per a canviar-ho)
|
BaseCurrency=Moneda de referència de l'empresa (anar a la configuració de l'empresa per a canviar-ho)
|
||||||
@ -2080,8 +2081,8 @@ RemoveSpecialChars=Elimina els caràcters especials
|
|||||||
COMPANY_AQUARIUM_CLEAN_REGEX=Filtre Regex per a netejar el valor (COMPANY_AQUARIUM_CLEAN_REGEX)
|
COMPANY_AQUARIUM_CLEAN_REGEX=Filtre Regex per a netejar el valor (COMPANY_AQUARIUM_CLEAN_REGEX)
|
||||||
COMPANY_DIGITARIA_CLEAN_REGEX=Filtre Regex al valor net (COMPANY_DIGITARIA_CLEAN_REGEX)
|
COMPANY_DIGITARIA_CLEAN_REGEX=Filtre Regex al valor net (COMPANY_DIGITARIA_CLEAN_REGEX)
|
||||||
COMPANY_DIGITARIA_UNIQUE_CODE=No es permet la duplicació
|
COMPANY_DIGITARIA_UNIQUE_CODE=No es permet la duplicació
|
||||||
RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers
|
RemoveSpecialWords=Netegeu certes paraules en generar subcomptes per a clients o proveïdors
|
||||||
RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word
|
RemoveSpecialWordsHelp=Especifiqueu les paraules a netejar abans de calcular el compte de client o proveïdor. Utilitzeu un ";" entre cada paraula
|
||||||
GDPRContact=Oficial de protecció de dades (PDO, privadesa de dades o contacte amb GDPR)
|
GDPRContact=Oficial de protecció de dades (PDO, privadesa de dades o contacte amb GDPR)
|
||||||
GDPRContactDesc=Si emmagatzemeu dades personals al vostre Sistema d'Informació, podeu anomenar aquí el contacte responsable del Reglament General de Protecció de Dades
|
GDPRContactDesc=Si emmagatzemeu dades personals al vostre Sistema d'Informació, podeu anomenar aquí el contacte responsable del Reglament General de Protecció de Dades
|
||||||
HelpOnTooltip=Ajuda a mostrar el text a la descripció d'informació
|
HelpOnTooltip=Ajuda a mostrar el text a la descripció d'informació
|
||||||
@ -2139,7 +2140,7 @@ CodeLastResult=Últim codi retornat
|
|||||||
NbOfEmailsInInbox=Nombre de correus electrònics en el directori font
|
NbOfEmailsInInbox=Nombre de correus electrònics en el directori font
|
||||||
LoadThirdPartyFromName=Carregueu la cerca de tercers al %s (només carrega)
|
LoadThirdPartyFromName=Carregueu la cerca de tercers al %s (només carrega)
|
||||||
LoadThirdPartyFromNameOrCreate=Carregueu la cerca de tercers a %s (crear si no es troba)
|
LoadThirdPartyFromNameOrCreate=Carregueu la cerca de tercers a %s (crear si no es troba)
|
||||||
LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found)
|
LoadContactFromEmailOrCreate=Carregueu el contacte cercant a %s (creeu-lo si no es troba)
|
||||||
AttachJoinedDocumentsToObject=Deseu els fitxers adjunts als documents d'objectes si es troba una referència d'un objecte al tema del correu electrònic.
|
AttachJoinedDocumentsToObject=Deseu els fitxers adjunts als documents d'objectes si es troba una referència d'un objecte al tema del correu electrònic.
|
||||||
WithDolTrackingID=Missatge d'una conversa iniciada per un primer correu electrònic enviat des de Dolibarr
|
WithDolTrackingID=Missatge d'una conversa iniciada per un primer correu electrònic enviat des de Dolibarr
|
||||||
WithoutDolTrackingID=Missatge d'una conversa iniciada per un primer correu electrònic NO enviat des de Dolibarr
|
WithoutDolTrackingID=Missatge d'una conversa iniciada per un primer correu electrònic NO enviat des de Dolibarr
|
||||||
@ -2243,12 +2244,12 @@ MailToPartnership=Associació
|
|||||||
AGENDA_EVENT_DEFAULT_STATUS=Estat de l'esdeveniment per defecte en crear un esdeveniment des del formulari
|
AGENDA_EVENT_DEFAULT_STATUS=Estat de l'esdeveniment per defecte en crear un esdeveniment des del formulari
|
||||||
YouShouldDisablePHPFunctions=Hauríeu de desactivar les funcions PHP
|
YouShouldDisablePHPFunctions=Hauríeu de desactivar les funcions PHP
|
||||||
IfCLINotRequiredYouShouldDisablePHPFunctions=Excepte si heu d'executar ordres del sistema en codi personalitzat, hauríeu de desactivar les funcions PHP
|
IfCLINotRequiredYouShouldDisablePHPFunctions=Excepte si heu d'executar ordres del sistema en codi personalitzat, hauríeu de desactivar les funcions PHP
|
||||||
PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions
|
PHPFunctionsRequiredForCLI=Per a propòsits d'intèrpret d'ordres (com ara una còpia de seguretat de treballs programats o executar un programa antivirus), heu de mantenir les funcions PHP
|
||||||
NoWritableFilesFoundIntoRootDir=No s'ha trobat cap fitxer ni directori d'escriptura dels programes comuns al directori arrel (Bo)
|
NoWritableFilesFoundIntoRootDir=No s'ha trobat cap fitxer ni directori d'escriptura dels programes comuns al directori arrel (Bo)
|
||||||
RecommendedValueIs=Recomanat: %s
|
RecommendedValueIs=Recomanat: %s
|
||||||
Recommended=Recomanada
|
Recommended=Recomanada
|
||||||
NotRecommended=No es recomana
|
NotRecommended=No es recomana
|
||||||
ARestrictedPath=Some restricted path for data files
|
ARestrictedPath=Algun camí restringit per als fitxers de dades
|
||||||
CheckForModuleUpdate=Comproveu si hi ha actualitzacions de mòduls externs
|
CheckForModuleUpdate=Comproveu si hi ha actualitzacions de mòduls externs
|
||||||
CheckForModuleUpdateHelp=Aquesta acció es connectarà amb editors de mòduls externs per a comprovar si hi ha una versió nova disponible.
|
CheckForModuleUpdateHelp=Aquesta acció es connectarà amb editors de mòduls externs per a comprovar si hi ha una versió nova disponible.
|
||||||
ModuleUpdateAvailable=Hi ha disponible una actualització
|
ModuleUpdateAvailable=Hi ha disponible una actualització
|
||||||
@ -2296,17 +2297,17 @@ LateWarningAfter=Avís "tard" després
|
|||||||
TemplateforBusinessCards=Plantilla per a una targeta de visita de diferents mides
|
TemplateforBusinessCards=Plantilla per a una targeta de visita de diferents mides
|
||||||
InventorySetup= Configuració de l'inventari
|
InventorySetup= Configuració de l'inventari
|
||||||
ExportUseLowMemoryMode=Utilitzeu un mode de memòria baixa
|
ExportUseLowMemoryMode=Utilitzeu un mode de memòria baixa
|
||||||
ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors.
|
ExportUseLowMemoryModeHelp=Utilitzeu el mode de memòria baixa per a generar el fitxer d'abocament (la compressió es fa a través d'una canonada en lloc d'entrar a la memòria PHP). Aquest mètode no permet comprovar que el fitxer estigui complet i no es pot informar del missatge d'error si falla. Utilitzeu-lo si no teniu prou errors de memòria.
|
||||||
|
|
||||||
ModuleWebhookName = Webhook
|
ModuleWebhookName = Webhook
|
||||||
ModuleWebhookDesc = Interfície per a capturar activadors de dolibarr i enviar-lo a un URL
|
ModuleWebhookDesc = Interfície per a capturar activadors de dolibarr i enviar dades de l'esdeveniment a un URL
|
||||||
WebhookSetup = Configuració del webhook
|
WebhookSetup = Configuració del webhook
|
||||||
Settings = Configuració
|
Settings = Configuració
|
||||||
WebhookSetupPage = Pàgina de configuració del webhook
|
WebhookSetupPage = Pàgina de configuració del webhook
|
||||||
ShowQuickAddLink=Mostra un botó per a afegir ràpidament un element al menú superior dret
|
ShowQuickAddLink=Mostra un botó per a afegir ràpidament un element al menú superior dret
|
||||||
|
|
||||||
HashForPing=Hash utilitzat per a fer ping
|
HashForPing=Hash utilitzat per a fer ping
|
||||||
ReadOnlyMode=És una instància en mode "Només lectura".
|
ReadOnlyMode=És una instància en mode «Només lectura».
|
||||||
DEBUGBAR_USE_LOG_FILE=Utilitzeu el fitxer <b> dolibarr.log </b> per a atrapar els registres
|
DEBUGBAR_USE_LOG_FILE=Utilitzeu el fitxer <b> dolibarr.log </b> per a atrapar els registres
|
||||||
UsingLogFileShowAllRecordOfSubrequestButIsSlower=Utilitzeu el fitxer dolibarr.log per a atrapar els registres en lloc de capturar la memòria en directe. Permet capturar tots els registres en lloc de només el registre del procés actual (per tant, inclosa la de les pàgines de subsol·licituds ajax), però farà que la vostra instància sigui molt molt lenta. No es recomana.
|
UsingLogFileShowAllRecordOfSubrequestButIsSlower=Utilitzeu el fitxer dolibarr.log per a atrapar els registres en lloc de capturar la memòria en directe. Permet capturar tots els registres en lloc de només el registre del procés actual (per tant, inclosa la de les pàgines de subsol·licituds ajax), però farà que la vostra instància sigui molt molt lenta. No es recomana.
|
||||||
FixedOrPercent=Fixat (utilitza la paraula clau "fixat") o per cent (utilitza la paraula clau "percentatge")
|
FixedOrPercent=Fixat (utilitza la paraula clau "fixat") o per cent (utilitza la paraula clau "percentatge")
|
||||||
@ -2341,34 +2342,37 @@ UsePassword=Utilitzeu una contrasenya
|
|||||||
UseOauth=Utilitzeu un testimoni OAUTH
|
UseOauth=Utilitzeu un testimoni OAUTH
|
||||||
Images=Imatges
|
Images=Imatges
|
||||||
MaxNumberOfImagesInGetPost=Nombre màxim d'imatges permeses en un camp HTML enviat en un formulari
|
MaxNumberOfImagesInGetPost=Nombre màxim d'imatges permeses en un camp HTML enviat en un formulari
|
||||||
MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month
|
MaxNumberOfPostOnPublicPagesByIP=Nombre màxim de publicacions a pàgines públiques amb la mateixa adreça IP en un mes
|
||||||
CIDLookupURL=El mòdul aporta un URL que pot utilitzar una eina externa per a obtenir el nom d'un tercer o contacte des del seu número de telèfon. L'URL a utilitzar és:
|
CIDLookupURL=El mòdul aporta un URL que pot utilitzar una eina externa per a obtenir el nom d'un tercer o contacte des del seu número de telèfon. L'URL a utilitzar és:
|
||||||
ScriptIsEmpty=El guió és buit
|
ScriptIsEmpty=El guió és buit
|
||||||
ShowHideTheNRequests=Mostra/amaga les sol·licituds SQL %s
|
ShowHideTheNRequests=Mostra/amaga les sol·licituds SQL %s
|
||||||
DefinedAPathForAntivirusCommandIntoSetup=Definiu una ruta per a un programa antivirus a <b> %s </b>
|
DefinedAPathForAntivirusCommandIntoSetup=Definiu un camí per a un programa antivirus a <b>%s</b>
|
||||||
TriggerCodes=Esdeveniments desencadenants
|
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.
|
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=If unchecked, the value can only be modified when object has a draft status
|
EditableWhenDraftOnly=Si no està marcat, el valor només es pot modificar quan l'objecte té un estat d'esborrany
|
||||||
CssOnEdit=Css a les pàgines d'edició
|
CssOnEdit=Css a les pàgines d'edició
|
||||||
CssOnView=Css a les pàgines de visualització
|
CssOnView=Css a les pàgines de visualització
|
||||||
CssOnList=Css a les pàgines de llistat
|
CssOnList=Css a les pàgines de llistat
|
||||||
HelpCssOnEditDesc=The Css used when editing the field.<br>Example: "minwiwdth100 maxwidth500 widthcentpercentminusx"
|
HelpCssOnEditDesc=El Css utilitzat en editar el camp.<br>Exemple: «minwiwdth100 maxwidth500 widthcentpercentminusx»
|
||||||
HelpCssOnViewDesc=The Css used when viewing the field.
|
HelpCssOnViewDesc=El Css utilitzat en visualitzar el camp.
|
||||||
HelpCssOnListDesc=The Css used when field is inside a list table.<br>Example: "tdoverflowmax200"
|
HelpCssOnListDesc=El Css utilitzat quan el camp es troba dins d'una taula de llista.<br>Exemple: «tdoverflowmax200»
|
||||||
RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions
|
RECEPTION_PDF_HIDE_ORDERED=Amaga la quantitat demanada als documents generats per a recepcions
|
||||||
MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions
|
MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Mostra el preu als documents generats per a recepcions
|
||||||
WarningDisabled=Avís desactivat
|
WarningDisabled=Avís desactivat
|
||||||
LimitsAndMitigation=Límits d'accés i mitigació
|
LimitsAndMitigation=Límits d'accés i mitigació
|
||||||
DesktopsOnly=Només escriptoris
|
DesktopsOnly=Només escriptoris
|
||||||
DesktopsAndSmartphones=Escriptoris i telèfons intel·ligents
|
DesktopsAndSmartphones=Escriptoris i telèfons intel·ligents
|
||||||
AllowOnlineSign=Permet la signatura en línia
|
AllowOnlineSign=Permet la signatura en línia
|
||||||
AllowExternalDownload=Allow external download (without login, using a shared link)
|
AllowExternalDownload=Permet la baixada externa (sense iniciar sessió, mitjançant un enllaç compartit)
|
||||||
DeadlineDayVATSubmission=Deadline day for vat submission on the next month
|
DeadlineDayVATSubmission=Dia límit per a la presentació del IVA el mes següent
|
||||||
MaxNumberOfAttachementOnForms=Nombre màxim de fitxers units en un formulari
|
MaxNumberOfAttachementOnForms=Nombre màxim de fitxers units en un formulari
|
||||||
IfDefinedUseAValueBeetween=If defined, use a value between %s and %s
|
IfDefinedUseAValueBeetween=Si està definit, utilitzeu un valor entre %s i %s
|
||||||
Reload=Recarregar
|
Reload=Recarregar
|
||||||
ConfirmReload=Confirmeu la recàrrega del mòdul
|
ConfirmReload=Confirmeu la recàrrega del mòdul
|
||||||
WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this.
|
WarningModuleHasChangedLastVersionCheckParameter=Avís: el mòdul %s ha establert un paràmetre per a comprovar la seva versió a cada accés a la pàgina. Aquesta és una pràctica dolenta i no permesa que pot fer que la pàgina per a administrar mòduls sigui inestable. Poseu-vos en contacte amb l'autor del mòdul per solucionar-ho.
|
||||||
WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation.
|
WarningModuleHasChangedSecurityCsrfParameter=Avís: el mòdul %s ha desactivat la seguretat CSRF de la vostra instància. Aquesta acció és sospitosa i és possible que la vostra instal·lació ja no estigui segura. Poseu-vos en contacte amb l'autor del mòdul per a obtenir una explicació.
|
||||||
EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails.
|
EMailsInGoingDesc=Els correus electrònics entrants són gestionats pel mòdul %s. Heu d'activar-lo i configurar-lo si necessiteu donar suport als correus electrònics entrants.
|
||||||
MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated).
|
MAIN_IMAP_USE_PHPIMAP=Utilitzeu la biblioteca PHP-IMAP per a IMAP en comptes de l'IMAP PHP natiu. Això també permet l'ús d'una connexió OAuth2 per IMAP (també s'ha d'activar el mòdul OAuth).
|
||||||
|
MAIN_CHECKBOX_LEFT_COLUMN=Mostra la columna per a la selecció de camps i línies a l'esquerra (a la dreta per defecte)
|
||||||
|
|
||||||
|
CSSPage=Estil CSS
|
||||||
|
|||||||
@ -88,7 +88,7 @@ SupplierInvoiceSentByEMail=Factura de proveïdor %s enviada per e-mail
|
|||||||
ShippingSentByEMail=Enviament %s enviat per email
|
ShippingSentByEMail=Enviament %s enviat per email
|
||||||
ShippingValidated= Enviament %s validat
|
ShippingValidated= Enviament %s validat
|
||||||
InterventionSentByEMail=Intervenció %s enviada per e-mail
|
InterventionSentByEMail=Intervenció %s enviada per e-mail
|
||||||
ProjectSentByEMail=Project %s sent by email
|
ProjectSentByEMail=Projecte %s enviat per correu electrònic
|
||||||
ProposalDeleted=Pressupost esborrat
|
ProposalDeleted=Pressupost esborrat
|
||||||
OrderDeleted=Comanda esborrada
|
OrderDeleted=Comanda esborrada
|
||||||
InvoiceDeleted=Factura esborrada
|
InvoiceDeleted=Factura esborrada
|
||||||
@ -102,7 +102,7 @@ PRODUCT_DELETEInDolibarr=Producte %s eliminat
|
|||||||
HOLIDAY_CREATEInDolibarr=S'ha creat la sol·licitud de permís %s
|
HOLIDAY_CREATEInDolibarr=S'ha creat la sol·licitud de permís %s
|
||||||
HOLIDAY_MODIFYInDolibarr=S'ha modificat la sol·licitud de permís %s
|
HOLIDAY_MODIFYInDolibarr=S'ha modificat la sol·licitud de permís %s
|
||||||
HOLIDAY_APPROVEInDolibarr=Sol·licitud de dies lliures %s aprovada
|
HOLIDAY_APPROVEInDolibarr=Sol·licitud de dies lliures %s aprovada
|
||||||
HOLIDAY_VALIDATEInDolibarr=La sol·licitud d’excedència %s validada
|
HOLIDAY_VALIDATEInDolibarr=Sol·licitud de dies lliures %s validada
|
||||||
HOLIDAY_DELETEInDolibarr=S'ha suprimit la sol·licitud de permís %s
|
HOLIDAY_DELETEInDolibarr=S'ha suprimit la sol·licitud de permís %s
|
||||||
EXPENSE_REPORT_CREATEInDolibarr=Creat l'informe de despeses %s
|
EXPENSE_REPORT_CREATEInDolibarr=Creat l'informe de despeses %s
|
||||||
EXPENSE_REPORT_VALIDATEInDolibarr=S'ha validat l'informe de despeses %s
|
EXPENSE_REPORT_VALIDATEInDolibarr=S'ha validat l'informe de despeses %s
|
||||||
@ -152,7 +152,7 @@ ExtSitesEnableThisTool=Mostra calendaris externs (definit a la configuració glo
|
|||||||
ExtSitesNbOfAgenda=Nombre de calendaris
|
ExtSitesNbOfAgenda=Nombre de calendaris
|
||||||
AgendaExtNb=Calendari núm. %s
|
AgendaExtNb=Calendari núm. %s
|
||||||
ExtSiteUrlAgenda=URL per a accedir al fitxer .ical
|
ExtSiteUrlAgenda=URL per a accedir al fitxer .ical
|
||||||
ExtSiteNoLabel=Sense descripció
|
ExtSiteNoLabel=Sense nom
|
||||||
VisibleTimeRange=Rang de temps visible
|
VisibleTimeRange=Rang de temps visible
|
||||||
VisibleDaysRange=Rang de dies visible
|
VisibleDaysRange=Rang de dies visible
|
||||||
AddEvent=Crear esdeveniment
|
AddEvent=Crear esdeveniment
|
||||||
|
|||||||
@ -25,7 +25,7 @@ InitialBankBalance=Saldo inicial
|
|||||||
EndBankBalance=Saldo final
|
EndBankBalance=Saldo final
|
||||||
CurrentBalance=Saldo actual
|
CurrentBalance=Saldo actual
|
||||||
FutureBalance=Saldo previst
|
FutureBalance=Saldo previst
|
||||||
ShowAllTimeBalance=Mostar balanç des de principi
|
ShowAllTimeBalance=Mostra el saldo des de l'inici
|
||||||
AllTime=Des del principi
|
AllTime=Des del principi
|
||||||
Reconciliation=Conciliació
|
Reconciliation=Conciliació
|
||||||
RIB=Compte bancari
|
RIB=Compte bancari
|
||||||
@ -144,7 +144,7 @@ AllAccounts=Tots els comptes bancaris i en efectiu
|
|||||||
BackToAccount=Tornar al compte
|
BackToAccount=Tornar al compte
|
||||||
ShowAllAccounts=Mostra per a tots els comptes
|
ShowAllAccounts=Mostra per a tots els comptes
|
||||||
FutureTransaction=Transacció futura. No és possible conciliar.
|
FutureTransaction=Transacció futura. No és possible conciliar.
|
||||||
SelectChequeTransactionAndGenerate=Seleccioneu / filtreu els xecs que s’inclouran al rebut del dipòsit de xecs. A continuació, feu clic a "Crea".
|
SelectChequeTransactionAndGenerate=Seleccioneu/filtreu els xecs que s'han d'incloure a la remesa de xecs. A continuació, feu clic a «Crea».
|
||||||
InputReceiptNumber=Selecciona l'estat del compte bancari relacionat amb la conciliació. Utilitza un valor numèric que es pugui ordenar: AAAAMM o AAAAMMDD
|
InputReceiptNumber=Selecciona l'estat del compte bancari relacionat amb la conciliació. Utilitza un valor numèric que es pugui ordenar: AAAAMM o AAAAMMDD
|
||||||
EventualyAddCategory=Finalment, especifiqueu una categoria on classificar els registres
|
EventualyAddCategory=Finalment, especifiqueu una categoria on classificar els registres
|
||||||
ToConciliate=A conciliar?
|
ToConciliate=A conciliar?
|
||||||
|
|||||||
@ -13,7 +13,7 @@ BillsStatistics=Estadístiques factures a clients
|
|||||||
BillsStatisticsSuppliers=Estadístiques de Factures de proveïdors
|
BillsStatisticsSuppliers=Estadístiques de Factures de proveïdors
|
||||||
DisabledBecauseDispatchedInBookkeeping=Desactivat perquè la factura ja s'ha comptabilitzat
|
DisabledBecauseDispatchedInBookkeeping=Desactivat perquè la factura ja s'ha comptabilitzat
|
||||||
DisabledBecauseNotLastInvoice=Desactivat perquè la factura no es pot esborrar. Algunes factures s'han registrat després d'aquesta i això crearia espais buits al comptador.
|
DisabledBecauseNotLastInvoice=Desactivat perquè la factura no es pot esborrar. Algunes factures s'han registrat després d'aquesta i això crearia espais buits al comptador.
|
||||||
DisabledBecauseNotLastSituationInvoice=Disabled because invoice is not erasable. This invoice is not the last one in situation invoice cycle.
|
DisabledBecauseNotLastSituationInvoice=S'ha desactivat perquè la factura no es pot esborrar. Aquesta factura no és l'última del cicle de facturació de situació.
|
||||||
DisabledBecauseNotErasable=S'ha desactivat perquè no es pot esborrar
|
DisabledBecauseNotErasable=S'ha desactivat perquè no es pot esborrar
|
||||||
InvoiceStandard=Factura estàndard
|
InvoiceStandard=Factura estàndard
|
||||||
InvoiceStandardAsk=Factura estàndard
|
InvoiceStandardAsk=Factura estàndard
|
||||||
@ -99,12 +99,12 @@ PaymentAmount=Import pagament
|
|||||||
PaymentHigherThanReminderToPay=Pagament superior a la resta a pagar
|
PaymentHigherThanReminderToPay=Pagament superior a la resta a pagar
|
||||||
HelpPaymentHigherThanReminderToPay=Atenció, l'import del pagament d'una o més factures és superior a l'import pendent de pagar. <br> Editeu la vostra entrada; en cas contrari, confirmeu i considereu la possibilitat de crear un abonament per l'excés rebut per cada factura pagada de més.
|
HelpPaymentHigherThanReminderToPay=Atenció, l'import del pagament d'una o més factures és superior a l'import pendent de pagar. <br> Editeu la vostra entrada; en cas contrari, confirmeu i considereu la possibilitat de crear un abonament per l'excés rebut per cada factura pagada de més.
|
||||||
HelpPaymentHigherThanReminderToPaySupplier=Atenció, l'import del pagament d'una o més factures és superior a l'import pendent de pagar.<br>Editeu l'entrada, en cas contrari, confirmeu i considereu la possibilitat de crear un abonament per l'excés pagat per cada factura pagada de més.
|
HelpPaymentHigherThanReminderToPaySupplier=Atenció, l'import del pagament d'una o més factures és superior a l'import pendent de pagar.<br>Editeu l'entrada, en cas contrari, confirmeu i considereu la possibilitat de crear un abonament per l'excés pagat per cada factura pagada de més.
|
||||||
ClassifyPaid=Classifica "Pagat"
|
ClassifyPaid=Marca «Pagat»
|
||||||
ClassifyUnPaid=Classifica "sense pagar"
|
ClassifyUnPaid=Marca «No pagat»
|
||||||
ClassifyPaidPartially=Classifica "Pagat parcialment"
|
ClassifyPaidPartially=Marca «Pagat parcialment»
|
||||||
ClassifyCanceled=Classifica "Abandonat"
|
ClassifyCanceled=Marca «Abandonats»
|
||||||
ClassifyClosed=Classifica "Tancat"
|
ClassifyClosed=Marca «Tancat»
|
||||||
ClassifyUnBilled=Classifiqueu 'facturar'
|
ClassifyUnBilled=Marca «No facturat»
|
||||||
CreateBill=Crear factura
|
CreateBill=Crear factura
|
||||||
CreateCreditNote=Crear abonament
|
CreateCreditNote=Crear abonament
|
||||||
AddBill=Crear factura o abonament
|
AddBill=Crear factura o abonament
|
||||||
@ -131,7 +131,7 @@ BillStatusPaidBackOrConverted=Nota de crèdit reembossada o marcada com a crèdi
|
|||||||
BillStatusConverted=Pagada (llesta per a utilitzar-se en la factura final)
|
BillStatusConverted=Pagada (llesta per a utilitzar-se en la factura final)
|
||||||
BillStatusCanceled=Abandonada
|
BillStatusCanceled=Abandonada
|
||||||
BillStatusValidated=Validada (a pagar)
|
BillStatusValidated=Validada (a pagar)
|
||||||
BillStatusStarted=Pagada parcialment
|
BillStatusStarted=Començat
|
||||||
BillStatusNotPaid=Pendent
|
BillStatusNotPaid=Pendent
|
||||||
BillStatusNotRefunded=No reemborsat
|
BillStatusNotRefunded=No reemborsat
|
||||||
BillStatusClosedUnpaid=Tancada (Pendent)
|
BillStatusClosedUnpaid=Tancada (Pendent)
|
||||||
@ -143,7 +143,7 @@ Refunded=Reemborsada
|
|||||||
BillShortStatusConverted=Tractada
|
BillShortStatusConverted=Tractada
|
||||||
BillShortStatusCanceled=Abandonada
|
BillShortStatusCanceled=Abandonada
|
||||||
BillShortStatusValidated=Validada
|
BillShortStatusValidated=Validada
|
||||||
BillShortStatusStarted=Començada
|
BillShortStatusStarted=Començat
|
||||||
BillShortStatusNotPaid=Pendent
|
BillShortStatusNotPaid=Pendent
|
||||||
BillShortStatusNotRefunded=No reemborsat
|
BillShortStatusNotRefunded=No reemborsat
|
||||||
BillShortStatusClosedUnpaid=Tancada
|
BillShortStatusClosedUnpaid=Tancada
|
||||||
@ -172,7 +172,7 @@ NewBill=Factura nova
|
|||||||
LastBills=Últimes %s factures
|
LastBills=Últimes %s factures
|
||||||
LatestTemplateInvoices=Últimes %s plantilles de factura
|
LatestTemplateInvoices=Últimes %s plantilles de factura
|
||||||
LatestCustomerTemplateInvoices=Últimes %s plantilles de factures de client
|
LatestCustomerTemplateInvoices=Últimes %s plantilles de factures de client
|
||||||
LatestSupplierTemplateInvoices=Darreres %s plantilles de factures de proveïdor
|
LatestSupplierTemplateInvoices=Últimes %s plantilles de factures de proveïdor
|
||||||
LastCustomersBills=Últimes %s factures de client
|
LastCustomersBills=Últimes %s factures de client
|
||||||
LastSuppliersBills=Últimes %s factures de proveïdor
|
LastSuppliersBills=Últimes %s factures de proveïdor
|
||||||
AllBills=Totes les factures
|
AllBills=Totes les factures
|
||||||
@ -188,7 +188,7 @@ ConfirmValidateBill=Està segur de voler validar aquesta factura amb la referèn
|
|||||||
ConfirmUnvalidateBill=Està segur de voler tornar la factura <b>%s</b> a l'estat esborrany?
|
ConfirmUnvalidateBill=Està segur de voler tornar la factura <b>%s</b> a l'estat esborrany?
|
||||||
ConfirmClassifyPaidBill=Està segur de voler classificar la factura <b>%s</b> com pagada?
|
ConfirmClassifyPaidBill=Està segur de voler classificar la factura <b>%s</b> com pagada?
|
||||||
ConfirmCancelBill=Està segur de voler anul·lar la factura <b>%s</b>?
|
ConfirmCancelBill=Està segur de voler anul·lar la factura <b>%s</b>?
|
||||||
ConfirmCancelBillQuestion=Per quina raó vols classificar aquesta factura com 'abandonada'?
|
ConfirmCancelBillQuestion=Per què voleu marcar aquesta factura com a «abandonada»?
|
||||||
ConfirmClassifyPaidPartially=Està segur de voler classificar la factura <b>%s</b> com pagada?
|
ConfirmClassifyPaidPartially=Està segur de voler classificar la factura <b>%s</b> com pagada?
|
||||||
ConfirmClassifyPaidPartiallyQuestion=Aquesta factura no s'ha pagat completament. Quin és el motiu de tancament d'aquesta factura?
|
ConfirmClassifyPaidPartiallyQuestion=Aquesta factura no s'ha pagat completament. Quin és el motiu de tancament d'aquesta factura?
|
||||||
ConfirmClassifyPaidPartiallyReasonAvoir=La resta a pagar <b>(%s %s)</b> és un descompte atorgat perquè el pagament es va fer abans de temps. Regularitzaré l'IVA d'aquest descompte amb un abonament.
|
ConfirmClassifyPaidPartiallyReasonAvoir=La resta a pagar <b>(%s %s)</b> és un descompte atorgat perquè el pagament es va fer abans de temps. Regularitzaré l'IVA d'aquest descompte amb un abonament.
|
||||||
@ -196,7 +196,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
|
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.
|
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
|
ConfirmClassifyPaidPartiallyReasonBadCustomer=Client morós
|
||||||
ConfirmClassifyPaidPartiallyReasonBankCharge=Deducció per banc (comissions bancàries intermediaris)
|
ConfirmClassifyPaidPartiallyReasonBankCharge=Deducció per banc (comissions bancàries)
|
||||||
ConfirmClassifyPaidPartiallyReasonProductReturned=Productes retornats en part
|
ConfirmClassifyPaidPartiallyReasonProductReturned=Productes retornats en part
|
||||||
ConfirmClassifyPaidPartiallyReasonOther=D'altra raó
|
ConfirmClassifyPaidPartiallyReasonOther=D'altra raó
|
||||||
ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Aquesta opció és possible si la vostra factura ha rebut els comentaris adequats. (Exemple «Només l'impost corresponent al preu realment pagat dona dret a la deducció»)
|
ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Aquesta opció és possible si la vostra factura ha rebut els comentaris adequats. (Exemple «Només l'impost corresponent al preu realment pagat dona dret a la deducció»)
|
||||||
@ -204,7 +204,7 @@ ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=En alguns països, aquesta opc
|
|||||||
ConfirmClassifyPaidPartiallyReasonAvoirDesc=Aquesta elecció és l'elecció que s'ha de prendre si les altres no són aplicables
|
ConfirmClassifyPaidPartiallyReasonAvoirDesc=Aquesta elecció és l'elecció que s'ha de prendre si les altres no són aplicables
|
||||||
ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Un <b> client morós </b> és un client que es nega a pagar el seu deute.
|
ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Un <b> client morós </b> és un client que es nega a pagar el seu deute.
|
||||||
ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Aquesta elecció és possible si el cas de pagament incomplet és arran d'una devolució de part dels productes
|
ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Aquesta elecció és possible si el cas de pagament incomplet és arran d'una devolució de part dels productes
|
||||||
ConfirmClassifyPaidPartiallyReasonBankChargeDesc=L'import no pagat és <b> comissions bancàries intermediaris </b> , deduïdes directament de l'import correcte <b> </b> pagat pel Client.
|
ConfirmClassifyPaidPartiallyReasonBankChargeDesc=L'import no pagat son <b>comissions bancàries</b>, deduïdes directament de <b>l'import correcte</b> pagat pel Client.
|
||||||
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.
|
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.
|
||||||
ConfirmClassifyAbandonReasonOther=Altres
|
ConfirmClassifyAbandonReasonOther=Altres
|
||||||
ConfirmClassifyAbandonReasonOtherDesc=Aquesta elecció serà per a qualsevol altre cas. Per exemple arran de la intenció de crear una factura rectificativa.
|
ConfirmClassifyAbandonReasonOtherDesc=Aquesta elecció serà per a qualsevol altre cas. Per exemple arran de la intenció de crear una factura rectificativa.
|
||||||
@ -275,7 +275,7 @@ DatePointOfTax=Punt d'impostos
|
|||||||
NoInvoice=Cap factura
|
NoInvoice=Cap factura
|
||||||
NoOpenInvoice=No hi ha factura oberta
|
NoOpenInvoice=No hi ha factura oberta
|
||||||
NbOfOpenInvoices=Nombre de factures obertes
|
NbOfOpenInvoices=Nombre de factures obertes
|
||||||
ClassifyBill=Classifica la factura
|
ClassifyBill=Marca la factura
|
||||||
SupplierBillsToPay=Factures de proveïdors pendents de pagament
|
SupplierBillsToPay=Factures de proveïdors pendents de pagament
|
||||||
CustomerBillsUnpaid=Factures de client pendents de cobrament
|
CustomerBillsUnpaid=Factures de client pendents de cobrament
|
||||||
NonPercuRecuperable=No percebut recuperable
|
NonPercuRecuperable=No percebut recuperable
|
||||||
@ -535,12 +535,12 @@ CantRemovePaymentSalaryPaid=No es pot eliminar el pagament perquè el salari est
|
|||||||
ExpectedToPay=Esperant el pagament
|
ExpectedToPay=Esperant el pagament
|
||||||
CantRemoveConciliatedPayment=No es pot eliminar el pagament reconciliat
|
CantRemoveConciliatedPayment=No es pot eliminar el pagament reconciliat
|
||||||
PayedByThisPayment=Pagada per aquest pagament
|
PayedByThisPayment=Pagada per aquest pagament
|
||||||
ClosePaidInvoicesAutomatically=Classifiqueu automàticament totes les factures estàndard, de pagament inicial o de reemplaçament com a "Pagades" quan el pagament es realitzi completament.
|
ClosePaidInvoicesAutomatically=Marca automàticament totes les factures estàndard, de pagament inicial o de substitució com a «Pagades» quan el pagament s'hagi fet completament.
|
||||||
ClosePaidCreditNotesAutomatically=Classifiqueu automàticament totes les notes de crèdit com a "Pagades" quan es faci la devolució íntegra.
|
ClosePaidCreditNotesAutomatically=Marca automàticament totes les notes de crèdit com a «Pagades» quan el reemborsament s'hagi fet completament.
|
||||||
ClosePaidContributionsAutomatically=Classifiqueu automàticament totes les contribucions socials o fiscals com a "Pagades" quan el pagament es realitzi íntegrament.
|
ClosePaidContributionsAutomatically=Marca automàticament totes les cotitzacions socials o fiscals com a "Pagades" quan el pagament s'hagi fet íntegrament.
|
||||||
ClosePaidVATAutomatically=Classifica automàticament la declaració d'IVA com a "Pagada" quan el pagament es realitzi completament.
|
ClosePaidVATAutomatically=Marca automàticament la declaració d'IVA com a «Pagada» quan el pagament s'hagi fet completament.
|
||||||
ClosePaidSalaryAutomatically=Classifiqueu automàticament el salari com a "Pagat" quan el pagament es faci completament.
|
ClosePaidSalaryAutomatically=Marca automàticament el sou com a «Pagat» quan el pagament s'hagi fet completament.
|
||||||
AllCompletelyPayedInvoiceWillBeClosed=Totes les factures no pendents de pagament es tancaran automàticament amb l'estat "Pagat".
|
AllCompletelyPayedInvoiceWillBeClosed=Totes les factures sense pagaments pendents es tancaran automàticament amb l'estat «Pagat».
|
||||||
ToMakePayment=Pagar
|
ToMakePayment=Pagar
|
||||||
ToMakePaymentBack=Reemborsar
|
ToMakePaymentBack=Reemborsar
|
||||||
ListOfYourUnpaidInvoices=Llistat de factures impagades
|
ListOfYourUnpaidInvoices=Llistat de factures impagades
|
||||||
@ -555,7 +555,7 @@ PDFCrevetteDescription=Plantilla Crevette per factures PDF. Una plantilla de fac
|
|||||||
TerreNumRefModelDesc1=Retorna el número en el format %syymm-nnnn per a les factures estàndard i %syymm-nnnn per a les notes de crèdit on aa és any, mm és mes i nnnn és un número d’increment automàtic seqüencial sense interrupció i sense retorn a 0
|
TerreNumRefModelDesc1=Retorna el número en el format %syymm-nnnn per a les factures estàndard i %syymm-nnnn per a les notes de crèdit on aa és any, mm és mes i nnnn és un número d’increment automàtic seqüencial sense interrupció i sense retorn a 0
|
||||||
MarsNumRefModelDesc1=Número de devolució en el format %syymm-nnnn per a factures estàndard, %syymm-nnnn per a factures de substitució, %syymm-nnnn per a factures d’avançament i %syymm notes i any sense descans i sense retorn a 0
|
MarsNumRefModelDesc1=Número de devolució en el format %syymm-nnnn per a factures estàndard, %syymm-nnnn per a factures de substitució, %syymm-nnnn per a factures d’avançament i %syymm notes i any sense descans i sense retorn a 0
|
||||||
TerreNumRefModelError=Ja existeix una factura que comença amb $syymm i no és compatible amb aquest model de seqüència. Elimineu-la o canvieu-li el nom per a activar aquest mòdul.
|
TerreNumRefModelError=Ja existeix una factura que comença amb $syymm i no és compatible amb aquest model de seqüència. Elimineu-la o canvieu-li el nom per a activar aquest mòdul.
|
||||||
CactusNumRefModelDesc1=Número de devolució en el format %syymm-nnnn per a les factures estàndard, %syymm-nnnn per a les notes de crèdit i %syymm-nnnn per a les factures d’avançament en què yy és any, mm és mes i nnnn és un número que no ha de retorn automàtic 0
|
CactusNumRefModelDesc1=Retorna un número en el format %syymm-nnnn per a factures estàndard, %syymm-nnnn per a devolucions i %syymm-nnnn per a factures de bestreta on yy és l'any, mm és el mes i nnnn és un número seqüencial auto-incrementat sense ruptura ni retorn a 0
|
||||||
EarlyClosingReason=Motiu de tancament anticipat
|
EarlyClosingReason=Motiu de tancament anticipat
|
||||||
EarlyClosingComment=Nota de tancament anticipat
|
EarlyClosingComment=Nota de tancament anticipat
|
||||||
##### Types de contacts #####
|
##### Types de contacts #####
|
||||||
@ -626,8 +626,8 @@ PaymentRegisteredAndInvoiceSetToPaid=Pagament registrat i factura %s configurada
|
|||||||
SendEmailsRemindersOnInvoiceDueDate=Envieu un recordatori per correu electrònic per a les factures no pagades
|
SendEmailsRemindersOnInvoiceDueDate=Envieu un recordatori per correu electrònic per a les factures no pagades
|
||||||
MakePaymentAndClassifyPayed=Registre de pagament
|
MakePaymentAndClassifyPayed=Registre de pagament
|
||||||
BulkPaymentNotPossibleForInvoice=El pagament massiu no és possible per a la factura %s (tipus o estat incorrecte)
|
BulkPaymentNotPossibleForInvoice=El pagament massiu no és possible per a la factura %s (tipus o estat incorrecte)
|
||||||
MentionVATDebitOptionIsOn=Option to pay tax based on debits
|
MentionVATDebitOptionIsOn=Opció de pagar impostos en funció de dèbits
|
||||||
MentionCategoryOfOperations=Categoria d'operacions
|
MentionCategoryOfOperations=Categoria d'operacions
|
||||||
MentionCategoryOfOperations0=Lliurament de mercaderies
|
MentionCategoryOfOperations0=Lliurament de mercaderies
|
||||||
MentionCategoryOfOperations1=Prestació de serveis
|
MentionCategoryOfOperations1=Prestació de serveis
|
||||||
MentionCategoryOfOperations2=Mixed - Delivery of goods & provision of services
|
MentionCategoryOfOperations2=Mixt: lliurament de béns i prestació de serveis
|
||||||
|
|||||||
@ -18,13 +18,13 @@ BoxLastActions=Últimes accions
|
|||||||
BoxLastContracts=Últims contractes
|
BoxLastContracts=Últims contractes
|
||||||
BoxLastContacts=Últims contactes/adreces
|
BoxLastContacts=Últims contactes/adreces
|
||||||
BoxLastMembers=Últims socis
|
BoxLastMembers=Últims socis
|
||||||
BoxLastModifiedMembers=Darrers membres modificats
|
BoxLastModifiedMembers=Últims socis modificats
|
||||||
BoxLastMembersSubscriptions=Últimes subscripcions de membres
|
BoxLastMembersSubscriptions=Últimes subscripcions de socis
|
||||||
BoxFicheInter=Últimes intervencions
|
BoxFicheInter=Últimes intervencions
|
||||||
BoxCurrentAccounts=Balanç de comptes oberts
|
BoxCurrentAccounts=Balanç de comptes oberts
|
||||||
BoxTitleMemberNextBirthdays=Aniversaris d'aquest mes (membres)
|
BoxTitleMemberNextBirthdays=Aniversaris d'aquest mes (membres)
|
||||||
BoxTitleMembersByType=Membres per tipus i estat
|
BoxTitleMembersByType=Membres per tipus i estat
|
||||||
BoxTitleMembersByTags=Members by tags and status
|
BoxTitleMembersByTags=Socis per etiquetes i estat
|
||||||
BoxTitleMembersSubscriptionsByYear=Subscripcions de membres per any
|
BoxTitleMembersSubscriptionsByYear=Subscripcions de membres per any
|
||||||
BoxTitleLastRssInfos=Últimes %s notícies de %s
|
BoxTitleLastRssInfos=Últimes %s notícies de %s
|
||||||
BoxTitleLastProducts=Productes / Serveis: últims %s modificats
|
BoxTitleLastProducts=Productes / Serveis: últims %s modificats
|
||||||
@ -33,8 +33,8 @@ BoxTitleLastSuppliers=Últims %s proveïdors registrats
|
|||||||
BoxTitleLastModifiedSuppliers=Proveïdors: últims %s modificats
|
BoxTitleLastModifiedSuppliers=Proveïdors: últims %s modificats
|
||||||
BoxTitleLastModifiedCustomers=Clients: últims %s modificats
|
BoxTitleLastModifiedCustomers=Clients: últims %s modificats
|
||||||
BoxTitleLastCustomersOrProspects=Últims %s clients o clients potencials
|
BoxTitleLastCustomersOrProspects=Últims %s clients o clients potencials
|
||||||
BoxTitleLastCustomerBills=Darreres %s factures a client modificades
|
BoxTitleLastCustomerBills=Últimes %s factures de client modificades
|
||||||
BoxTitleLastSupplierBills=Darreres %s factures de proveïdor modificades
|
BoxTitleLastSupplierBills=Últimes %s factures de proveïdor modificades
|
||||||
BoxTitleLastModifiedProspects=Clients Potencials: últims %s modificats
|
BoxTitleLastModifiedProspects=Clients Potencials: últims %s modificats
|
||||||
BoxTitleLastModifiedMembers=Últims %s socis
|
BoxTitleLastModifiedMembers=Últims %s socis
|
||||||
BoxTitleLastFicheInter=Últimes %s intervencions modificades
|
BoxTitleLastFicheInter=Últimes %s intervencions modificades
|
||||||
@ -48,12 +48,12 @@ BoxOldestExpiredServices=Serveis antics expirats
|
|||||||
BoxOldestActions=Els esdeveniments més antics per a fer
|
BoxOldestActions=Els esdeveniments més antics per a fer
|
||||||
BoxLastExpiredServices=Últims %s contactes amb serveis actius expirats
|
BoxLastExpiredServices=Últims %s contactes amb serveis actius expirats
|
||||||
BoxTitleLastActionsToDo=Últimes %s accions a fer
|
BoxTitleLastActionsToDo=Últimes %s accions a fer
|
||||||
BoxTitleOldestActionsToDo=Oldest %s events to do, not completed
|
BoxTitleOldestActionsToDo=Els esdeveniments %s més antics per a fer, no s'han completat
|
||||||
BoxTitleLastContracts=Últims contractes %s que es van modificar
|
BoxTitleLastContracts=Últims %s contractes que s'han modificat
|
||||||
BoxTitleLastModifiedDonations=Últimes donacions %s que es van modificar
|
BoxTitleLastModifiedDonations=Últimes %s donacions que s'han modificat
|
||||||
BoxTitleLastModifiedExpenses=Últims informes de despeses %s que es van modificar
|
BoxTitleLastModifiedExpenses=Últims %s informes de despeses que s'han modificat
|
||||||
BoxTitleLatestModifiedBoms=Últims BOMs %s que es van modificar
|
BoxTitleLatestModifiedBoms=Últims %s BOMs que s'han modificat
|
||||||
BoxTitleLatestModifiedMos=Últimes comandes de fabricació %s que es van modificar
|
BoxTitleLatestModifiedMos=Últimes %s ordres de fabricació modificades
|
||||||
BoxTitleLastOutstandingBillReached=Clients que han superat el màxim pendent
|
BoxTitleLastOutstandingBillReached=Clients que han superat el màxim pendent
|
||||||
BoxGlobalActivity=Activitat global
|
BoxGlobalActivity=Activitat global
|
||||||
BoxGoodCustomers=Bons clients
|
BoxGoodCustomers=Bons clients
|
||||||
@ -61,7 +61,7 @@ BoxTitleGoodCustomers=% bons clients
|
|||||||
BoxScheduledJobs=Tasques programades
|
BoxScheduledJobs=Tasques programades
|
||||||
BoxTitleFunnelOfProspection=Oportunitat embut
|
BoxTitleFunnelOfProspection=Oportunitat embut
|
||||||
FailedToRefreshDataInfoNotUpToDate=No s'ha pogut actualitzar el flux RSS. Última data d'actualització amb èxit: %s
|
FailedToRefreshDataInfoNotUpToDate=No s'ha pogut actualitzar el flux RSS. Última data d'actualització amb èxit: %s
|
||||||
LastRefreshDate=Última data que es va refrescar
|
LastRefreshDate=Última data d'actualització
|
||||||
NoRecordedBookmarks=No hi ha marcadors personals.
|
NoRecordedBookmarks=No hi ha marcadors personals.
|
||||||
ClickToAdd=Feu clic aquí per a afegir.
|
ClickToAdd=Feu clic aquí per a afegir.
|
||||||
NoRecordedCustomers=Cap client registrat
|
NoRecordedCustomers=Cap client registrat
|
||||||
@ -94,8 +94,8 @@ BoxTitleLatestModifiedSupplierOrders=Comandes a Proveïdor: últimes %s modifica
|
|||||||
BoxTitleLastModifiedCustomerBills=Factures del client: últimes %s modificades
|
BoxTitleLastModifiedCustomerBills=Factures del client: últimes %s modificades
|
||||||
BoxTitleLastModifiedCustomerOrders=Comandes de venda: últimes %s modificades
|
BoxTitleLastModifiedCustomerOrders=Comandes de venda: últimes %s modificades
|
||||||
BoxTitleLastModifiedPropals=Últims %s pressupostos modificats
|
BoxTitleLastModifiedPropals=Últims %s pressupostos modificats
|
||||||
BoxTitleLatestModifiedJobPositions=Últims llocs de treball modificats %s
|
BoxTitleLatestModifiedJobPositions=Últims %s llocs de treball modificats
|
||||||
BoxTitleLatestModifiedCandidatures=Últimes aplicacions de treball modificades %s
|
BoxTitleLatestModifiedCandidatures=Últimes %s sol·licituds de feina modificades
|
||||||
ForCustomersInvoices=Factures a clients
|
ForCustomersInvoices=Factures a clients
|
||||||
ForCustomersOrders=Comandes de clients
|
ForCustomersOrders=Comandes de clients
|
||||||
ForProposals=Pressupostos
|
ForProposals=Pressupostos
|
||||||
@ -103,7 +103,7 @@ LastXMonthRolling=Els últims %s mesos consecutius
|
|||||||
ChooseBoxToAdd=Afegeix el panell a la teva taula de control
|
ChooseBoxToAdd=Afegeix el panell a la teva taula de control
|
||||||
BoxAdded=S'ha afegit el panell a la teva taula de control
|
BoxAdded=S'ha afegit el panell a la teva taula de control
|
||||||
BoxTitleUserBirthdaysOfMonth=Aniversaris d'aquest mes (usuaris)
|
BoxTitleUserBirthdaysOfMonth=Aniversaris d'aquest mes (usuaris)
|
||||||
BoxLastManualEntries=Últim registre de comptabilitat introduït manualment o sense document d'origen
|
BoxLastManualEntries=Últim registre en comptabilitat introduït manualment o sense document d'origen
|
||||||
BoxTitleLastManualEntries=%s últim registre introduït manualment o sense document d'origen
|
BoxTitleLastManualEntries=%s últim registre introduït manualment o sense document d'origen
|
||||||
NoRecordedManualEntries=No hi ha registres d'entrades manuals en comptabilitat
|
NoRecordedManualEntries=No hi ha registres d'entrades manuals en comptabilitat
|
||||||
BoxSuspenseAccount=Operació comptable de comptes amb compte de suspens
|
BoxSuspenseAccount=Operació comptable de comptes amb compte de suspens
|
||||||
@ -118,6 +118,27 @@ BoxCustomersOutstandingBillReached=Clients que superen el límit pendent
|
|||||||
UsersHome=Usuaris i grups domèstics
|
UsersHome=Usuaris i grups domèstics
|
||||||
MembersHome=Membres a casa
|
MembersHome=Membres a casa
|
||||||
ThirdpartiesHome=Inici Tercers
|
ThirdpartiesHome=Inici Tercers
|
||||||
|
productindex=Inici de productes i serveis
|
||||||
|
mrpindex=Inici MRP
|
||||||
|
commercialindex=Inici de comercial
|
||||||
|
projectsindex=Inici de projectes
|
||||||
|
invoiceindex=Inici de factures
|
||||||
|
hrmindex=Inici de factures
|
||||||
TicketsHome=Entrades a casa
|
TicketsHome=Entrades a casa
|
||||||
|
stockindex=Inici d'estocs
|
||||||
|
sendingindex=Inici d'enviaments
|
||||||
|
receptionindex=inici de recepcions
|
||||||
|
activityindex=Inici d'activitat
|
||||||
|
proposalindex=Inici de propostes
|
||||||
|
ordersindex=Inici de comandes
|
||||||
|
orderssuppliersindex=Inici de comandes a proveïdors
|
||||||
|
contractindex=Inici de contractes
|
||||||
|
interventionindex=Inici de intervencions
|
||||||
|
suppliersproposalsindex=Inici de propostes de proveïdors
|
||||||
|
donationindex=Inici de donacions
|
||||||
|
specialexpensesindex=Inici de despeses especials
|
||||||
|
expensereportindex=Inici de informe de despeses
|
||||||
|
mailingindex=Inici de correu massiu
|
||||||
|
opensurveyindex=Inici d'enquesta oberta
|
||||||
AccountancyHome=Inici Comptabilitat
|
AccountancyHome=Inici Comptabilitat
|
||||||
ValidatedProjects=Projectes validats
|
ValidatedProjects=Projectes validats
|
||||||
|
|||||||
@ -312,7 +312,7 @@ CustomerRelativeDiscountShort=Descompte relatiu
|
|||||||
CustomerAbsoluteDiscountShort=Descompte fixe
|
CustomerAbsoluteDiscountShort=Descompte fixe
|
||||||
CompanyHasRelativeDiscount=Aquest client té un descompte per defecte de <b>%s%%</b>
|
CompanyHasRelativeDiscount=Aquest client té un descompte per defecte de <b>%s%%</b>
|
||||||
CompanyHasNoRelativeDiscount=Aquest client no té descomptes relatius per defecte
|
CompanyHasNoRelativeDiscount=Aquest client no té descomptes relatius per defecte
|
||||||
HasRelativeDiscountFromSupplier=You have a default discount of <b>%s%%</b> with this vendor
|
HasRelativeDiscountFromSupplier=Teniu un descompte predeterminat de <b>%s%%</b> amb aquest proveïdor
|
||||||
HasNoRelativeDiscountFromSupplier=No hi ha descompte relatiu predeterminat amb aquest venedor
|
HasNoRelativeDiscountFromSupplier=No hi ha descompte relatiu predeterminat amb aquest venedor
|
||||||
CompanyHasAbsoluteDiscount=Aquest client té descomptes disponibles (notes de crèdit o bestretes) per <b>%s</b> %s
|
CompanyHasAbsoluteDiscount=Aquest client té descomptes disponibles (notes de crèdit o bestretes) per <b>%s</b> %s
|
||||||
CompanyHasDownPaymentOrCommercialDiscount=Aquest client té un descompte disponible (comercial, de pagament) per a <b>%s</b>%s
|
CompanyHasDownPaymentOrCommercialDiscount=Aquest client té un descompte disponible (comercial, de pagament) per a <b>%s</b>%s
|
||||||
@ -357,7 +357,7 @@ RequiredIfSupplier=Obligatori si un tercer és proveïdor
|
|||||||
ValidityControledByModule=Validesa controlada pel mòdul
|
ValidityControledByModule=Validesa controlada pel mòdul
|
||||||
ThisIsModuleRules=Regles per a aquest mòdul
|
ThisIsModuleRules=Regles per a aquest mòdul
|
||||||
ProspectToContact=Client potencial a contactar
|
ProspectToContact=Client potencial a contactar
|
||||||
CompanyDeleted=L'empresa "%s" ha estat eliminada
|
CompanyDeleted=L'empresa «%s» s'ha suprimit de la base de dades.
|
||||||
ListOfContacts=Llistat de contactes
|
ListOfContacts=Llistat de contactes
|
||||||
ListOfContactsAddresses=Llistat de contactes
|
ListOfContactsAddresses=Llistat de contactes
|
||||||
ListOfThirdParties=Llista de tercers
|
ListOfThirdParties=Llista de tercers
|
||||||
@ -386,7 +386,7 @@ VATIntraCheck=Verificar
|
|||||||
VATIntraCheckDesc=El NIF Intracomunitari ha d'incloure el prefix del país. L'enllaç <b>%s</b> utilitza el servei europeu de verificació de NIF (VIES) que requereix accés a Internet des del servidor Dolibarr.
|
VATIntraCheckDesc=El NIF Intracomunitari ha d'incloure el prefix del país. L'enllaç <b>%s</b> utilitza el servei europeu de verificació de NIF (VIES) que requereix accés a Internet des del servidor Dolibarr.
|
||||||
VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do
|
VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do
|
||||||
VATIntraCheckableOnEUSite=Verifica el NIF Intracomunitari a la web de la Comissió Europea
|
VATIntraCheckableOnEUSite=Verifica el NIF Intracomunitari a la web de la Comissió Europea
|
||||||
VATIntraManualCheck=També podeu comprovar manualment al lloc web de la Comissió Europea <a href="%s" target="_blank" rel="noopener noreferrer"> %s </a>
|
VATIntraManualCheck=També podeu comprovar manualment al lloc web de la Comissió Europea <a href="%s" target="_blank" rel="noopener noreferrer">%s</a>
|
||||||
ErrorVATCheckMS_UNAVAILABLE=Comprovació impossible. El servei de comprovació no és prestat pel país membre (%s).
|
ErrorVATCheckMS_UNAVAILABLE=Comprovació impossible. El servei de comprovació no és prestat pel país membre (%s).
|
||||||
NorProspectNorCustomer=Ni client, ni client potencial
|
NorProspectNorCustomer=Ni client, ni client potencial
|
||||||
JuridicalStatus=Tipus d'entitat empresarial
|
JuridicalStatus=Tipus d'entitat empresarial
|
||||||
@ -462,7 +462,7 @@ ListSuppliersShort=Llistat de proveïdors
|
|||||||
ListProspectsShort=Llistat de clients potencials
|
ListProspectsShort=Llistat de clients potencials
|
||||||
ListCustomersShort=Llistat de clients
|
ListCustomersShort=Llistat de clients
|
||||||
ThirdPartiesArea=Àrea de tercers i contactes
|
ThirdPartiesArea=Àrea de tercers i contactes
|
||||||
LastModifiedThirdParties=Últims tercers %s que van ser modificats
|
LastModifiedThirdParties=Últims %s tercers que s'han modificat
|
||||||
UniqueThirdParties=Nombre total de tercers
|
UniqueThirdParties=Nombre total de tercers
|
||||||
InActivity=Actiu
|
InActivity=Actiu
|
||||||
ActivityCeased=Tancat
|
ActivityCeased=Tancat
|
||||||
@ -499,7 +499,7 @@ OutOfEurope=Fora d’Europa (CEE)
|
|||||||
CurrentOutstandingBillLate=Factura pendent actual en retard
|
CurrentOutstandingBillLate=Factura pendent actual en retard
|
||||||
BecarefullChangeThirdpartyBeforeAddProductToInvoice=Ves amb compte, en funció de la configuració del preu del producte, has de canviar de tercer abans d’afegir el producte al TPV.
|
BecarefullChangeThirdpartyBeforeAddProductToInvoice=Ves amb compte, en funció de la configuració del preu del producte, has de canviar de tercer abans d’afegir el producte al TPV.
|
||||||
EmailAlreadyExistsPleaseRewriteYourCompanyName=El correu electrònic ja existeix, si us plau, reescriu el nom de la teva empresa
|
EmailAlreadyExistsPleaseRewriteYourCompanyName=El correu electrònic ja existeix, si us plau, reescriu el nom de la teva empresa
|
||||||
TwoRecordsOfCompanyName=more than one record exists for this company, please contact us to complete your partnership request
|
TwoRecordsOfCompanyName=Hi ha més d'un registre per a aquesta empresa, poseu-vos en contacte amb nosaltres per a completar la vostra sol·licitud d'associació
|
||||||
CompanySection=Secció d'empresa
|
CompanySection=Secció d'empresa
|
||||||
ShowSocialNetworks=Mostra les xarxes socials
|
ShowSocialNetworks=Mostra les xarxes socials
|
||||||
HideSocialNetworks=Amaga les xarxes socials
|
HideSocialNetworks=Amaga les xarxes socials
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
# Dolibarr language file - Source file is en_US - compta
|
# Dolibarr language file - Source file is en_US - compta
|
||||||
MenuFinancial=Financera
|
MenuFinancial=Financera
|
||||||
TaxModuleSetupToModifyRules=Aneu a <a href="%s"> Configuració del mòdul Impostos </a> per a modificar les regles de càlcul
|
TaxModuleSetupToModifyRules=Aneu a <a href="%s"> Configuració del mòdul Impostos </a> per a modificar les regles de càlcul
|
||||||
TaxModuleSetupToModifyRulesLT=Aneu a <a href="%s"> Configuració de l'empresa </a> per a modificar les regles de càlcul
|
TaxModuleSetupToModifyRulesLT=Aneu a <a href="%s">Configuració de l'empresa</a> per a modificar les regles de càlcul
|
||||||
OptionMode=Opció de gestió comptable
|
OptionMode=Opció de gestió comptable
|
||||||
OptionModeTrue=Opció Ingressos-Despeses
|
OptionModeTrue=Opció Ingressos-Despeses
|
||||||
OptionModeVirtual=Opció Crèdits-Deutes
|
OptionModeVirtual=Opció Crèdits-Deutes
|
||||||
OptionModeTrueDesc=En aquest context, la facturació es calcula sobre els pagaments (data dels pagaments). La validesa de les xifres només està assegurada si la comptabilitat es controla mitjançant l'entrada/sortida dels comptes mitjançant factures.
|
OptionModeTrueDesc=En aquest context, la facturació es calcula sobre els pagaments (data dels pagaments). La validesa de les xifres només està assegurada si la comptabilitat es controla mitjançant l'entrada/sortida dels comptes mitjançant factures.
|
||||||
OptionModeVirtualDesc=En aquest context, la facturació es calcula sobre les factures (data de validació). Quan es venguin aquestes factures, tant si s'han pagat com si no, s'enumeren a la sortida de la facturació.
|
OptionModeVirtualDesc=En aquest context, la facturació es calcula sobre les factures (data de validació). Quan es venguin aquestes factures, tant si s'han pagat com si no, s'enumeren a la sortida de la facturació.
|
||||||
FeatureIsSupportedInInOutModeOnly=Funció disponible només en el mode comptes CREDITS-DEUTES (Veure la configuració del mòdul comptes)
|
FeatureIsSupportedInInOutModeOnly=Funció només disponible en el mode de comptabilitat CRÈDITS-DEUTES (vegeu la configuració del mòdul de comptabilitat)
|
||||||
VATReportBuildWithOptionDefinedInModule=Els imports obtinguts es calculen segons la configuració del mòdul Impostos.
|
VATReportBuildWithOptionDefinedInModule=Els imports obtinguts es calculen segons la configuració del mòdul Impostos.
|
||||||
LTReportBuildWithOptionDefinedInModule=Els imports obtinguts es calculen segons la configuració de l'Empresa
|
LTReportBuildWithOptionDefinedInModule=Els imports obtinguts es calculen segons la configuració de l'Empresa
|
||||||
Param=Configuració
|
Param=Configuració
|
||||||
@ -73,7 +73,7 @@ SocialContributions=Impostos varis
|
|||||||
SocialContributionsDeductibles=Impostos varis deduïbles
|
SocialContributionsDeductibles=Impostos varis deduïbles
|
||||||
SocialContributionsNondeductibles=Impostos varis no deduïbles
|
SocialContributionsNondeductibles=Impostos varis no deduïbles
|
||||||
DateOfSocialContribution=Data de l’impost social o fiscal
|
DateOfSocialContribution=Data de l’impost social o fiscal
|
||||||
LabelContrib=Aportació d'etiquetes
|
LabelContrib=Nom d'aportació
|
||||||
TypeContrib=Tipus d'aportació
|
TypeContrib=Tipus d'aportació
|
||||||
MenuSpecialExpenses=Pagaments especials
|
MenuSpecialExpenses=Pagaments especials
|
||||||
MenuTaxAndDividends=Impostos i càrregues
|
MenuTaxAndDividends=Impostos i càrregues
|
||||||
@ -132,7 +132,7 @@ ByThirdParties=Per tercer
|
|||||||
ByUserAuthorOfInvoice=Per autor de la factura
|
ByUserAuthorOfInvoice=Per autor de la factura
|
||||||
CheckReceipt=Ingrés de xec
|
CheckReceipt=Ingrés de xec
|
||||||
CheckReceiptShort=Ingrés de xec
|
CheckReceiptShort=Ingrés de xec
|
||||||
LastCheckReceiptShort=Últimes %s remeses de xec
|
LastCheckReceiptShort=Últims %s rebuts de xec
|
||||||
NewCheckReceipt=Descompte nou
|
NewCheckReceipt=Descompte nou
|
||||||
NewCheckDeposit=Ingrés nou
|
NewCheckDeposit=Ingrés nou
|
||||||
NewCheckDepositOn=Crear el rebut per a l'ingrés al compte: %s
|
NewCheckDepositOn=Crear el rebut per a l'ingrés al compte: %s
|
||||||
@ -142,9 +142,9 @@ NbOfCheques=Nombre de xecs
|
|||||||
PaySocialContribution=Pagar un impost varis
|
PaySocialContribution=Pagar un impost varis
|
||||||
PayVAT=Paga una declaració d’IVA
|
PayVAT=Paga una declaració d’IVA
|
||||||
PaySalary=Pagar una targeta salarial
|
PaySalary=Pagar una targeta salarial
|
||||||
ConfirmPaySocialContribution=Esteu segur que voleu classificar aquest impost varis com a pagat?
|
ConfirmPaySocialContribution=Esteu segur que voleu marcar aquest impost varis com a pagat?
|
||||||
ConfirmPayVAT=Esteu segur que voleu classificar aquesta declaració d'IVA com a pagada?
|
ConfirmPayVAT=Esteu segur que voleu marcar aquesta declaració d'IVA com a pagada?
|
||||||
ConfirmPaySalary=Esteu segur que voleu classificar aquesta targeta salarial com a pagada?
|
ConfirmPaySalary=Esteu segur que voleu marcar aquesta fitxa salarial com a pagada?
|
||||||
DeleteSocialContribution=Elimina un pagament d'impost varis
|
DeleteSocialContribution=Elimina un pagament d'impost varis
|
||||||
DeleteVAT=Suprimeix una declaració d’IVA
|
DeleteVAT=Suprimeix una declaració d’IVA
|
||||||
DeleteSalary=Elimina una fitxa salarial
|
DeleteSalary=Elimina una fitxa salarial
|
||||||
@ -236,7 +236,7 @@ Pcg_subtype=Subtipus de compte
|
|||||||
InvoiceLinesToDispatch=Línies de factures a desglossar
|
InvoiceLinesToDispatch=Línies de factures a desglossar
|
||||||
ByProductsAndServices=Per producte i servei
|
ByProductsAndServices=Per producte i servei
|
||||||
RefExt=Ref. externa
|
RefExt=Ref. externa
|
||||||
ToCreateAPredefinedInvoice=Per a crear una plantilla de factura, creeu una factura estàndard, després, sense validar-la, feu clic al botó "%s".
|
ToCreateAPredefinedInvoice=Per a crear una plantilla de factura, creeu una factura estàndard, després, sense validar-la, feu clic al botó «%s».
|
||||||
LinkedOrder=Enllaçar a una comanda
|
LinkedOrder=Enllaçar a una comanda
|
||||||
Mode1=Mètode 1
|
Mode1=Mètode 1
|
||||||
Mode2=Mètode 2
|
Mode2=Mètode 2
|
||||||
@ -252,7 +252,7 @@ ACCOUNTING_VAT_PAY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a co
|
|||||||
ACCOUNTING_ACCOUNT_CUSTOMER=Compte (del pla comptable) utilitzat per a tercers «clients».
|
ACCOUNTING_ACCOUNT_CUSTOMER=Compte (del pla comptable) utilitzat per a tercers «clients».
|
||||||
ACCOUNTING_ACCOUNT_CUSTOMER_Desc=El compte comptable dedicat definit a la fitxa de tercer només s’utilitzarà per a la comptabilitat auxiliar. Aquest s'utilitzarà per al llibre major i com a valor per defecte de la comptabilitat auxiliar si no es defineix un compte comptable de client dedicat a tercers.
|
ACCOUNTING_ACCOUNT_CUSTOMER_Desc=El compte comptable dedicat definit a la fitxa de tercer només s’utilitzarà per a la comptabilitat auxiliar. Aquest s'utilitzarà per al llibre major i com a valor per defecte de la comptabilitat auxiliar si no es defineix un compte comptable de client dedicat a tercers.
|
||||||
ACCOUNTING_ACCOUNT_SUPPLIER=Compte (del pla comptable) utilitzat per a tercers «proveïdors».
|
ACCOUNTING_ACCOUNT_SUPPLIER=Compte (del pla comptable) utilitzat per a tercers «proveïdors».
|
||||||
ACCOUNTING_ACCOUNT_SUPPLIER_Desc=El compte comptable dedicat definit a la fitxa de tercers només s'utilitzarà per al Llibre Major. Aquest serà utilitzat pel Llibre Major i com a valor predeterminat del subcompte si no es defineix un compte comptable a la fitxa del tercer.
|
ACCOUNTING_ACCOUNT_SUPPLIER_Desc=El compte comptable dedicat definit a la fitxa de tercers s'utilitzarà només per a la comptabilitat de subllibre. Aquest s'utilitzarà per al Llibre Major i com a valor predeterminat de la comptabilitat del subllibre si no es defineix un compte comptable de proveïdor dedicat a tercers.
|
||||||
ConfirmCloneTax=Confirma el clonat d'un impost social / fiscal
|
ConfirmCloneTax=Confirma el clonat d'un impost social / fiscal
|
||||||
ConfirmCloneVAT=Confirma la còpia d’una declaració d’IVA
|
ConfirmCloneVAT=Confirma la còpia d’una declaració d’IVA
|
||||||
ConfirmCloneSalary=Confirmeu el clon d'un salari
|
ConfirmCloneSalary=Confirmeu el clon d'un salari
|
||||||
|
|||||||
@ -57,12 +57,12 @@ LastContracts=Últims %s contractes
|
|||||||
LastModifiedServices=Últims %s serveis modificats
|
LastModifiedServices=Últims %s serveis modificats
|
||||||
ContractStartDate=Data inici
|
ContractStartDate=Data inici
|
||||||
ContractEndDate=Data finalització
|
ContractEndDate=Data finalització
|
||||||
DateStartPlanned=Data prevista posada en servei
|
DateStartPlanned=Data d'inici prevista
|
||||||
DateStartPlannedShort=Data inici prevista
|
DateStartPlannedShort=Data d'inici prevista
|
||||||
DateEndPlanned=Data prevista finalització del servei
|
DateEndPlanned=Data prevista finalització del servei
|
||||||
DateEndPlannedShort=Data final prevista
|
DateEndPlannedShort=Data final prevista
|
||||||
DateStartReal=Data real posada en servei
|
DateStartReal=Data d'inici real
|
||||||
DateStartRealShort=Data inici
|
DateStartRealShort=Data d'inici real
|
||||||
DateEndReal=Data real finalització del servei
|
DateEndReal=Data real finalització del servei
|
||||||
DateEndRealShort=Data real finalització
|
DateEndRealShort=Data real finalització
|
||||||
CloseService=Finalitzar servei
|
CloseService=Finalitzar servei
|
||||||
@ -89,7 +89,7 @@ ListOfServicesToExpire=Llistat de serveis actius a expirar
|
|||||||
NoteListOfYourExpiredServices=Aquest llistat només conté els serveis de contractes de tercers que tens enllaçats com a agent comercial
|
NoteListOfYourExpiredServices=Aquest llistat només conté els serveis de contractes de tercers que tens enllaçats com a agent comercial
|
||||||
StandardContractsTemplate=Plantilla de contracte Standard
|
StandardContractsTemplate=Plantilla de contracte Standard
|
||||||
ContactNameAndSignature=Per %s, nom i signatura:
|
ContactNameAndSignature=Per %s, nom i signatura:
|
||||||
OnlyLinesWithTypeServiceAreUsed=Només les línies amb tipus "Servei" seran clonades.
|
OnlyLinesWithTypeServiceAreUsed=Només es clonaran les línies amb el tipus «Servei».
|
||||||
ConfirmCloneContract=Esteu segur que voleu clonar el contracte <b> %s </b>?
|
ConfirmCloneContract=Esteu segur que voleu clonar el contracte <b> %s </b>?
|
||||||
LowerDateEndPlannedShort=Baixa data de finalització planificada dels serveis actius
|
LowerDateEndPlannedShort=Baixa data de finalització planificada dels serveis actius
|
||||||
SendContractRef=Informació del contracte __REF__
|
SendContractRef=Informació del contracte __REF__
|
||||||
|
|||||||
@ -64,7 +64,7 @@ CronTaskInactive=Aquest treball està desactivat (no programat)
|
|||||||
CronId=Id
|
CronId=Id
|
||||||
CronClassFile=Filename with class
|
CronClassFile=Filename with class
|
||||||
CronModuleHelp=Nom del directori del mòdul de Dolibarr (també funciona amb mòduls externs). <BR> Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/<u>product</u>/class/product.class.php, el valor pel mòdul és <br><i>product</i>
|
CronModuleHelp=Nom del directori del mòdul de Dolibarr (també funciona amb mòduls externs). <BR> Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/<u>product</u>/class/product.class.php, el valor pel mòdul és <br><i>product</i>
|
||||||
CronClassFileHelp=La ruta relativa i el nom del fitxer a carregar (la ruta és relativa al directori arrel del servidor web). <BR> Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/<u>product.class.php</u>, el valor del nom del fitxer de classe és<br> <i>product/class/product.class.php</i>
|
CronClassFileHelp=El camí relatiu i el nom del fitxer a carregar (el camí és relatiu al directori arrel del servidor web). <BR> Per exemple, per a cridar al mètode fetch de l'objecte Producte de Dolibarr htdocs/product/class/<u>product.class.php</u>, el valor del nom del fitxer de classe és <br><i>product/class/product.class.php</i>
|
||||||
CronObjectHelp=El nom de l'objecte a carregar. <BR> Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor pel nom del fitxer de classe és<br> <i>Product</i>
|
CronObjectHelp=El nom de l'objecte a carregar. <BR> Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor pel nom del fitxer de classe és<br> <i>Product</i>
|
||||||
CronMethodHelp=El mètode d'objecte a cridar. <BR> Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor pel mètode és<br> <i>fetch</i>
|
CronMethodHelp=El mètode d'objecte a cridar. <BR> Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor pel mètode és<br> <i>fetch</i>
|
||||||
CronArgsHelp=Els arguments del mètode. <BR> Per exemple, cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor dels paràmetres pot ser <br> <i>0, ProductRef</i>
|
CronArgsHelp=Els arguments del mètode. <BR> Per exemple, cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor dels paràmetres pot ser <br> <i>0, ProductRef</i>
|
||||||
|
|||||||
@ -5,7 +5,7 @@ ECMSectionManual=Carpeta manual
|
|||||||
ECMSectionAuto=Carpeta automàtica
|
ECMSectionAuto=Carpeta automàtica
|
||||||
ECMSectionsManual=Arbre manual
|
ECMSectionsManual=Arbre manual
|
||||||
ECMSectionsAuto=Arbre automàtic
|
ECMSectionsAuto=Arbre automàtic
|
||||||
ECMSectionsMedias=Medias tree
|
ECMSectionsMedias=Arbre dels multimèdia
|
||||||
ECMSections=Carpetes
|
ECMSections=Carpetes
|
||||||
ECMRoot=Arrel del ECM
|
ECMRoot=Arrel del ECM
|
||||||
ECMNewSection=Carpeta nova
|
ECMNewSection=Carpeta nova
|
||||||
@ -17,9 +17,9 @@ ECMNbOfFilesInSubDir=Nombre d'arxius en les subcarpetes
|
|||||||
ECMCreationUser=Creador
|
ECMCreationUser=Creador
|
||||||
ECMArea=Àrea SGD/GCE
|
ECMArea=Àrea SGD/GCE
|
||||||
ECMAreaDesc=L’àrea SGD/GED (Sistema de Gestió de Documents / Gestió de Continguts Electrònics) us permet desar, compartir i cercar ràpidament tota mena de documents a Dolibarr.
|
ECMAreaDesc=L’àrea SGD/GED (Sistema de Gestió de Documents / Gestió de Continguts Electrònics) us permet desar, compartir i cercar ràpidament tota mena de documents a Dolibarr.
|
||||||
ECMAreaDesc2a=* Manual directories can be used to save documents not linked to a particular element.
|
ECMAreaDesc2a=* Els directoris manuals es poden utilitzar per a desar documents no vinculats a un element concret.
|
||||||
ECMAreaDesc2b=* Automatic directories are filled automatically when adding documents from the page of an element.
|
ECMAreaDesc2b=* Els directoris automàtics s'omplen automàticament quan s'afegeixen documents des de la pàgina d'un element.
|
||||||
ECMAreaDesc3=* Medias directories are files into the subdirectory <b>/medias</b> of documents directory, readable by everybody with no need to be logged and no need to have the file shared explicitely. It is used to store image files from emailing or website module.
|
ECMAreaDesc3=* Els directoris de multimèdia són fitxers del subdirectori <b>/medias</b> del directori de documents, llegibles per a tothom sense necessitat de registrar-se i sense necessitat de compartir el fitxer de manera explícita. S'utilitza per a emmagatzemar fitxers d'imatge per al mòdul de correu electrònic o lloc web, per exemple.
|
||||||
ECMSectionWasRemoved=La carpeta <b>%s</b> ha estat eliminada
|
ECMSectionWasRemoved=La carpeta <b>%s</b> ha estat eliminada
|
||||||
ECMSectionWasCreated=S'ha creat el directori <b>%s</b>.
|
ECMSectionWasCreated=S'ha creat el directori <b>%s</b>.
|
||||||
ECMSearchByKeywords=Cercar per paraules clau
|
ECMSearchByKeywords=Cercar per paraules clau
|
||||||
|
|||||||
@ -15,10 +15,10 @@ ErrorGroupAlreadyExists=El grup %s ja existeix.
|
|||||||
ErrorEmailAlreadyExists=El correu electrònic %s ja existeix.
|
ErrorEmailAlreadyExists=El correu electrònic %s ja existeix.
|
||||||
ErrorRecordNotFound=Registre no trobat
|
ErrorRecordNotFound=Registre no trobat
|
||||||
ErrorRecordNotFoundShort=No trobat
|
ErrorRecordNotFoundShort=No trobat
|
||||||
ErrorFailToCopyFile=No s'ha pogut copiar el fitxer "<b> %s </b>" a "<b> %s </b>".
|
ErrorFailToCopyFile=No s'ha pogut copiar el fitxer «<b>%s</b>» a «<b>%s</b>».
|
||||||
ErrorFailToCopyDir=No s'ha pogut copiar el directori '<b> %s </b>' a '<b> %s </b>'.
|
ErrorFailToCopyDir=No s'ha pogut copiar el directori '<b> %s </b>' a '<b> %s </b>'.
|
||||||
ErrorFailToRenameFile=Error al renomenar l'arxiu '<b>%s</b>' a '<b>%s</b>'.
|
ErrorFailToRenameFile=Error al renomenar l'arxiu '<b>%s</b>' a '<b>%s</b>'.
|
||||||
ErrorFailToDeleteFile=No s'ha pogut eliminar el fitxer "<b> %s </b>".
|
ErrorFailToDeleteFile=No s'ha pogut eliminar el fitxer «<b>%s</b>».
|
||||||
ErrorFailToCreateFile=Error al crear l'arxiu '<b>%s</b>'
|
ErrorFailToCreateFile=Error al crear l'arxiu '<b>%s</b>'
|
||||||
ErrorFailToRenameDir=Error al renomenar la carpeta '<b>%s</b>' a '<b>%s</b>'.
|
ErrorFailToRenameDir=Error al renomenar la carpeta '<b>%s</b>' a '<b>%s</b>'.
|
||||||
ErrorFailToCreateDir=Error al crear la carpeta '<b>%s</b>'
|
ErrorFailToCreateDir=Error al crear la carpeta '<b>%s</b>'
|
||||||
@ -60,8 +60,8 @@ ErrorSetupOfEmailsNotComplete=La configuració dels correus electrònics no s'ha
|
|||||||
ErrorFeatureNeedJavascript=Aquesta funcionalitat requereix javascript actiu per funcionar. Modifiqueu en configuració->entorn.
|
ErrorFeatureNeedJavascript=Aquesta funcionalitat requereix javascript actiu per funcionar. Modifiqueu en configuració->entorn.
|
||||||
ErrorTopMenuMustHaveAParentWithId0=Un menú del tipus 'Superior' no pot tenir un menú pare. Poseu 0 al menú pare o trieu un menú del tipus 'Esquerra'.
|
ErrorTopMenuMustHaveAParentWithId0=Un menú del tipus 'Superior' no pot tenir un menú pare. Poseu 0 al menú pare o trieu un menú del tipus 'Esquerra'.
|
||||||
ErrorLeftMenuMustHaveAParentId=Un menú del tipus 'Esquerra' ha de tenir un ID de pare
|
ErrorLeftMenuMustHaveAParentId=Un menú del tipus 'Esquerra' ha de tenir un ID de pare
|
||||||
ErrorFileNotFound=Arxiu no trobat (ruta incorrecta, permisos incorrectes o accés prohibit pel paràmetre openbasedir)
|
ErrorFileNotFound=No s'ha trobat el fitxer <b>%s</b> (camí incorrecte, permisos incorrectes o accés denegat pel paràmetre PHP openbasedir o safe_mode)
|
||||||
ErrorDirNotFound=Directori <b>%s</b> no trobat (Ruta incorrecta, permisos inadequats o accés prohibit pel paràmetre PHP openbasedir o safe_mode)
|
ErrorDirNotFound=No s'ha trobat el directori <b>%s</b> (camí incorrecte, permisos incorrectes o accés denegat pel paràmetre PHP openbasedir o safe_mode)
|
||||||
ErrorFunctionNotAvailableInPHP=La funció <b>%s</b> és requerida per aquesta característica, però no es troba disponible en aquesta versió/instal·lació de PHP.
|
ErrorFunctionNotAvailableInPHP=La funció <b>%s</b> és requerida per aquesta característica, però no es troba disponible en aquesta versió/instal·lació de PHP.
|
||||||
ErrorDirAlreadyExists=Ja existeix una carpeta amb aquest nom.
|
ErrorDirAlreadyExists=Ja existeix una carpeta amb aquest nom.
|
||||||
ErrorFileAlreadyExists=Ja existeix un fitxer amb aquest nom.
|
ErrorFileAlreadyExists=Ja existeix un fitxer amb aquest nom.
|
||||||
@ -84,7 +84,7 @@ ErrorNoAccountancyModuleLoaded=Mòdul de comptabilitat no activat
|
|||||||
ErrorExportDuplicateProfil=El nom d'aquest perfil ja existeix per aquest conjunt d'exportació
|
ErrorExportDuplicateProfil=El nom d'aquest perfil ja existeix per aquest conjunt d'exportació
|
||||||
ErrorLDAPSetupNotComplete=La configuració Dolibarr-LDAP és incompleta.
|
ErrorLDAPSetupNotComplete=La configuració Dolibarr-LDAP és incompleta.
|
||||||
ErrorLDAPMakeManualTest=S'ha generat un fitxer .ldif al directori %s. Proveu de carregar-lo manualment des de la línia d'ordres per a obtenir més informació sobre els errors.
|
ErrorLDAPMakeManualTest=S'ha generat un fitxer .ldif al directori %s. Proveu de carregar-lo manualment des de la línia d'ordres per a obtenir més informació sobre els errors.
|
||||||
ErrorCantSaveADoneUserWithZeroPercentage=No es pot desar una acció amb "estat no iniciat" si el camp "fet per" també s'omple.
|
ErrorCantSaveADoneUserWithZeroPercentage=No es pot desar una acció amb «estat no iniciat» si també s'omple el camp «fet per».
|
||||||
ErrorRefAlreadyExists=La referència <b> %s </b> ja existeix.
|
ErrorRefAlreadyExists=La referència <b> %s </b> ja existeix.
|
||||||
ErrorPleaseTypeBankTransactionReportName=Introduïu el nom de l’extracte bancari on s’ha d’informar de l’entrada (format AAAAAMM o AAAAAMMDD)
|
ErrorPleaseTypeBankTransactionReportName=Introduïu el nom de l’extracte bancari on s’ha d’informar de l’entrada (format AAAAAMM o AAAAAMMDD)
|
||||||
ErrorRecordHasChildren=No s'ha pogut eliminar el registre, ja que té alguns registres fills.
|
ErrorRecordHasChildren=No s'ha pogut eliminar el registre, ja que té alguns registres fills.
|
||||||
@ -97,7 +97,7 @@ ErrorWrongValueForField=Camp <b> %s </b>: '<b> %s </b>' no coincideix amb la reg
|
|||||||
ErrorHtmlInjectionForField=Camp <b> %s </b> : el valor ' <b> %s </b> no conté dades malicioses '
|
ErrorHtmlInjectionForField=Camp <b> %s </b> : el valor ' <b> %s </b> no conté dades malicioses '
|
||||||
ErrorFieldValueNotIn=Camp <b> %s </b>: '<b> %s </b>' no és un valor trobat en el camp <b> %s </b> de <b> %s </b>
|
ErrorFieldValueNotIn=Camp <b> %s </b>: '<b> %s </b>' no és un valor trobat en el camp <b> %s </b> de <b> %s </b>
|
||||||
ErrorFieldRefNotIn=Camp <b> %s </b>: '<b> %s </b>' no és un <b> %s </b> ref actual
|
ErrorFieldRefNotIn=Camp <b> %s </b>: '<b> %s </b>' no és un <b> %s </b> ref actual
|
||||||
ErrorMultipleRecordFoundFromRef=Several record found when searching from ref <b>%s</b>. No way to know which ID to use.
|
ErrorMultipleRecordFoundFromRef=S'han trobat diversos registres en cercar des de la referència<b>%s</b>. No hi ha manera de saber quina identificació utilitzar.
|
||||||
ErrorsOnXLines=S'han trobat %s errors
|
ErrorsOnXLines=S'han trobat %s errors
|
||||||
ErrorFileIsInfectedWithAVirus=L'antivirus no ha pogut validar aquest arxiu (és probable que estigui infectat per un virus)!
|
ErrorFileIsInfectedWithAVirus=L'antivirus no ha pogut validar aquest arxiu (és probable que estigui infectat per un virus)!
|
||||||
ErrorNumRefModel=Hi ha una referència a la base de dades (%s) i no és compatible amb aquesta regla de numeració. Elimineu el registre o canvieu el nom de referència per a activar aquest mòdul.
|
ErrorNumRefModel=Hi ha una referència a la base de dades (%s) i no és compatible amb aquesta regla de numeració. Elimineu el registre o canvieu el nom de referència per a activar aquest mòdul.
|
||||||
@ -125,7 +125,7 @@ ErrorCantReadFile=Error de lectura del fitxer '%s'
|
|||||||
ErrorCantReadDir=Error de lectura de la carpeta '%s'
|
ErrorCantReadDir=Error de lectura de la carpeta '%s'
|
||||||
ErrorBadLoginPassword=Identificadors d'usuari o contrasenya incorrectes
|
ErrorBadLoginPassword=Identificadors d'usuari o contrasenya incorrectes
|
||||||
ErrorLoginDisabled=El seu compte està desactivat
|
ErrorLoginDisabled=El seu compte està desactivat
|
||||||
ErrorFailedToRunExternalCommand=No s'ha pogut executar l'ordre extern. Comproveu que estigui disponible i executable pel vostre usuari del servidor PHP. Comproveu que l'ordre no estigui protegida a nivell d'intèrpret d'ordres per una capa de seguretat com apparmor.
|
ErrorFailedToRunExternalCommand=No s'ha pogut executar l'ordre extern. Comproveu que estigui disponible i que l'executi el vostre usuari del servidor PHP. Comproveu també que l'ordre no estigui protegida en l'àmbit d'intèrpret d'ordres per una capa de seguretat com apparmor.
|
||||||
ErrorFailedToChangePassword=Error en la modificació de la contrasenya
|
ErrorFailedToChangePassword=Error en la modificació de la contrasenya
|
||||||
ErrorLoginDoesNotExists=El compte d'usuari de <b>%s</b> no s'ha trobat.
|
ErrorLoginDoesNotExists=El compte d'usuari de <b>%s</b> no s'ha trobat.
|
||||||
ErrorLoginHasNoEmail=Aquest usuari no té e-mail. Impossible continuar.
|
ErrorLoginHasNoEmail=Aquest usuari no té e-mail. Impossible continuar.
|
||||||
@ -136,7 +136,7 @@ ErrorLinesCantBeNegativeForOneVATRate=El total de línies (net d’impostos) no
|
|||||||
ErrorLinesCantBeNegativeOnDeposits=Les línies no poden ser negatives en un dipòsit. Si ho feu, podreu tenir problemes quan necessiteu consumir el dipòsit a la factura final
|
ErrorLinesCantBeNegativeOnDeposits=Les línies no poden ser negatives en un dipòsit. Si ho feu, podreu tenir problemes quan necessiteu consumir el dipòsit a la factura final
|
||||||
ErrorQtyForCustomerInvoiceCantBeNegative=La quantitat a les línies de factures a client no poden ser negatives
|
ErrorQtyForCustomerInvoiceCantBeNegative=La quantitat a les línies de factures a client no poden ser negatives
|
||||||
ErrorWebServerUserHasNotPermission=El compte d'execució del servidor web <b>%s</b> no disposa dels permisos per això
|
ErrorWebServerUserHasNotPermission=El compte d'execució del servidor web <b>%s</b> no disposa dels permisos per això
|
||||||
ErrorNoActivatedBarcode=No hi ha activat cap tipus de codi de barres
|
ErrorNoActivatedBarcode=No s'ha activat cap mena de codi de barres
|
||||||
ErrUnzipFails=No s'ha pogut descomprimir el fitxer %s amb ZipArchive
|
ErrUnzipFails=No s'ha pogut descomprimir el fitxer %s amb ZipArchive
|
||||||
ErrNoZipEngine=No engine to zip/unzip %s file in this PHP
|
ErrNoZipEngine=No engine to zip/unzip %s file in this PHP
|
||||||
ErrorFileMustBeADolibarrPackage=El fitxer %s ha de ser un paquet Dolibarr en format zip
|
ErrorFileMustBeADolibarrPackage=El fitxer %s ha de ser un paquet Dolibarr en format zip
|
||||||
@ -244,7 +244,7 @@ ErrorObjectMustHaveStatusActiveToBeDisabled=Per a desactivar els objectes, han d
|
|||||||
ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=Per ser activats, els objectes han de tenir l'estat "Esborrany" o "Desactivat"
|
ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=Per ser activats, els objectes han de tenir l'estat "Esborrany" o "Desactivat"
|
||||||
ErrorNoFieldWithAttributeShowoncombobox=Cap camp té la propietat "showoncombobox" en la definició de l'objecte "%s". No es pot mostrar el llistat desplegable.
|
ErrorNoFieldWithAttributeShowoncombobox=Cap camp té la propietat "showoncombobox" en la definició de l'objecte "%s". No es pot mostrar el llistat desplegable.
|
||||||
ErrorFieldRequiredForProduct=El camp "%s" és obligatori per al producte %s
|
ErrorFieldRequiredForProduct=El camp "%s" és obligatori per al producte %s
|
||||||
AlreadyTooMuchPostOnThisIPAdress=You have already posted too much on this IP address.
|
AlreadyTooMuchPostOnThisIPAdress=Ja heu publicat massa en aquesta adreça IP.
|
||||||
ProblemIsInSetupOfTerminal=El problema està en la configuració del terminal %s.
|
ProblemIsInSetupOfTerminal=El problema està en la configuració del terminal %s.
|
||||||
ErrorAddAtLeastOneLineFirst=Afegeix almenys una primera línia
|
ErrorAddAtLeastOneLineFirst=Afegeix almenys una primera línia
|
||||||
ErrorRecordAlreadyInAccountingDeletionNotPossible=Error, el registre ja s’ha transferit a la comptabilitat, no es pot eliminar.
|
ErrorRecordAlreadyInAccountingDeletionNotPossible=Error, el registre ja s’ha transferit a la comptabilitat, no es pot eliminar.
|
||||||
@ -262,6 +262,7 @@ ErrorParameterMustBeEnabledToAllwoThisFeature=Error, el paràmetre <b> %s </b> s
|
|||||||
ErrorLoginDateValidity=Error, aquest inici de sessió està fora de l'interval de dates de validesa
|
ErrorLoginDateValidity=Error, aquest inici de sessió està fora de l'interval de dates de validesa
|
||||||
ErrorValueLength=La longitud del camp '<b> %s </b>' ha de ser superior a '<b> %s </b>'
|
ErrorValueLength=La longitud del camp '<b> %s </b>' ha de ser superior a '<b> %s </b>'
|
||||||
ErrorReservedKeyword=La paraula '<b> %s </b>' és una paraula clau reservada
|
ErrorReservedKeyword=La paraula '<b> %s </b>' és una paraula clau reservada
|
||||||
|
ErrorFilenameReserved=El nom de fitxer <b>%s</b> no es pot utilitzar perquè és una ordre reservada i protegida.
|
||||||
ErrorNotAvailableWithThisDistribution=No disponible amb aquesta distribució
|
ErrorNotAvailableWithThisDistribution=No disponible amb aquesta distribució
|
||||||
ErrorPublicInterfaceNotEnabled=La interfície pública no s'ha activat
|
ErrorPublicInterfaceNotEnabled=La interfície pública no s'ha activat
|
||||||
ErrorLanguageRequiredIfPageIsTranslationOfAnother=Cal definir l'idioma de la pàgina nova si es defineix com a traducció d'una altra pàgina
|
ErrorLanguageRequiredIfPageIsTranslationOfAnother=Cal definir l'idioma de la pàgina nova si es defineix com a traducció d'una altra pàgina
|
||||||
@ -280,8 +281,8 @@ ErrorWrongFileName=El nom del fitxer no pot contenir __COSA__
|
|||||||
ErrorNotInDictionaryPaymentConditions=No es troba al Diccionari de condicions de pagament, modifiqueu-lo.
|
ErrorNotInDictionaryPaymentConditions=No es troba al Diccionari de condicions de pagament, modifiqueu-lo.
|
||||||
ErrorIsNotADraft=%s no és un esborrany
|
ErrorIsNotADraft=%s no és un esborrany
|
||||||
ErrorExecIdFailed=No es pot executar l'ordre "id"
|
ErrorExecIdFailed=No es pot executar l'ordre "id"
|
||||||
ErrorBadCharIntoLoginName=Unauthorized character in the field %s
|
ErrorBadCharIntoLoginName=Caràcter no autoritzat al camp %s
|
||||||
ErrorRequestTooLarge=Error, request too large or session expired
|
ErrorRequestTooLarge=Error, sol·licitud massa gran o sessió caducada
|
||||||
ErrorNotApproverForHoliday=No sou l'autor de l'abandonament %s
|
ErrorNotApproverForHoliday=No sou l'autor de l'abandonament %s
|
||||||
ErrorAttributeIsUsedIntoProduct=Aquest atribut s'utilitza en una o més variants de producte
|
ErrorAttributeIsUsedIntoProduct=Aquest atribut s'utilitza en una o més variants de producte
|
||||||
ErrorAttributeValueIsUsedIntoProduct=Aquest valor d'atribut s'utilitza en una o més variants de producte
|
ErrorAttributeValueIsUsedIntoProduct=Aquest valor d'atribut s'utilitza en una o més variants de producte
|
||||||
@ -298,17 +299,17 @@ ErrorFailedToLoadThirdParty=No s'ha pogut trobar/carregar un tercer des d'id=%s,
|
|||||||
ErrorThisPaymentModeIsNotSepa=Aquest mode de pagament no és un compte bancari
|
ErrorThisPaymentModeIsNotSepa=Aquest mode de pagament no és un compte bancari
|
||||||
ErrorStripeCustomerNotFoundCreateFirst=El client de Stripe no està configurat per a aquest tercer (o s'ha establert un valor suprimit al costat de Stripe). Creeu-lo (o torneu-lo a adjuntar) primer.
|
ErrorStripeCustomerNotFoundCreateFirst=El client de Stripe no està configurat per a aquest tercer (o s'ha establert un valor suprimit al costat de Stripe). Creeu-lo (o torneu-lo a adjuntar) primer.
|
||||||
ErrorCharPlusNotSupportedByImapForSearch=La cerca IMAP no pot cercar al remitent o al destinatari una cadena que contingui el caràcter +
|
ErrorCharPlusNotSupportedByImapForSearch=La cerca IMAP no pot cercar al remitent o al destinatari una cadena que contingui el caràcter +
|
||||||
ErrorTableNotFound=Table <b>%s</b> not found
|
ErrorTableNotFound=No s'ha trobat la taula <b>%s</b>
|
||||||
ErrorValueForTooLow=Value for <b>%s</b> is too low
|
ErrorValueForTooLow=El valor de <b>%s</b> és massa baix
|
||||||
ErrorValueCantBeNull=Value for <b>%s</b> can't be null
|
ErrorValueCantBeNull=El valor de <b>%s</b> no pot ser nul
|
||||||
ErrorDateOfMovementLowerThanDateOfFileTransmission=The date of the bank transaction can't be lower than the date of the file transmission
|
ErrorDateOfMovementLowerThanDateOfFileTransmission=La data de la transacció bancària no pot ser inferior a la data de transmissió del fitxer
|
||||||
ErrorTooMuchFileInForm=Too much files in form, the maximum number is %s file(s)
|
ErrorTooMuchFileInForm=Hi ha massa fitxers en el formulari, el nombre màxim és de %s fitxers
|
||||||
ErrorSessionInvalidatedAfterPasswordChange=The session was been invalidated following a change of password, status or dates of validity. Please relogin.
|
ErrorSessionInvalidatedAfterPasswordChange=La sessió s'ha invalidat després d'un canvi de contrasenya, estat o dates de validesa. Si us plau, torneu a iniciar sessió.
|
||||||
ErrorExistingPermission = Permission <b>%s</b> for object <b>%s</b> already exists
|
ErrorExistingPermission = Ja existeix el permís <b>%s</b> per a l'objecte <b>%s</b>
|
||||||
ErrorFieldExist=The value for <b>%s</b> already exist
|
ErrorFieldExist=El valor de <b>%s</b> ja existeix
|
||||||
ErrorEqualModule=Module invalid in <b>%s</b>
|
ErrorEqualModule=El mòdul no és vàlid a <b>%s</b>
|
||||||
ErrorFieldValue=Value for <b>%s</b> is incorrect
|
ErrorFieldValue=El valor de <b>%s</b> és incorrecte
|
||||||
ErrorCoherenceMenu=<b>%s</b> is required when <b>%</b> equal LEFT
|
ErrorCoherenceMenu= <b>%s</b> és necessari quan <b>%s</b> és «left»
|
||||||
|
|
||||||
# Warnings
|
# 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.
|
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.
|
||||||
@ -346,8 +347,8 @@ WarningModuleXDisabledSoYouMayMissEventHere=El mòdul %s no s'ha habilitat. Per
|
|||||||
WarningPaypalPaymentNotCompatibleWithStrict=El valor "Estricte" fa que les funcions de pagament en línia no funcionin correctament. Utilitzeu "Lax".
|
WarningPaypalPaymentNotCompatibleWithStrict=El valor "Estricte" fa que les funcions de pagament en línia no funcionin correctament. Utilitzeu "Lax".
|
||||||
WarningThemeForcedTo=Avís, el tema s'ha forçat a <b> %s </b> per la constant oculta MAIN_FORCETHEME
|
WarningThemeForcedTo=Avís, el tema s'ha forçat a <b> %s </b> per la constant oculta MAIN_FORCETHEME
|
||||||
WarningPagesWillBeDeleted=Advertència, això també suprimirà totes les pàgines/contenidors existents del lloc web. Hauríeu d'exportar el vostre lloc web abans, de manera que tingueu una còpia de seguretat per tornar-lo a importar més tard.
|
WarningPagesWillBeDeleted=Advertència, això també suprimirà totes les pàgines/contenidors existents del lloc web. Hauríeu d'exportar el vostre lloc web abans, de manera que tingueu una còpia de seguretat per tornar-lo a importar més tard.
|
||||||
WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Automatic validation is disabled when option to decrease stock is set on "Invoice validation".
|
WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=La validació automàtica es desactiva quan l'opció de disminució d'estoc s'estableix a "Validació de la factura".
|
||||||
WarningModuleNeedRefrech = Module <b>%s</b> has been disabled. Don't forget to enable it
|
WarningModuleNeedRefrech = El mòdul <b>%s</b> s'ha desactivat. No oblideu activar-lo
|
||||||
|
|
||||||
# Validate
|
# Validate
|
||||||
RequireValidValue = El valor no és vàlid
|
RequireValidValue = El valor no és vàlid
|
||||||
|
|||||||
@ -3,10 +3,10 @@ CommunitySupport=Assistència Forums i Wiki
|
|||||||
EMailSupport=Assistència E-Mail
|
EMailSupport=Assistència E-Mail
|
||||||
RemoteControlSupport=Suport en línia en temps real / remot
|
RemoteControlSupport=Suport en línia en temps real / remot
|
||||||
OtherSupport=Altres tipus d'assistència
|
OtherSupport=Altres tipus d'assistència
|
||||||
ToSeeListOfAvailableRessources=Per contactar/veure els recursos disponibles:
|
ToSeeListOfAvailableRessources=Per a contactar/veure els recursos disponibles:
|
||||||
HelpCenter=Centre d'ajuda
|
HelpCenter=Centre d'ajuda
|
||||||
DolibarrHelpCenter=Centre d'Ajuda i Suport de Dolibarr
|
DolibarrHelpCenter=Centre d'Ajuda i Suport de Dolibarr
|
||||||
ToGoBackToDolibarr=En cas contrari, <a href="%s"> fes clic aquí per continuar utilitzant Dolibarr </a>.
|
ToGoBackToDolibarr=En cas contrari, <a href="%s">feu clic aquí per a continuar utilitzant Dolibarr</a>.
|
||||||
TypeOfSupport=Tipus de suport
|
TypeOfSupport=Tipus de suport
|
||||||
TypeSupportCommunauty=Comunitari (gratuït)
|
TypeSupportCommunauty=Comunitari (gratuït)
|
||||||
TypeSupportCommercial=Comercial
|
TypeSupportCommercial=Comercial
|
||||||
@ -20,4 +20,4 @@ BackToHelpCenter=En cas contrari, <a href="%s"> torna a la pàgina d'inici del C
|
|||||||
LinkToGoldMember=Pots trucar a un dels formadors preseleccionats per Dolibarr pel teu idioma (%s) fent clic al seu Panell (l'estat i el preu màxim s'actualitzen automàticament):
|
LinkToGoldMember=Pots trucar a un dels formadors preseleccionats per Dolibarr pel teu idioma (%s) fent clic al seu Panell (l'estat i el preu màxim s'actualitzen automàticament):
|
||||||
PossibleLanguages=Idiomes disponibles
|
PossibleLanguages=Idiomes disponibles
|
||||||
SubscribeToFoundation=Ajuda al projecte Dolibarr, adhereix-te a l'associació
|
SubscribeToFoundation=Ajuda al projecte Dolibarr, adhereix-te a l'associació
|
||||||
SeeOfficalSupport=Per a obtenir suport oficial de Dolibarr en el vostre idioma: <br> <b> <a href="%s" target="_blank" rel="noopener noreferrer"> %s </a> </b>
|
SeeOfficalSupport=Per a obtenir suport oficial de Dolibarr en el vostre idioma: <br><b><a href="%s" target="_blank" rel="noopener noreferrer">%s</a></b>
|
||||||
|
|||||||
@ -8,7 +8,7 @@ MenuAddCP=Sol·licitud nova de dia lliure
|
|||||||
MenuCollectiveAddCP=Nova sol·licitud de festiu col·lectiu
|
MenuCollectiveAddCP=Nova sol·licitud de festiu col·lectiu
|
||||||
NotActiveModCP=Heu d'habilitar el mòdul Dies lliures per a veure aquesta pàgina.
|
NotActiveModCP=Heu d'habilitar el mòdul Dies lliures per a veure aquesta pàgina.
|
||||||
AddCP=Feu una sol·licitud de dia lliure
|
AddCP=Feu una sol·licitud de dia lliure
|
||||||
DateDebCP=Data inici
|
DateDebCP=Data d'inici
|
||||||
DateFinCP=Data fi
|
DateFinCP=Data fi
|
||||||
DraftCP=Esborrany
|
DraftCP=Esborrany
|
||||||
ToReviewCP=A l'espera d'aprovació
|
ToReviewCP=A l'espera d'aprovació
|
||||||
@ -85,7 +85,7 @@ AddEventToUserOkCP=S'ha completat la incorporació del dia lliure excepcional.
|
|||||||
ErrorFieldRequiredUserOrGroup=Cal omplir el camp "grup" o el camp "usuari".
|
ErrorFieldRequiredUserOrGroup=Cal omplir el camp "grup" o el camp "usuari".
|
||||||
fusionGroupsUsers=El camp de grups i el camp d'usuari es fusionaran
|
fusionGroupsUsers=El camp de grups i el camp d'usuari es fusionaran
|
||||||
MenuLogCP=Veure registre de canvis
|
MenuLogCP=Veure registre de canvis
|
||||||
LogCP=Registre de totes les actualitzacions fetes a "Saldo de dies lliures"
|
LogCP=Registre de totes les actualitzacions fetes a «Saldo de dies lliures»
|
||||||
ActionByCP=Actualitzat per
|
ActionByCP=Actualitzat per
|
||||||
UserUpdateCP=Actualitzat per a
|
UserUpdateCP=Actualitzat per a
|
||||||
PrevSoldeCP=Saldo anterior
|
PrevSoldeCP=Saldo anterior
|
||||||
@ -107,7 +107,7 @@ HolidaysCancelation=Cancel·lació de la sol·licitud de dies lliures
|
|||||||
EmployeeLastname=Cognoms de l'empleat
|
EmployeeLastname=Cognoms de l'empleat
|
||||||
EmployeeFirstname=Nom de l'empleat
|
EmployeeFirstname=Nom de l'empleat
|
||||||
TypeWasDisabledOrRemoved=El tipus de dia lliure (id %s) ha sigut desactivat o eliminat
|
TypeWasDisabledOrRemoved=El tipus de dia lliure (id %s) ha sigut desactivat o eliminat
|
||||||
LastHolidays=Les darreres %s sol·licituds de permís
|
LastHolidays=Últimes %s sol·licituds de dies lliures
|
||||||
AllHolidays=Totes les sol·licituds de permís
|
AllHolidays=Totes les sol·licituds de permís
|
||||||
HalfDay=Mig dia
|
HalfDay=Mig dia
|
||||||
NotTheAssignedApprover=No sou l'aprovador assignat
|
NotTheAssignedApprover=No sou l'aprovador assignat
|
||||||
@ -129,13 +129,13 @@ HolidaysToValidateBody=A continuació es mostra una sol·licitud de permís per
|
|||||||
HolidaysToValidateDelay=Aquesta sol·licitud de dies lliures retribuïts tindrà lloc en un termini de menys de %s dies.
|
HolidaysToValidateDelay=Aquesta sol·licitud de dies lliures retribuïts tindrà lloc en un termini de menys de %s dies.
|
||||||
HolidaysToValidateAlertSolde=L'usuari que ha realitzat la sol·licitud de dies lliures retribuïts no disposa de suficients dies disponibles
|
HolidaysToValidateAlertSolde=L'usuari que ha realitzat la sol·licitud de dies lliures retribuïts no disposa de suficients dies disponibles
|
||||||
HolidaysValidated=Sol·licituds de permís validats
|
HolidaysValidated=Sol·licituds de permís validats
|
||||||
HolidaysValidatedBody=La seva sol·licitud de dies lliures retribuïts des de el %s al %s ha sigut validada.
|
HolidaysValidatedBody=La vostra sol·licitud de dies lliures de %s a %s s'ha validat.
|
||||||
HolidaysRefused=Dies lliures retribuïts denegats
|
HolidaysRefused=Dies lliures retribuïts denegats
|
||||||
HolidaysRefusedBody=La seva sol·licitud de dies lliures retribuïts des de el %s al %s ha sigut denegada per el següent motiu:
|
HolidaysRefusedBody=La seva sol·licitud de dies lliures retribuïts des de el %s al %s ha sigut denegada per el següent motiu:
|
||||||
HolidaysCanceled=Dies lliures retribuïts cancel·lats
|
HolidaysCanceled=Dies lliures retribuïts cancel·lats
|
||||||
HolidaysCanceledBody=S'ha cancel·lat la vostra sol·licitud de permís del %s al %s.
|
HolidaysCanceledBody=S'ha cancel·lat la vostra sol·licitud de permís del %s al %s.
|
||||||
FollowedByACounter=1: Aquest tipus de dia lliure necessita el seguiment d'un comptador. El comptador s'incrementa manualment o automàticament i quan hi ha una petició de dia lliure validada, el comptador es decrementa.<br>0: No seguit per un comptador.
|
FollowedByACounter=1: Aquest tipus de dia lliure necessita el seguiment d'un comptador. El comptador s'incrementa manualment o automàticament i quan hi ha una petició de dia lliure validada, el comptador es decrementa.<br>0: No seguit per un comptador.
|
||||||
NoLeaveWithCounterDefined=No hi ha cap tipus de dia lliure definit que hagi de seguir un comptador
|
NoLeaveWithCounterDefined=No hi ha cap mena de dia lliure definit que hagi de ser seguit per un comptador
|
||||||
GoIntoDictionaryHolidayTypes=Aneu a <strong> Inici - Configuració - Diccionaris - Tipus de dies lliures </strong> per a configurar els diferents tipus de dies lliures.
|
GoIntoDictionaryHolidayTypes=Aneu a <strong> Inici - Configuració - Diccionaris - Tipus de dies lliures </strong> per a configurar els diferents tipus de dies lliures.
|
||||||
HolidaySetup=Configuració del mòdul Dies de permís
|
HolidaySetup=Configuració del mòdul Dies de permís
|
||||||
HolidaysNumberingModules=Models de numeració de sol·licituds de dies de permís
|
HolidaysNumberingModules=Models de numeració de sol·licituds de dies de permís
|
||||||
@ -149,10 +149,10 @@ XIsAUsualNonWorkingDay=%s sol ser un dia NO laborable
|
|||||||
BlockHolidayIfNegative=Bloqueja si el saldo és negatiu
|
BlockHolidayIfNegative=Bloqueja si el saldo és negatiu
|
||||||
LeaveRequestCreationBlockedBecauseBalanceIsNegative=La creació d'aquesta sol·licitud de vacances està bloquejada perquè el vostre saldo és negatiu
|
LeaveRequestCreationBlockedBecauseBalanceIsNegative=La creació d'aquesta sol·licitud de vacances està bloquejada perquè el vostre saldo és negatiu
|
||||||
ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La sol·licitud d'abandonament %s ha de ser esborrany, cancel·lada o rebutjada per eliminar-la
|
ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La sol·licitud d'abandonament %s ha de ser esborrany, cancel·lada o rebutjada per eliminar-la
|
||||||
IncreaseHolidays=Increase leave balance
|
IncreaseHolidays=Augmentar el saldo de dies lliures
|
||||||
HolidayRecordsIncreased= %s leave balances increased
|
HolidayRecordsIncreased= %s saldos de dies lliures augmentats
|
||||||
HolidayRecordIncreased=Leave balance increased
|
HolidayRecordIncreased=Saldo de dies lliures augmentat
|
||||||
ConfirmMassIncreaseHoliday=Bulk leave balance increase
|
ConfirmMassIncreaseHoliday=Augment massiu del saldo de dies lliures
|
||||||
NumberDayAddMass=Number of day to add to the selection
|
NumberDayAddMass=Nombre de dia per a afegir a la selecció
|
||||||
ConfirmMassIncreaseHolidayQuestion=Are you sure you want to increase holiday of the %s selected record(s)?
|
ConfirmMassIncreaseHolidayQuestion=Esteu segur que voleu augmentar les vacances dels registres seleccionats %s?
|
||||||
HolidayQtyNotModified=El saldo dels dies restants per a %s no s'ha canviat
|
HolidayQtyNotModified=El saldo dels dies restants per a %s no s'ha canviat
|
||||||
|
|||||||
@ -8,7 +8,7 @@ ConfFileIsNotWritable=L'arxiu de configuració <b>%s</b> no és modificable. Com
|
|||||||
ConfFileIsWritable=L'arxiu <b>%s</b> és modificable.
|
ConfFileIsWritable=L'arxiu <b>%s</b> és modificable.
|
||||||
ConfFileMustBeAFileNotADir=El fitxer de configuració <b> %s</b> ha de ser un fitxer, no un directori.
|
ConfFileMustBeAFileNotADir=El fitxer de configuració <b> %s</b> ha de ser un fitxer, no un directori.
|
||||||
ConfFileReload=Actualització dels paràmetres del fitxer de configuració.
|
ConfFileReload=Actualització dels paràmetres del fitxer de configuració.
|
||||||
NoReadableConfFileSoStartInstall=El fitxer de configuració <b> conf/conf.php </b> no existeix o no es pot llegir. Executarem el procés d'instal·lació per intentar inicialitzar-lo.
|
NoReadableConfFileSoStartInstall=El fitxer de configuració <b>conf/conf.php</b> no existeix o no es pot llegir. Executarem el procés d'instal·lació per a intentar inicialitzar-lo.
|
||||||
PHPSupportPOSTGETOk=Aquest PHP suporta bé les variables POST i GET.
|
PHPSupportPOSTGETOk=Aquest PHP suporta bé les variables POST i GET.
|
||||||
PHPSupportPOSTGETKo=És possible que aquest PHP no suport les variables POST i/o GET. Comproveu el paràmetre <b>variables_order</b> del php.ini.
|
PHPSupportPOSTGETKo=És possible que aquest PHP no suport les variables POST i/o GET. Comproveu el paràmetre <b>variables_order</b> del php.ini.
|
||||||
PHPSupportSessions=Aquest PHP suporta sessions
|
PHPSupportSessions=Aquest PHP suporta sessions
|
||||||
@ -82,7 +82,7 @@ GoToDolibarr=Aneu a Dolibarr
|
|||||||
GoToSetupArea=Aneu a Dolibarr (àrea de configuració)
|
GoToSetupArea=Aneu a Dolibarr (àrea de configuració)
|
||||||
MigrationNotFinished=La versió de la base de dades no està completament actualitzada: torneu a executar el procés d'actualització.
|
MigrationNotFinished=La versió de la base de dades no està completament actualitzada: torneu a executar el procés d'actualització.
|
||||||
GoToUpgradePage=Aneu de nou a la pàgina d'actualització
|
GoToUpgradePage=Aneu de nou a la pàgina d'actualització
|
||||||
WithNoSlashAtTheEnd=Sense el signe "/" al final
|
WithNoSlashAtTheEnd=Sense la barra inclinada «/» al final
|
||||||
DirectoryRecommendation= <span class="warning"> IMPORTANT </span>: Heu d'utilitzar un directori que es troba fora de les pàgines web (no utilitzeu un subdirector del paràmetre anterior).
|
DirectoryRecommendation= <span class="warning"> IMPORTANT </span>: Heu d'utilitzar un directori que es troba fora de les pàgines web (no utilitzeu un subdirector del paràmetre anterior).
|
||||||
LoginAlreadyExists=Ja existeix
|
LoginAlreadyExists=Ja existeix
|
||||||
DolibarrAdminLogin=Nom d'usuari d’administrador de Dolibarr
|
DolibarrAdminLogin=Nom d'usuari d’administrador de Dolibarr
|
||||||
@ -94,7 +94,7 @@ ChoosedMigrateScript=Elecció de l'script de migració
|
|||||||
DataMigration=Migració de la base de dades (dades)
|
DataMigration=Migració de la base de dades (dades)
|
||||||
DatabaseMigration=Migració de la base de dades (estructura + algunes dades)
|
DatabaseMigration=Migració de la base de dades (estructura + algunes dades)
|
||||||
ProcessMigrateScript=Execució del script
|
ProcessMigrateScript=Execució del script
|
||||||
ChooseYourSetupMode=Trieu el mode de configuració i feu clic a "Comença"...
|
ChooseYourSetupMode=Trieu el vostre mode de configuració i feu clic a «Inici»...
|
||||||
FreshInstall=Nova instal·lació
|
FreshInstall=Nova instal·lació
|
||||||
FreshInstallDesc=Utilitzeu aquest mode si aquesta és la vostra primera instal·lació. Si no, aquest mode pot reparar una instal·lació prèvia incompleta. Si voleu actualitzar la vostra versió, seleccioneu "Actualitzar".
|
FreshInstallDesc=Utilitzeu aquest mode si aquesta és la vostra primera instal·lació. Si no, aquest mode pot reparar una instal·lació prèvia incompleta. Si voleu actualitzar la vostra versió, seleccioneu "Actualitzar".
|
||||||
Upgrade=Actualització
|
Upgrade=Actualització
|
||||||
@ -129,7 +129,7 @@ MigrationCustomerOrderShipping=Migració de dades d'enviament de comandes de ven
|
|||||||
MigrationShippingDelivery=Actualització de les dades d'enviaments
|
MigrationShippingDelivery=Actualització de les dades d'enviaments
|
||||||
MigrationShippingDelivery2=Actualització de les dades d'enviaments 2
|
MigrationShippingDelivery2=Actualització de les dades d'enviaments 2
|
||||||
MigrationFinished=S'ha acabat la migració
|
MigrationFinished=S'ha acabat la migració
|
||||||
LastStepDesc=<strong> Darrer pas </strong>: definiu aquí l'inici de sessió i la contrasenya que voleu utilitzar per connectar-se a Dolibarr. <b> No perdis això, ja que és el compte mestre per administrar tots els altres / comptes d'usuari addicionals.</b>
|
LastStepDesc=<strong>Últim pas</strong>: Definiu aquí l'inici de sessió i la contrasenya que voleu utilitzar per a connectar-vos a Dolibarr. <b>No la perdeu, ja que és el compte principal per a administrar tots els altres comptes d'usuari addicionals.</b>
|
||||||
ActivateModule=Activació del mòdul %s
|
ActivateModule=Activació del mòdul %s
|
||||||
ShowEditTechnicalParameters=Feu clic aquí per a mostrar/editar els paràmetres avançats (mode expert)
|
ShowEditTechnicalParameters=Feu clic aquí per a mostrar/editar els paràmetres avançats (mode expert)
|
||||||
WarningUpgrade=Avís:\nHas fet una còpia de seguretat de la base de dades primer?\nAixò és molt recomanable. La pèrdua de dades (a causa, per exemple, d'errors a la versió de mysql 5.5.40/41/42/43) és possible durant aquest procés, per la qual cosa és essencial fer un bolcat complet de la base de dades abans d'iniciar qualsevol migració.\n\nFeu clic a D'acord per a iniciar el procés de migració...
|
WarningUpgrade=Avís:\nHas fet una còpia de seguretat de la base de dades primer?\nAixò és molt recomanable. La pèrdua de dades (a causa, per exemple, d'errors a la versió de mysql 5.5.40/41/42/43) és possible durant aquest procés, per la qual cosa és essencial fer un bolcat complet de la base de dades abans d'iniciar qualsevol migració.\n\nFeu clic a D'acord per a iniciar el procés de migració...
|
||||||
@ -157,7 +157,7 @@ MigrationPaymentsUpdate=Actualització dels pagaments (vincle nn pagaments-factu
|
|||||||
MigrationPaymentsNumberToUpdate=%s pagament(s) a actualitzar
|
MigrationPaymentsNumberToUpdate=%s pagament(s) a actualitzar
|
||||||
MigrationProcessPaymentUpdate=Actualització pagament(s) %s
|
MigrationProcessPaymentUpdate=Actualització pagament(s) %s
|
||||||
MigrationPaymentsNothingToUpdate=No hi ha més pagaments orfes que hagin de corregir.
|
MigrationPaymentsNothingToUpdate=No hi ha més pagaments orfes que hagin de corregir.
|
||||||
MigrationPaymentsNothingUpdatable=No hi ha més pagaments per corregir
|
MigrationPaymentsNothingUpdatable=No hi ha més pagaments que es puguin corregir
|
||||||
MigrationContractsUpdate=Actualització dels contractes sense detalls (gestió del contracte + detall de contracte)
|
MigrationContractsUpdate=Actualització dels contractes sense detalls (gestió del contracte + detall de contracte)
|
||||||
MigrationContractsNumberToUpdate=%s contracte(s) a actualitzar
|
MigrationContractsNumberToUpdate=%s contracte(s) a actualitzar
|
||||||
MigrationContractsLineCreation=Crea una línia de contracte per referència del contracte %s
|
MigrationContractsLineCreation=Crea una línia de contracte per referència del contracte %s
|
||||||
@ -165,8 +165,8 @@ MigrationContractsNothingToUpdate=No hi ha més contractes (vinculats a un produ
|
|||||||
MigrationContractsFieldDontExist=El camp fk_facture ja no existeix. Res a fer.
|
MigrationContractsFieldDontExist=El camp fk_facture ja no existeix. Res a fer.
|
||||||
MigrationContractsEmptyDatesUpdate=Correcció de la data buida de contracte
|
MigrationContractsEmptyDatesUpdate=Correcció de la data buida de contracte
|
||||||
MigrationContractsEmptyDatesUpdateSuccess=La correcció de la data buida del contracte s'ha realitzat correctament
|
MigrationContractsEmptyDatesUpdateSuccess=La correcció de la data buida del contracte s'ha realitzat correctament
|
||||||
MigrationContractsEmptyDatesNothingToUpdate=No hi ha data de contracte buida per corregir
|
MigrationContractsEmptyDatesNothingToUpdate=Cap data de contracte buida a corregir
|
||||||
MigrationContractsEmptyCreationDatesNothingToUpdate=No hi ha data de creació del contracte per corregir
|
MigrationContractsEmptyCreationDatesNothingToUpdate=Cap data de creació de contracte a corregir
|
||||||
MigrationContractsInvalidDatesUpdate=Correcció del valor incorrecte de la data de contracte
|
MigrationContractsInvalidDatesUpdate=Correcció del valor incorrecte de la data de contracte
|
||||||
MigrationContractsInvalidDateFix=Corregir contracte %s (data contracte=%s, Data posada en servei min=%s)
|
MigrationContractsInvalidDateFix=Corregir contracte %s (data contracte=%s, Data posada en servei min=%s)
|
||||||
MigrationContractsInvalidDatesNumber=%s contractes modificats
|
MigrationContractsInvalidDatesNumber=%s contractes modificats
|
||||||
@ -205,13 +205,13 @@ MigrationResetBlockedLog=Restablir el mòdul BlockedLog per l'algoritme v7
|
|||||||
MigrationImportOrExportProfiles=Migració de perfils d'importació o exportació (%s)
|
MigrationImportOrExportProfiles=Migració de perfils d'importació o exportació (%s)
|
||||||
ShowNotAvailableOptions=Mostra les opcions no disponibles
|
ShowNotAvailableOptions=Mostra les opcions no disponibles
|
||||||
HideNotAvailableOptions=Amaga les opcions no disponibles
|
HideNotAvailableOptions=Amaga les opcions no disponibles
|
||||||
ErrorFoundDuringMigration=S'han reportat error(s) durant el procés de migració, de manera que el següent pas no està disponible. Per ignorar els errors, podeu <a href="%s"> fer clic aquí </a>, però l'aplicació o algunes funcions no funcionen correctament fins que es resolen els errors.
|
ErrorFoundDuringMigration=S'han informat errors durant el procés de migració, de manera que el pas següent no està disponible. Per a ignorar els errors, podeu fer <a href="%s">clic aquí</a>, però és possible que l'aplicació o algunes funcions no funcionin correctament fins que es resolguin els errors.
|
||||||
YouTryInstallDisabledByDirLock=L'aplicació ha intentat actualitzar-se automàticament, però les pàgines d'instal·lació / actualització s'han desactivat per a la seguretat (el directori rep el nom amb el sufix .lock). <br>
|
YouTryInstallDisabledByDirLock=L'aplicació ha intentat actualitzar-se automàticament, però les pàgines d'instal·lació / actualització s'han desactivat per a la seguretat (el directori rep el nom amb el sufix .lock). <br>
|
||||||
YouTryInstallDisabledByFileLock=L'aplicació s'ha intentat actualitzar automàticament, però les pàgines d'instal·lació / actualització s'han desactivat per a la seguretat (per l'existència d'un fitxer de bloqueig <strong> install.lock </strong> al directori de documents del dolibarr). <br>
|
YouTryInstallDisabledByFileLock=L'aplicació s'ha intentat actualitzar automàticament, però les pàgines d'instal·lació / actualització s'han desactivat per a la seguretat (per l'existència d'un fitxer de bloqueig <strong> install.lock </strong> al directori de documents del dolibarr). <br>
|
||||||
YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.<br>
|
YouTryUpgradeDisabledByMissingFileUnLock=L'aplicació ha intentat actualitzar-se, però el procés d'actualització no està permès actualment. <br>
|
||||||
ClickHereToGoToApp=Fes clic aquí per anar a la teva aplicació
|
ClickHereToGoToApp=Fes clic aquí per anar a la teva aplicació
|
||||||
ClickOnLinkOrRemoveManualy=Si una actualització està en curs, espereu. Si no, feu clic al següent enllaç. Si sempre veieu aquesta mateixa pàgina, heu de suprimir / canviar el nom del fitxer install.lock del directori de documents.
|
ClickOnLinkOrRemoveManualy=Si una actualització està en curs, espereu. Si no, feu clic al següent enllaç. Si sempre veieu aquesta mateixa pàgina, heu de suprimir / canviar el nom del fitxer install.lock del directori de documents.
|
||||||
ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory.
|
ClickOnLinkOrCreateUnlockFileManualy=Si hi ha una actualització en curs, espereu... Si no, heu de crear un fitxer upgrade.unlock al directori de documents de Dolibarr.
|
||||||
Loaded=Carregat
|
Loaded=Carregat
|
||||||
FunctionTest=Prova de funció
|
FunctionTest=Prova de funció
|
||||||
NodoUpgradeAfterDB=Cap acció sol·licitada pels mòduls externs després de l'actualització de la base de dades
|
NodoUpgradeAfterDB=Cap acció sol·licitada pels mòduls externs després de l'actualització de la base de dades
|
||||||
|
|||||||
@ -24,9 +24,9 @@ NameAndSignatureOfInternalContact=Nom i signatura del participant:
|
|||||||
NameAndSignatureOfExternalContact=Nom i signatura del client:
|
NameAndSignatureOfExternalContact=Nom i signatura del client:
|
||||||
DocumentModelStandard=Document model estàndard per a intervencions
|
DocumentModelStandard=Document model estàndard per a intervencions
|
||||||
InterventionCardsAndInterventionLines=Fitxes i línies d'intervenció
|
InterventionCardsAndInterventionLines=Fitxes i línies d'intervenció
|
||||||
InterventionClassifyBilled=Classifica "Facturat"
|
InterventionClassifyBilled=Marca «Facturat»
|
||||||
InterventionClassifyUnBilled=Classifica "No facturat"
|
InterventionClassifyUnBilled=Marca «No facturat»
|
||||||
InterventionClassifyDone=Classifica com a "Fet"
|
InterventionClassifyDone=Marca «Fet»
|
||||||
StatusInterInvoiced=Facturada
|
StatusInterInvoiced=Facturada
|
||||||
SendInterventionRef=Presentar intervenció %s
|
SendInterventionRef=Presentar intervenció %s
|
||||||
SendInterventionByMail=Envia la intervenció per e-mail
|
SendInterventionByMail=Envia la intervenció per e-mail
|
||||||
@ -50,7 +50,7 @@ UseDateWithoutHourOnFichinter=Oculta hores i minuts del camp de dates dels regis
|
|||||||
InterventionStatistics=Estadístiques de intervencions
|
InterventionStatistics=Estadístiques de intervencions
|
||||||
NbOfinterventions=Nombre de fitxers d’intervenció
|
NbOfinterventions=Nombre de fitxers d’intervenció
|
||||||
NumberOfInterventionsByMonth=Nombre de fitxes d'intervenció per mes (data de validació)
|
NumberOfInterventionsByMonth=Nombre de fitxes d'intervenció per mes (data de validació)
|
||||||
AmountOfInteventionNotIncludedByDefault=La quantitat d'intervenció no s'inclou per defecte als beneficis (en la majoria dels casos, les fulles de temps s'utilitzen per a comptar el temps dedicat). Afegiu l'opció PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT a 1 a Inici-Vonfiguració-Altres per a incloure'ls.
|
AmountOfInteventionNotIncludedByDefault=La quantitat d'intervenció no s'inclou per defecte als beneficis (en la majoria dels casos, les fulles de temps s'utilitzen per a comptar el temps dedicat). Podeu utilitzar l'opció PROJECT_ELEMENTS_FOR_ADD_MARGIN i PROJECT_ELEMENTS_FOR_MINUS_MARGIN a la configuració d'Inici-Configuració-Altres per a completar la llista d'elements inclosos als beneficis.
|
||||||
InterId=Id. d'intervenció
|
InterId=Id. d'intervenció
|
||||||
InterRef=Ref. d'intervenció
|
InterRef=Ref. d'intervenció
|
||||||
InterDateCreation=Data de creació de la intervenció
|
InterDateCreation=Data de creació de la intervenció
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user