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

develop

Conflicts:
	htdocs/install/mysql/migration/3.5.0-3.6.0.sql
This commit is contained in:
Florian HENRY 2014-06-17 12:01:45 +02:00
commit df9f153142
559 changed files with 12449 additions and 10965 deletions

View File

@ -65,6 +65,7 @@ For users:
- Fix: Add actions events not implemented. - Fix: Add actions events not implemented.
- Fix: Price min of composition is not supplier price min by quantity. - Fix: Price min of composition is not supplier price min by quantity.
- Fix: [ bug #1356 ] Bank accountancy number is limited to 8 numbers. - Fix: [ bug #1356 ] Bank accountancy number is limited to 8 numbers.
- Fix: [ bug #1439 ] impossible to remove a a translation (multilanguage-feature)
TODO TODO
- New: Predefined product and free product use same form. - New: Predefined product and free product use same form.
@ -105,6 +106,15 @@ removed. You must now use the 6 parameters way. See file modMyModule.class.php f
- Properties "civilite_id" were renamed into "civility_id". - Properties "civilite_id" were renamed into "civility_id".
***** ChangeLog for 3.5.4 compared to 3.5.3 *****
Fix: [ bug #1415 ] Intervention document model name and suppliers model names is not shown
properly in module configuration
Fix: [ bug #1416 ] Supplier order does not list document models in the select box of the
supplier order card
Fix: [ bug #1443 ] Payment conditions is erased after editing supplier invoice label or
limit date for payment
***** ChangeLog for 3.5.3 compared to 3.5.2 ***** ***** ChangeLog for 3.5.3 compared to 3.5.2 *****
Fix: Error on field accountancy code for export profile of invoices. Fix: Error on field accountancy code for export profile of invoices.
Fix: [ bug #1351 ] VIES verification link broken. Fix: [ bug #1351 ] VIES verification link broken.
@ -133,6 +143,13 @@ Fix: [ bug #1393 ] PHP Warning when creating a supplier invoice.
Fix: [ bug #1399 ] [pgsql] Silent warning when setting a propal as "facturée" in propal.php Fix: [ bug #1399 ] [pgsql] Silent warning when setting a propal as "facturée" in propal.php
Fix: When number reach 9999 with default numbering module, next number Fix: When number reach 9999 with default numbering module, next number
will be 10000 instead of 0000 and error. will be 10000 instead of 0000 and error.
Fix: element page on project give wrong href link.
Fix: [ bug #1397 ] Filter by supplier orders with status Draft does not filter.
Fix: [ bug #1388 ] Wrong date when invoicing several orders.
Fix: [ bug #1411 ] Unable to set an expedition note if invoices module is not enabled.
Fix: [ bug #1407 ] Rouget pdf overlapped when using tracking number and public notes.
Fix: [ bug #1405 ] Rouget PDF expedition incorrect when two expeditions under the same commande
Fix: [ bug #1434 ] Muscadet supplier order document model linked objects overlap the text
***** ChangeLog for 3.5.2 compared to 3.5.1 ***** ***** ChangeLog for 3.5.2 compared to 3.5.1 *****
Fix: Can't add user for a task. Fix: Can't add user for a task.
@ -220,6 +237,7 @@ Fix: [ bug #1306 ] Fatal error when adding an external calendar.
New: Added es_CL language New: Added es_CL language
Fix: Margin tabs bad data show Fix: Margin tabs bad data show
Fix: [ bug #1318 ] Problem with enter key when adding an existing product to a customer invoice. Fix: [ bug #1318 ] Problem with enter key when adding an existing product to a customer invoice.
Fix: [ bug #1410 ] Add customer order line asks for required Unit Price but doesn't interrupt the creation of the line
***** ChangeLog for 3.5 compared to 3.4.* ***** ***** ChangeLog for 3.5 compared to 3.4.* *****
For users: For users:

View File

@ -5,6 +5,13 @@ dolibarr (3.6.0-1) unstable; urgency=low
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Sat, 9 May 2014 12:00:00 +0100 -- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Sat, 9 May 2014 12:00:00 +0100
dolibarr (3.5.4-3) unstable; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 1 July 2014 12:00:00 +0100
dolibarr (3.5.3-3) unstable; urgency=low dolibarr (3.5.3-3) unstable; urgency=low
[ Laurent Destailleur (eldy) ] [ Laurent Destailleur (eldy) ]

View File

@ -39,10 +39,10 @@ Description: Web based software to manage a company or foundation
It's a web software you can install as a standalone program or on any web It's a web software you can install as a standalone program or on any web
hosting provider to use it from anywhere with any web browser. hosting provider to use it from anywhere with any web browser.
. .
Dolibarr was designed to be easy to use. Only the features that you need are Dolibarr was designed to be easy to use. Only the features that you need
visible, depending on which modules were activated. are visible, depending on which modules were activated.
. .
Most common used modules are: This is an example of most common used modules:
. .
Customers, Suppliers or Prospects directory, Customers, Suppliers or Prospects directory,
Contacts directory, Contacts directory,
@ -66,6 +66,6 @@ Description: Web based software to manage a company or foundation
Wizards to export and import data, Wizards to export and import data,
LDAP connectivity, LDAP connectivity,
PDF exports, PDF exports,
And a lot of more modules... And a lot more modules...
. .
You can also add third parties external modules or develop yours. You can also add third parties external modules or develop yours.

View File

@ -336,6 +336,9 @@ fi
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b * Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
- Upstream release - Upstream release
* Tue July 1 2014 Laurent Destailleur 3.5.4-0.3
- Upstream release
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3 * Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
- Upstream release - Upstream release

View File

@ -572,6 +572,9 @@ fi
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b * Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
- Upstream release - Upstream release
* Tue July 1 2014 Laurent Destailleur 3.5.4-0.3
- Upstream release
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3 * Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
- Upstream release - Upstream release

View File

@ -341,6 +341,9 @@ fi
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b * Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
- Upstream release - Upstream release
* Tue July 1 2014 Laurent Destailleur 3.5.4-0.3
- Upstream release
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3 * Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
- Upstream release - Upstream release

View File

@ -352,6 +352,9 @@ fi
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b * Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
- Upstream release - Upstream release
* Tue July 1 2014 Laurent Destailleur 3.5.4-0.3
- Upstream release
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3 * Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
- Upstream release - Upstream release

View File

@ -15,7 +15,7 @@ fi
# To detect # To detect
if [ "x$1" = "xlist" ] if [ "x$1" = "xlist" ]
then then
for file in `find . -type f` for file in `find . -type f -name *.lang`
do do
if [ `sort "$file" | uniq -d | wc -l` -gt 0 ] if [ `sort "$file" | uniq -d | wc -l` -gt 0 ]
then then
@ -27,7 +27,7 @@ fi
# To fix # To fix
if [ "x$1" = "xfix" ] if [ "x$1" = "xfix" ]
then then
for file in `find . -type f` for file in `find . -type f -name *.lang`
do do
awk -i inplace ' !x[$0]++' "$file" awk -i inplace ' !x[$0]++' "$file"
done; done;

View File

@ -30,8 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
if (!$user->admin) if (!$user->admin) accessforbidden();
accessforbidden();
$langs->load("agenda"); $langs->load("agenda");
$langs->load("admin"); $langs->load("admin");
@ -63,7 +62,7 @@ if ($actionsave)
// Save agendas // Save agendas
while ($i <= $MAXAGENDA) while ($i <= $MAXAGENDA)
{ {
$name=trim(GETPOST('agenda_ext_name'.$i),'alpha'); $name=trim(GETPOST('agenda_ext_name'.$i,'alpha'));
$src=trim(GETPOST('agenda_ext_src'.$i,'alpha')); $src=trim(GETPOST('agenda_ext_src'.$i,'alpha'));
$color=trim(GETPOST('agenda_ext_color'.$i,'alpha')); $color=trim(GETPOST('agenda_ext_color'.$i,'alpha'));
if ($color=='-1') $color=''; if ($color=='-1') $color='';
@ -76,7 +75,7 @@ if ($actionsave)
break; break;
} }
//print 'color='.$color; //print '-name='.$name.'-color='.$color;
$res=dolibarr_set_const($db,'AGENDA_EXT_NAME'.$i,$name,'chaine',0,'',$conf->entity); $res=dolibarr_set_const($db,'AGENDA_EXT_NAME'.$i,$name,'chaine',0,'',$conf->entity);
if (! $res > 0) $error++; if (! $res > 0) $error++;
$res=dolibarr_set_const($db,'AGENDA_EXT_SRC'.$i,$src,'chaine',0,'',$conf->entity); $res=dolibarr_set_const($db,'AGENDA_EXT_SRC'.$i,$src,'chaine',0,'',$conf->entity);
@ -218,8 +217,7 @@ print '</table>';
print '<br>'; print '<br>';
print '<center>'; print '<center>';
print "<input type=\"submit\" id=\"save\" name=\"save\" class=\"button hideifnotset\" value=\"".$langs->trans("Save")."\">";
print "<input type=\"submit\" name=\"save\" class=\"button\" value=\"".$langs->trans("Save")."\">";
print "</center>"; print "</center>";
print "</form>\n"; print "</form>\n";

View File

@ -500,7 +500,7 @@ print "</tr>\n";
clearstatcache(); clearstatcache();
$var=true; $var=true;
foreach ($dirmodels as $reldir) foreach ($def as $reldir)
{ {
foreach (array('','/doc') as $valdir) foreach (array('','/doc') as $valdir)
{ {

View File

@ -376,13 +376,16 @@ foreach ($dirmodels as $reldir)
{ {
if (substr($file, dol_strlen($file) -12) == '.modules.php' && substr($file,0,4) == 'pdf_') if (substr($file, dol_strlen($file) -12) == '.modules.php' && substr($file,0,4) == 'pdf_')
{ {
$var=!$var;
$name = substr($file, 4, dol_strlen($file) -16); $name = substr($file, 4, dol_strlen($file) -16);
$classname = substr($file, 0, dol_strlen($file) -12); $classname = substr($file, 0, dol_strlen($file) -12);
$var=!$var; require_once $dir.'/'.$file;
$module = new $classname($db);
print '<tr '.$bc[$var].'><td>'; print '<tr '.$bc[$var].'><td>';
echo "$name"; print (empty($module->name)?$name:$module->name);
print "</td><td>\n"; print "</td><td>\n";
require_once $dir.$file; require_once $dir.$file;
$module = new $classname($db); $module = new $classname($db);

View File

@ -372,9 +372,14 @@ foreach ($dirmodels as $reldir)
$name = substr($file, 4, dol_strlen($file) -16); $name = substr($file, 4, dol_strlen($file) -16);
$classname = substr($file, 0, dol_strlen($file) -12); $classname = substr($file, 0, dol_strlen($file) -12);
require_once $dir.'/'.$file;
$module = new $classname($db, new FactureFournisseur($db));
$var=!$var; $var=!$var;
print "<tr ".$bc[$var].">\n"; print "<tr ".$bc[$var].">\n";
print "<td>".$name."</td>\n"; print "<td>";
print (empty($module->name)?$name:$module->name);
print "</td>\n";
print "<td>\n"; print "<td>\n";
require_once $dir.$file; require_once $dir.$file;
$module = new $classname($db,$specimenthirdparty); $module = new $classname($db,$specimenthirdparty);

View File

@ -42,6 +42,7 @@ accessforbidden();
$type=GETPOST('type', 'alpha'); $type=GETPOST('type', 'alpha');
$value=GETPOST('value', 'alpha'); $value=GETPOST('value', 'alpha');
$label = GETPOST('label','alpha');
$action=GETPOST('action', 'alpha'); $action=GETPOST('action', 'alpha');
$specimenthirdparty=new Societe($db); $specimenthirdparty=new Societe($db);
@ -367,9 +368,14 @@ foreach ($dirmodels as $reldir)
$name = substr($file, 4, dol_strlen($file) -16); $name = substr($file, 4, dol_strlen($file) -16);
$classname = substr($file, 0, dol_strlen($file) -12); $classname = substr($file, 0, dol_strlen($file) -12);
require_once $dir.'/'.$file;
$module = new $classname($db, new CommandeFournisseur($db));
$var=!$var; $var=!$var;
print "<tr ".$bc[$var].">\n"; print "<tr ".$bc[$var].">\n";
print "<td>".$name."</td>\n"; print "<td>";
print (empty($module->name)?$name:$module->name);
print "</td>\n";
print "<td>\n"; print "<td>\n";
require_once $dir.$file; require_once $dir.$file;
$module = new $classname($db,$specimenthirdparty); $module = new $classname($db,$specimenthirdparty);

View File

@ -86,18 +86,35 @@ print '</br>';
// OPCode cache // OPCode cache
print '<br>'; print '<br>';
print '<strong>'.$langs->trans("OPCodeCache").'</strong>: '; print '<strong>'.$langs->trans("OPCodeCache").'</strong>: ';
$test1=function_exists('xcache_info'); $foundcache=0;
if ($test1) $test=function_exists('xcache_info');
if (! $foundcache && $test)
{ {
$foundcache++;
print img_picto('','tick.png').' '.$langs->trans("XCacheInstalled"); print img_picto('','tick.png').' '.$langs->trans("XCacheInstalled");
print ' '.$langs->trans("MoreInformation").' <a href="'.DOL_URL_ROOT.'/admin/system/xcache.php'.'">Xcache admin page</a>'; print ' '.$langs->trans("MoreInformation").' <a href="'.DOL_URL_ROOT.'/admin/system/xcache.php'.'">Xcache admin page</a>';
} }
$test=function_exists('eaccelerator_info');
if (! $foundcache && $test)
{
$foundcache++;
print img_picto('','tick.png').' '.$langs->trans("EAcceleratorInstalled");
}
$test=function_exists('apc_cache_info');
if (! $foundcache && $test)
{
//var_dump(apc_cache_info());
if (ini_get('apc.enabled'))
{
$foundcache++;
print img_picto('','tick.png').' '.$langs->trans("APCInstalled");
}
else else
{ {
$test2=function_exists('eaccelerator_info'); print img_picto('','warning').' '.$langs->trans("APCCacheInstalledButDisabled");
if ($test2) print img_picto('','tick.png').' '.$langs->trans("EAcceleratorInstalled");
else print $langs->trans("NoOPCodeCacheFound");
} }
}
if (! $foundcache) print $langs->trans("NoOPCodeCacheFound");
print '<br>'; print '<br>';
// HTTPCacheStaticResources // HTTPCacheStaticResources

View File

@ -54,16 +54,23 @@ print '</div>';
print '<div class="principal">'; print '<div class="principal">';
if ( $_GET['menu'] ) $page=GETPOST('menu','alpha');
if (in_array(
$page,
array(
'deconnexion',
'index','index_verif','facturation','facturation_verif','facturation_dhtml',
'validation','validation_ok','validation_ticket','validation_verif',
)
))
{ {
include $_GET['menu'].'.php'; include $page.'.php';
} }
else else
{ {
include 'facturation.php'; dol_print_error('','menu param '.$page.' is not inside allowed list');
} }
print '</div>'; print '</div>';
$_SESSION['serObjFacturation'] = serialize($obj_facturation); $_SESSION['serObjFacturation'] = serialize($obj_facturation);

View File

@ -61,9 +61,8 @@ class ICal
if (is_array($tmparray)) if (is_array($tmparray))
{ {
$file_text = join("", $tmparray); //load file $file_text = join("", $tmparray); //load file
$file_text = preg_replace("/[\r\n]{1,} ([:;])/","\\1",$file_text); $file_text = preg_replace("/[\r\n]{1,} /","",$file_text);
} }
return $file_text; // return all text return $file_text; // return all text
} }
@ -115,6 +114,7 @@ class ICal
{ {
// get Key and Value VCALENDAR:Begin -> Key = VCALENDAR, Value = begin // get Key and Value VCALENDAR:Begin -> Key = VCALENDAR, Value = begin
list($key, $value) = $this->retun_key_value($text); list($key, $value) = $this->retun_key_value($text);
//var_dump($text.' -> '.$key.' - '.$value);
switch ($text) // search special string switch ($text) // search special string
{ {
@ -165,6 +165,8 @@ class ICal
} }
} }
} }
//var_dump($this->cal);
return $this->cal; return $this->cal;
} }
@ -236,6 +238,7 @@ class ICal
*/ */
function retun_key_value($text) function retun_key_value($text)
{ {
/*
preg_match("/([^:]+)[:]([\w\W]+)/", $text, $matches); preg_match("/([^:]+)[:]([\w\W]+)/", $text, $matches);
if (empty($matches)) if (empty($matches))
@ -246,8 +249,8 @@ class ICal
{ {
$matches = array_splice($matches, 1, 2); $matches = array_splice($matches, 1, 2);
return $matches; return $matches;
} }*/
return explode(':',$text,2);
} }
/** /**

View File

@ -203,12 +203,6 @@ if ($action == 'add_action')
$action = 'create'; $action = 'create';
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("DateEnd")).'</div>'; $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("DateEnd")).'</div>';
} }
if (! empty($datep) && GETPOST('percentage') == 0)
{
$error++;
$action = 'create';
$mesg='<div class="error">'.$langs->trans("ErrorStatusCantBeZeroIfStarted").'</div>';
}
if (! GETPOST('apyear') && ! GETPOST('adyear')) if (! GETPOST('apyear') && ! GETPOST('adyear'))
{ {

View File

@ -146,9 +146,11 @@ if (empty($conf->global->AGENDA_DISABLE_EXT) && $conf->global->AGENDA_EXT_NB > 0
$source='AGENDA_EXT_SRC'.$i; $source='AGENDA_EXT_SRC'.$i;
$name='AGENDA_EXT_NAME'.$i; $name='AGENDA_EXT_NAME'.$i;
$color='AGENDA_EXT_COLOR'.$i; $color='AGENDA_EXT_COLOR'.$i;
$buggedfile='AGENDA_EXT_BUGGEDFILE'.$i;
if (! empty($conf->global->$source) && ! empty($conf->global->$name)) if (! empty($conf->global->$source) && ! empty($conf->global->$name))
{ {
$listofextcals[]=array('src'=>$conf->global->$source,'name'=>$conf->global->$name,'color'=>$conf->global->$color); // Note: $conf->global->buggedfile can be empty or 'uselocalandtznodaylight' or 'uselocalandtzdaylight'
$listofextcals[]=array('src'=>$conf->global->$source,'name'=>$conf->global->$name,'color'=>$conf->global->$color,'buggedfile'=>(isset($conf->global->buggedfile)?$conf->global->buggedfile:0));
} }
} }
} }
@ -527,9 +529,11 @@ if (count($listofextcals))
$url=$extcal['src']; // Example: https://www.google.com/calendar/ical/eldy10%40gmail.com/private-cde92aa7d7e0ef6110010a821a2aaeb/basic.ics $url=$extcal['src']; // Example: https://www.google.com/calendar/ical/eldy10%40gmail.com/private-cde92aa7d7e0ef6110010a821a2aaeb/basic.ics
$namecal = $extcal['name']; $namecal = $extcal['name'];
$colorcal = $extcal['color']; $colorcal = $extcal['color'];
//print "url=".$url." namecal=".$namecal." colorcal=".$colorcal; $buggedfile = $extcal['buggedfile'];
//print "url=".$url." namecal=".$namecal." colorcal=".$colorcal." buggedfile=".$buggedfile;
$ical=new ICal(); $ical=new ICal();
$ical->parse($url); $ical->parse($url);
// After this $ical->cal['VEVENT'] contains array of events, $ical->cal['DAYLIGHT'] contains daylight info, $ical->cal['STANDARD'] contains non daylight info, ... // After this $ical->cal['VEVENT'] contains array of events, $ical->cal['DAYLIGHT'] contains daylight info, $ical->cal['STANDARD'] contains non daylight info, ...
//var_dump($ical->cal); exit; //var_dump($ical->cal); exit;
$icalevents=array(); $icalevents=array();
@ -643,6 +647,8 @@ if (count($listofextcals))
// Loop on each entry into cal file to know if entry is qualified and add an ActionComm into $eventarray // Loop on each entry into cal file to know if entry is qualified and add an ActionComm into $eventarray
foreach($icalevents as $icalevent) foreach($icalevents as $icalevent)
{ {
//var_dump($icalevent);
//print $icalevent['SUMMARY'].'->'.var_dump($icalevent).'<br>';exit; //print $icalevent['SUMMARY'].'->'.var_dump($icalevent).'<br>';exit;
if (! empty($icalevent['RRULE'])) continue; // We found a repeatable event. It was already split into unitary events, so we discard general rule. if (! empty($icalevent['RRULE'])) continue; // We found a repeatable event. It was already split into unitary events, so we discard general rule.
@ -659,12 +665,36 @@ if (count($listofextcals))
$event->fulldayevent=true; $event->fulldayevent=true;
$addevent=true; $addevent=true;
} }
elseif (!is_array($icalevent['DTSTART'])) // not fullday event (DTSTART is not array) elseif (!is_array($icalevent['DTSTART'])) // not fullday event (DTSTART is not array. It is a value like '19700101T000000Z' for 00:00 in greenwitch)
{ {
$datestart=$icalevent['DTSTART']; $datestart=$icalevent['DTSTART'];
$dateend=$icalevent['DTEND']; $dateend=$icalevent['DTEND'];
$addevent=true; $addevent=true;
} }
elseif (isset($icalevent['DTSTART']['unixtime'])) // File contains a local timezone + a TZ (for example when using bluemind)
{
$datestart=$icalevent['DTSTART']['unixtime'];
$dateend=$icalevent['DTEND']['unixtime'];
// $buggedfile is set to uselocalandtznodaylight if conf->global->AGENDA_EXT_BUGGEDFILEx = 'uselocalandtznodaylight'
if ($buggedfile === 'uselocalandtznodaylight') // unixtime is a local date that does not take daylight into account, TZID is +1 for example for 'Europe/Paris' in summer instead of 2
{
// TODO
}
// $buggedfile is set to uselocalandtzdaylight if conf->global->AGENDA_EXT_BUGGEDFILEx = 'uselocalandtzdaylight' (for example with bluemind)
if ($buggedfile === 'uselocalandtzdaylight') // unixtime is a local date that does take daylight into account, TZID is +2 for example for 'Europe/Paris' in summer
{
$localtzs = new DateTimeZone(preg_replace('/"/','',$icalevent['DTSTART']['TZID']));
$localtze = new DateTimeZone(preg_replace('/"/','',$icalevent['DTEND']['TZID']));
$localdts = new DateTime(dol_print_date($datestart,'dayrfc','gmt'), $localtzs);
$localdte = new DateTime(dol_print_date($dateend,'dayrfc','gmt'), $localtze);
$tmps=-1*$localtzs->getOffset($localdts);
$tmpe=-1*$localtze->getOffset($localdte);
$datestart+=$tmps;
$dateend+=$tmpe;
//var_dump($datestart);
}
$addevent=true;
}
if ($addevent) if ($addevent)
{ {

View File

@ -473,7 +473,7 @@ if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! G
$result = $interface->run_triggers('PROPAL_SENTBYMAIL', $object, $user, $langs, $conf); $result = $interface->run_triggers('PROPAL_SENTBYMAIL', $object, $user, $langs, $conf);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
$this->errors = $interface->errors; $object->errors = $interface->errors;
} }
// Fin appel triggers // Fin appel triggers
@ -1157,7 +1157,7 @@ if ($action == 'create') {
// Date // Date
print '<tr><td class="fieldrequired">' . $langs->trans('Date') . '</td><td colspan="2">'; print '<tr><td class="fieldrequired">' . $langs->trans('Date') . '</td><td colspan="2">';
$form->select_date('', '', '', '', '', "addprop"); $form->select_date('', '', '', '', '', "addprop", 1, 1);
print '</td></tr>'; print '</td></tr>';
// Validaty duration // Validaty duration
@ -1193,8 +1193,7 @@ if ($action == 'create') {
$sday = date("d", $tmpdte); $sday = date("d", $tmpdte);
$form->select_date($syear."-".$smonth."-".$sday, 'liv_', '', '', '', "addprop"); $form->select_date($syear."-".$smonth."-".$sday, 'liv_', '', '', '', "addprop");
} else { } else {
$datepropal = empty($conf->global->MAIN_AUTOFILL_DATE) ? - 1 : 0; $form->select_date(-1, 'liv_', '', '', '', "addprop", 1, 1);
$form->select_date($datepropal, 'liv_', '', '', '', "addprop");
} }
print '</td></tr>'; print '</td></tr>';
@ -1247,8 +1246,9 @@ if ($action == 'create') {
print '<input type="hidden" name="createmode" value="empty">'; print '<input type="hidden" name="createmode" value="empty">';
} }
print '<table>'; if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE) || ! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) print '<table>';
if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE)) { if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE))
{
// For backward compatibility // For backward compatibility
print '<tr>'; print '<tr>';
print '<td><input type="radio" name="createmode" value="copy"></td>'; print '<td><input type="radio" name="createmode" value="copy"></td>';
@ -1311,13 +1311,11 @@ if ($action == 'create') {
print '<td><input type="text" size="2" name="remise' . $i . '" value="' . $soc->remise_percent . '">%</td>'; print '<td><input type="text" size="2" name="remise' . $i . '" value="' . $soc->remise_percent . '">%</td>';
print '</tr>'; print '</tr>';
} }
print "</table>"; print "</table>";
} }
print '</td></tr>'; print '</td></tr>';
} }
print '</table>'; if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE) || ! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) print '</table><br>';
print '<br>';
$langs->load("bills"); $langs->load("bills");
print '<center>'; print '<center>';

View File

@ -546,6 +546,7 @@ class Propal extends CommonObject
$this->line->label = $label; $this->line->label = $label;
$this->line->desc = $desc; $this->line->desc = $desc;
$this->line->qty = $qty; $this->line->qty = $qty;
$this->line->product_type = $type;
$this->line->tva_tx = $txtva; $this->line->tva_tx = $txtva;
$this->line->localtax1_tx = $txlocaltax1; $this->line->localtax1_tx = $txlocaltax1;
$this->line->localtax2_tx = $txlocaltax2; $this->line->localtax2_tx = $txlocaltax2;
@ -1348,10 +1349,10 @@ class Propal extends CommonObject
{ {
// Rename of propal directory ($this->ref = old ref, $num = new ref) // Rename of propal directory ($this->ref = old ref, $num = new ref)
// to not lose the linked files // to not lose the linked files
$facref = dol_sanitizeFileName($this->ref); $oldref = dol_sanitizeFileName($this->ref);
$snumfa = dol_sanitizeFileName($num); $newref = dol_sanitizeFileName($num);
$dirsource = $conf->propal->dir_output.'/'.$facref; $dirsource = $conf->propal->dir_output.'/'.$oldref;
$dirdest = $conf->propal->dir_output.'/'.$snumfa; $dirdest = $conf->propal->dir_output.'/'.$newref;
if (file_exists($dirsource)) if (file_exists($dirsource))
{ {
dol_syslog(get_class($this)."::validate rename dir ".$dirsource." into ".$dirdest); dol_syslog(get_class($this)."::validate rename dir ".$dirsource." into ".$dirdest);
@ -1361,15 +1362,17 @@ class Propal extends CommonObject
dol_syslog("Rename ok"); dol_syslog("Rename ok");
// Deleting old PDF in new rep // Deleting old PDF in new rep
dol_delete_file($conf->propal->dir_output.'/'.$snumfa.'/'.$facref.'*.*'); dol_delete_file($conf->propal->dir_output.'/'.$newref.'/'.$oldref.'*.*');
} }
} }
} }
$this->ref=$num;
$this->brouillon=0; $this->brouillon=0;
$this->statut = 1; $this->statut = 1;
$this->user_valid_id=$user->id; $this->user_valid_id=$user->id;
$this->datev=$now; $this->datev=$now;
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
@ -2783,7 +2786,7 @@ class PropaleLigne extends CommonObject
$sql.= ' pd.info_bits, pd.total_ht, pd.total_tva, pd.total_ttc, pd.fk_product_fournisseur_price as fk_fournprice, pd.buy_price_ht as pa_ht, pd.special_code, pd.rang,'; $sql.= ' pd.info_bits, pd.total_ht, pd.total_tva, pd.total_ttc, pd.fk_product_fournisseur_price as fk_fournprice, pd.buy_price_ht as pa_ht, pd.special_code, pd.rang,';
$sql.= ' pd.localtax1_tx, pd.localtax2_tx, pd.total_localtax1, pd.total_localtax2,'; $sql.= ' pd.localtax1_tx, pd.localtax2_tx, pd.total_localtax1, pd.total_localtax2,';
$sql.= ' p.ref as product_ref, p.label as product_label, p.description as product_desc,'; $sql.= ' p.ref as product_ref, p.label as product_label, p.description as product_desc,';
$sql.= ' pd.date_start, pd.date_end'; $sql.= ' pd.date_start, pd.date_end, pd.product_type';
$sql.= ' FROM '.MAIN_DB_PREFIX.'propaldet as pd'; $sql.= ' FROM '.MAIN_DB_PREFIX.'propaldet as pd';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON pd.fk_product = p.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON pd.fk_product = p.rowid';
$sql.= ' WHERE pd.rowid = '.$rowid; $sql.= ' WHERE pd.rowid = '.$rowid;
@ -2820,6 +2823,7 @@ class PropaleLigne extends CommonObject
$this->marque_tx = $marginInfos[2]; $this->marque_tx = $marginInfos[2];
$this->special_code = $objp->special_code; $this->special_code = $objp->special_code;
$this->product_type = $objp->product_type;
$this->rang = $objp->rang; $this->rang = $objp->rang;
$this->ref = $objp->product_ref; // deprecated $this->ref = $objp->product_ref; // deprecated
@ -3054,6 +3058,7 @@ class PropaleLigne extends CommonObject
$sql = "UPDATE ".MAIN_DB_PREFIX."propaldet SET"; $sql = "UPDATE ".MAIN_DB_PREFIX."propaldet SET";
$sql.= " description='".$this->db->escape($this->desc)."'"; $sql.= " description='".$this->db->escape($this->desc)."'";
$sql.= " , label=".(! empty($this->label)?"'".$this->db->escape($this->label)."'":"null"); $sql.= " , label=".(! empty($this->label)?"'".$this->db->escape($this->label)."'":"null");
$sql.= " , product_type=".$this->product_type;
$sql.= " , tva_tx='".price2num($this->tva_tx)."'"; $sql.= " , tva_tx='".price2num($this->tva_tx)."'";
$sql.= " , localtax1_tx=".price2num($this->localtax1_tx); $sql.= " , localtax1_tx=".price2num($this->localtax1_tx);
$sql.= " , localtax2_tx=".price2num($this->localtax2_tx); $sql.= " , localtax2_tx=".price2num($this->localtax2_tx);

View File

@ -285,7 +285,7 @@ if ($result)
print_liste_field_titre($langs->trans('Date'),$_SERVER["PHP_SELF"],'p.datep','',$param, 'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Date'),$_SERVER["PHP_SELF"],'p.datep','',$param, 'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans('DateEndPropalShort'),$_SERVER["PHP_SELF"],'dfv','',$param, 'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('DateEndPropalShort'),$_SERVER["PHP_SELF"],'dfv','',$param, 'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans('AmountHT'),$_SERVER["PHP_SELF"],'p.total_ht','',$param, 'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('AmountHT'),$_SERVER["PHP_SELF"],'p.total_ht','',$param, 'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans('Author'),$_SERVER["PHP_SELF"],'u.login','',$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Author'),$_SERVER["PHP_SELF"],'u.login','',$param,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans('Status'),$_SERVER["PHP_SELF"],'p.fk_statut','',$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Status'),$_SERVER["PHP_SELF"],'p.fk_statut','',$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre(''); print_liste_field_titre('');
print "</tr>\n"; print "</tr>\n";
@ -301,6 +301,7 @@ if ($result)
print '<input class="flat" type="text" size="12" name="search_societe" value="'.$search_societe.'">'; print '<input class="flat" type="text" size="12" name="search_societe" value="'.$search_societe.'">';
print '</td>'; print '</td>';
print '<td class="liste_titre"><input class="flat" type="text" size="10" name="search_town" value="'.$search_town.'"></td>'; print '<td class="liste_titre"><input class="flat" type="text" size="10" name="search_town" value="'.$search_town.'"></td>';
// Date
print '<td class="liste_titre" colspan="1" align="center">'; print '<td class="liste_titre" colspan="1" align="center">';
//print $langs->trans('Month').': '; //print $langs->trans('Month').': ';
print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">'; print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">';
@ -309,11 +310,12 @@ if ($result)
$formother->select_year($syear,'year',1, 20, 5); $formother->select_year($syear,'year',1, 20, 5);
print '</td>'; print '</td>';
print '<td class="liste_titre" colspan="1">&nbsp;</td>'; print '<td class="liste_titre" colspan="1">&nbsp;</td>';
// Amount
print '<td class="liste_titre" align="center">'; print '<td class="liste_titre" align="center">';
print '<input class="flat" type="text" size="10" name="search_montant_ht" value="'.$search_montant_ht.'">'; print '<input class="flat" type="text" size="10" name="search_montant_ht" value="'.$search_montant_ht.'">';
print '</td>'; print '</td>';
// Author
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="center">';
print '<input class="flat" size="10" type="text" name="search_author" value="'.$search_author.'">'; print '<input class="flat" size="10" type="text" name="search_author" value="'.$search_author.'">';
print '</td>'; print '</td>';
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="right">';

View File

@ -130,7 +130,7 @@ if ($socid > 0)
// Nouvelle valeur // Nouvelle valeur
print '<tr><td colspan="2">'; print '<tr><td colspan="2">';
print $langs->trans("NewValue").'</td><td colspan="2"><input type="text" size="5" name="remise" value="'.($_POST["remise"]?$_POST["remise"]:$objsoc->remise_percent).'">%</td></tr>'; print $langs->trans("NewValue").'</td><td colspan="2"><input type="text" size="5" name="remise" value="'.($_POST["remise"]?$_POST["remise"]:'').'">%</td></tr>';
// Motif/Note // Motif/Note
print '<tr><td colspan="2" width="25%">'; print '<tr><td colspan="2" width="25%">';
@ -155,9 +155,9 @@ if ($socid > 0)
/* /*
* Liste de l'historique des avoirs * List log of all percent discounts
*/ */
$sql = "SELECT rc.rowid,rc.remise_client,rc.note, rc.datec as dc,"; $sql = "SELECT rc.rowid, rc.remise_client as remise_percent, rc.note, rc.datec as dc,";
$sql.= " u.login, u.rowid as user_id"; $sql.= " u.login, u.rowid as user_id";
$sql.= " FROM ".MAIN_DB_PREFIX."societe_remise as rc, ".MAIN_DB_PREFIX."user as u"; $sql.= " FROM ".MAIN_DB_PREFIX."societe_remise as rc, ".MAIN_DB_PREFIX."user as u";
$sql.= " WHERE rc.fk_soc =". $objsoc->id; $sql.= " WHERE rc.fk_soc =". $objsoc->id;

View File

@ -1387,7 +1387,7 @@ class Commande extends CommonOrder
$extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true); $extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true);
$this->fetch_optionals($this->id,$extralabels); $this->fetch_optionals($this->id,$extralabels);
$this->db->free(); $this->db->free($result);
/* /*
* Lines * Lines

View File

@ -476,7 +476,7 @@ else if ($action == 'setremiseabsolue' && $user->rights->commande->creer) {
// Add a new line // Add a new line
else if ($action == 'addline' && $user->rights->commande->creer) { else if ($action == 'addline' && $user->rights->commande->creer) {
$langs->load('errors'); $langs->load('errors');
$error = false; $error = 0;
// Set if we used free entry or predefined product // Set if we used free entry or predefined product
$predef=''; $predef='';
@ -1325,7 +1325,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
$demand_reason_id = (!empty($objectsrc->demand_reason_id)?$objectsrc->demand_reason_id:(!empty($soc->demand_reason_id)?$soc->demand_reason_id:0)); $demand_reason_id = (!empty($objectsrc->demand_reason_id)?$objectsrc->demand_reason_id:(!empty($soc->demand_reason_id)?$soc->demand_reason_id:0));
$remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0)); $remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0));
$remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0)); $remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0));
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ? - 1 : 0; $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
$datedelivery = (! empty($objectsrc->date_livraison) ? $objectsrc->date_livraison : ''); $datedelivery = (! empty($objectsrc->date_livraison) ? $objectsrc->date_livraison : '');
@ -1335,14 +1335,16 @@ if ($action == 'create' && $user->rights->commande->creer) {
// Object source contacts list // Object source contacts list
$srccontactslist = $objectsrc->liste_contact(- 1, 'external', 1); $srccontactslist = $objectsrc->liste_contact(- 1, 'external', 1);
} }
} else { }
else
{
$cond_reglement_id = $soc->cond_reglement_id; $cond_reglement_id = $soc->cond_reglement_id;
$mode_reglement_id = $soc->mode_reglement_id; $mode_reglement_id = $soc->mode_reglement_id;
$availability_id = $soc->availability_id; $availability_id = $soc->availability_id;
$demand_reason_id = $soc->demand_reason_id; $demand_reason_id = $soc->demand_reason_id;
$remise_percent = $soc->remise_percent; $remise_percent = $soc->remise_percent;
$remise_absolue = 0; $remise_absolue = 0;
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ? - 1 : 0; $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
$projectid = 0; $projectid = 0;
} }
$absolute_discount=$soc->getAvailableDiscounts(); $absolute_discount=$soc->getAvailableDiscounts();
@ -1415,11 +1417,10 @@ if ($action == 'create' && $user->rights->commande->creer) {
// Date de livraison // Date de livraison
print "<tr><td>".$langs->trans("DeliveryDate").'</td><td colspan="2">'; print "<tr><td>".$langs->trans("DeliveryDate").'</td><td colspan="2">';
if (empty($datedelivery)) { if (empty($datedelivery))
if (! empty($conf->global->DATE_LIVRAISON_WEEK_DELAY)) {
$datedelivery = time() + ((7 * $conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60); if (! empty($conf->global->DATE_LIVRAISON_WEEK_DELAY)) $datedelivery = time() + ((7*$conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60);
else else $datedelivery=empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
$datedelivery = empty($conf->global->MAIN_AUTOFILL_DATE) ? - 1 : 0;
} }
$form->select_date($datedelivery, 'liv_', '', '', '', "crea_commande", 1, 1); $form->select_date($datedelivery, 'liv_', '', '', '', "crea_commande", 1, 1);
print "</td></tr>"; print "</td></tr>";

View File

@ -373,7 +373,7 @@ if ($action == 'create' && empty($mesgs))
$remise_percent = $soc->remise_percent; $remise_percent = $soc->remise_percent;
} }
$remise_absolue = 0; $remise_absolue = 0;
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0; $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
$absolute_discount=$soc->getAvailableDiscounts(); $absolute_discount=$soc->getAvailableDiscounts();
print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST">'; print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
@ -413,7 +413,7 @@ if ($action == 'create' && empty($mesgs))
// Date invoice // Date invoice
print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td colspan="2">'; print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td colspan="2">';
$html->select_date(0,'','','','',"add",1,1); $html->select_date('','','','','',"add",1,1);
print '</td></tr>'; print '</td></tr>';
// Payment term // Payment term
print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td colspan="2">'; print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td colspan="2">';

View File

@ -784,8 +784,8 @@ if ($id > 0 || ! empty($ref))
print '<tr class="liste_total"><td align="left" colspan="8">'; print '<tr class="liste_total"><td align="left" colspan="8">';
if ($sep > 0) print '&nbsp;'; // If we had at least one line in future if ($sep > 0) print '&nbsp;'; // If we had at least one line in future
else print $langs->trans("CurrentBalance"); else print $langs->trans("CurrentBalance");
print '</td>'; print ' '.$object->currency_code.'</td>';
print '<td align="right" nowrap><b>'.price($total).'</b></td>'; print '<td align="right" nowrap><b>'.price($total, 0, $langs, 0, 0, -1, $object->currency_code).'</b></td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '</tr>'; print '</tr>';
} }

View File

@ -90,7 +90,7 @@ print '<td align="center" width="70">'.$langs->trans("Status").'</td>';
print '<td align="right" width="100">'.$langs->trans("BankBalance").'</td>'; print '<td align="right" width="100">'.$langs->trans("BankBalance").'</td>';
print "</tr>\n"; print "</tr>\n";
$total = 0; $found = 0; $total = array(); $found = 0;
$var=true; $var=true;
foreach ($accounts as $key=>$type) foreach ($accounts as $key=>$type)
{ {
@ -119,17 +119,19 @@ foreach ($accounts as $key=>$type)
print '</td>'; print '</td>';
print '<td align="center">'.$acc->getLibStatut(2).'</td>'; print '<td align="center">'.$acc->getLibStatut(2).'</td>';
print '<td align="right">'; print '<td align="right">';
print '<a href="account.php?account='.$acc->id.'">'.price($solde).'</a>'; print '<a href="account.php?account='.$acc->id.'">'.price($solde, 0, $langs, 0, 0, -1, $acc->currency_code).'</a>';
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
$total += $solde; $total[$acc->currency_code] += $solde;
} }
} }
if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>'; if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>';
// Total // Total
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").'</td><td align="right" class="liste_total">'.price($total).'</td></tr>'; foreach ($total as $key=>$solde)
{
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total ").$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
}
//print '<tr><td colspan="5">&nbsp;</td></tr>'; //print '<tr><td colspan="5">&nbsp;</td></tr>';
@ -144,7 +146,7 @@ print '<td align="center" width="70">'.$langs->trans("Status").'</td>';
print '<td align="right" width="100">'.$langs->trans("BankBalance").'</td>'; print '<td align="right" width="100">'.$langs->trans("BankBalance").'</td>';
print "</tr>\n"; print "</tr>\n";
$total = 0; $found = 0; $total = array(); $found = 0;
$var=true; $var=true;
foreach ($accounts as $key=>$type) foreach ($accounts as $key=>$type)
{ {
@ -165,16 +167,19 @@ foreach ($accounts as $key=>$type)
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td align="center">'.$acc->getLibStatut(2).'</td>'; print '<td align="center">'.$acc->getLibStatut(2).'</td>';
print '<td align="right">'; print '<td align="right">';
print '<a href="account.php?account='.$acc->id.'">'.price($solde).'</a>'; print '<a href="account.php?account='.$acc->id.'">'.price($solde, 0, $langs, 0, 0, -1, $acc->currency_code).'</a>';
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
$total += $solde; $total[$acc->currency_code] += $solde;
} }
} }
if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>'; if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>';
// Total // Total
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").'</td><td align="right" class="liste_total">'.price($total).'</td></tr>'; foreach ($total as $key=>$solde)
{
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total ").$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
}
@ -193,7 +198,7 @@ print '<td align="center" width="70">'.$langs->trans("Status").'</td>';
print '<td align="right" width="100">'.$langs->trans("BankBalance").'</td>'; print '<td align="right" width="100">'.$langs->trans("BankBalance").'</td>';
print "</tr>\n"; print "</tr>\n";
$total = 0; $found = 0; $total = array(); $found = 0;
$var=true; $var=true;
foreach ($accounts as $key=>$type) foreach ($accounts as $key=>$type)
{ {
@ -222,16 +227,19 @@ foreach ($accounts as $key=>$type)
print '</td>'; print '</td>';
print '<td align="center">'.$acc->getLibStatut(2).'</td>'; print '<td align="center">'.$acc->getLibStatut(2).'</td>';
print '<td align="right">'; print '<td align="right">';
print '<a href="account.php?account='.$acc->id.'">'.price($solde).'</a>'; print '<a href="account.php?account='.$acc->id.'">'.price($solde, 0, $langs, 0, 0, -1, $acc->currency_code).'</a>';
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
$total += $solde; $total[$acc->currency_code] += $solde;
} }
} }
if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>'; if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>';
// Total // Total
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total").'</td><td align="right" class="liste_total">'.price($total).'</td></tr>'; foreach ($total as $key=>$solde)
{
print '<tr class="liste_total"><td colspan="5" class="liste_total">'.$langs->trans("Total ").$key.'</td><td align="right" class="liste_total">'.price($solde, 0, $langs, 0, 0, -1, $key).'</td></tr>';
}
print "</table>"; print "</table>";

View File

@ -1607,7 +1607,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
$result = $interface->run_triggers('BILL_SENTBYMAIL', $object, $user, $langs, $conf); $result = $interface->run_triggers('BILL_SENTBYMAIL', $object, $user, $langs, $conf);
if ($result < 0) { if ($result < 0) {
$error ++; $error ++;
$this->errors = $interface->errors; $object->errors = $interface->errors;
} }
// Fin appel triggers // Fin appel triggers
@ -1666,7 +1666,7 @@ else if ($action == 'builddoc') // En get ou en post
// Save last template used to generate document // Save last template used to generate document
if (GETPOST('model')) if (GETPOST('model'))
$object->setDocModel($user, GETPOST('model', 'alpha')); $object->setDocModel($user, GETPOST('model', 'alpha'));
if (GETPOST('fk_bank')) if (GETPOST('fk_bank')) // this field may come from an external module
$object->fk_bank = GETPOST('fk_bank'); $object->fk_bank = GETPOST('fk_bank');
// Define output language // Define output language
@ -1871,10 +1871,12 @@ if ($action == 'create')
$ref_int = (! empty($objectsrc->ref_int) ? $objectsrc->ref_int : ''); $ref_int = (! empty($objectsrc->ref_int) ? $objectsrc->ref_int : '');
$soc = $objectsrc->thirdparty; $soc = $objectsrc->thirdparty;
$cond_reglement_id = (! empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(! empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1)); $cond_reglement_id = (! empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(! empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1));
$mode_reglement_id = (! empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(! empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0)); $mode_reglement_id = (! empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(! empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0));
$remise_percent = (! empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(! empty($soc->remise_percent)?$soc->remise_percent:0)); $remise_percent = (! empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(! empty($soc->remise_percent)?$soc->remise_percent:0));
$remise_absolue = (! empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(! empty($soc->remise_absolue)?$soc->remise_absolue:0)); $remise_absolue = (! empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(! empty($soc->remise_absolue)?$soc->remise_absolue:0));
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
// Replicate extrafields // Replicate extrafields
$objectsrc->fetch_optionals($originid); $objectsrc->fetch_optionals($originid);

View File

@ -651,7 +651,7 @@ class BonPrelevement extends CommonObject
{ {
global $conf; global $conf;
$sql = "SELECT sum(f.total_ttc)"; $sql = "SELECT sum(f.total_ttc) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f,"; $sql.= " FROM ".MAIN_DB_PREFIX."facture as f,";
$sql.= " ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; $sql.= " ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
//$sql.= " ,".MAIN_DB_PREFIX."c_paiement as cp"; //$sql.= " ,".MAIN_DB_PREFIX."c_paiement as cp";
@ -1411,6 +1411,34 @@ class BonPrelevement extends CommonObject
fputs($this->file, ' </CstmrDrctDbtInitn>'.$CrLf); fputs($this->file, ' </CstmrDrctDbtInitn>'.$CrLf);
fputs($this->file, '</Document>'.$CrLf); fputs($this->file, '</Document>'.$CrLf);
$sql = "SELECT pl.amount";
$sql.= " FROM";
$sql.= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
$sql.= " ".MAIN_DB_PREFIX."facture as f,";
$sql.= " ".MAIN_DB_PREFIX."prelevement_facture as pf";
$sql.= " WHERE pl.fk_prelevement_bons = ".$this->id;
$sql.= " AND pl.rowid = pf.fk_prelevement_lignes";
$sql.= " AND pf.fk_facture = f.rowid";
//Lines
$i = 0;
$resql=$this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($resql);
while ($i < $num)
{
$obj = $this->db->fetch_object($resql);
$this->total = $this->total + $obj->amount;
$i++;
}
}
else
{
$result = -2;
}
} }
// Build file for Other Countries with unknow format // Build file for Other Countries with unknow format

View File

@ -377,12 +377,11 @@ abstract class CommonDocGenerator
// Retrieve extrafields // Retrieve extrafields
if (is_array($object->array_options) && count($object->array_options)) if (is_array($object->array_options) && count($object->array_options))
{ {
$extrafieldkey=$this->element; $extrafieldkey=$object->element;
'facture';
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
$extrafields = new ExtraFields($this->db); $extrafields = new ExtraFields($this->db);
$extralabels = $extrafields->fetch_name_optionals_label('facture',true); $extralabels = $extrafields->fetch_name_optionals_label($extrafieldkey,true);
$object->fetch_optionals($object->id,$extralabels); $object->fetch_optionals($object->id,$extralabels);
$resarray = $this->fill_substitutionarray_with_extrafields($object,$resarray,$extrafields,$array_key=$array_key,$outputlangs); $resarray = $this->fill_substitutionarray_with_extrafields($object,$resarray,$extrafields,$array_key=$array_key,$outputlangs);

View File

@ -3237,6 +3237,7 @@ abstract class CommonObject
$marginInfo = $this->getMarginInfos($force_price); $marginInfo = $this->getMarginInfos($force_price);
print '<table class="nobordernopadding" width="100%">'; print '<table class="nobordernopadding" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td width="30%">'.$langs->trans('Margins').'</td>'; print '<td width="30%">'.$langs->trans('Margins').'</td>';
print '<td width="20%" align="right">'.$langs->trans('SellingPrice').'</td>'; print '<td width="20%" align="right">'.$langs->trans('SellingPrice').'</td>';
@ -3250,6 +3251,9 @@ abstract class CommonObject
if (! empty($conf->global->DISPLAY_MARK_RATES)) if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.$langs->trans('MarkRate').'</td>'; print '<td align="right">'.$langs->trans('MarkRate').'</td>';
print '</tr>'; print '</tr>';
if (! empty($conf->product->enabled))
{
//if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) { //if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) {
print '<tr class="impair">'; print '<tr class="impair">';
print '<td>'.$langs->trans('MarginOnProducts').'</td>'; print '<td>'.$langs->trans('MarginOnProducts').'</td>';
@ -3261,6 +3265,10 @@ abstract class CommonObject
if (! empty($conf->global->DISPLAY_MARK_RATES)) if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>'; print '</tr>';
}
if (! empty($conf->service->enabled))
{
print '<tr class="pair">'; print '<tr class="pair">';
print '<td>'.$langs->trans('MarginOnServices').'</td>'; print '<td>'.$langs->trans('MarginOnServices').'</td>';
print '<td align="right">'.price($marginInfo['pv_services'], null, null, null, null, $rounding).'</td>'; print '<td align="right">'.price($marginInfo['pv_services'], null, null, null, null, $rounding).'</td>';
@ -3271,7 +3279,10 @@ abstract class CommonObject
if (! empty($conf->global->DISPLAY_MARK_RATES)) if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>'; print '</tr>';
//} }
if (! empty($conf->product->enabled) && ! empty($conf->service->enabled))
{
print '<tr class="impair">'; print '<tr class="impair">';
print '<td>'.$langs->trans('TotalMargin').'</td>'; print '<td>'.$langs->trans('TotalMargin').'</td>';
print '<td align="right">'.price($marginInfo['pv_total'], null, null, null, null, $rounding).'</td>'; print '<td align="right">'.price($marginInfo['pv_total'], null, null, null, null, $rounding).'</td>';
@ -3282,6 +3293,7 @@ abstract class CommonObject
if (! empty($conf->global->DISPLAY_MARK_RATES)) if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>'; print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>'; print '</tr>';
}
print '</table>'; print '</table>';
} }

View File

@ -329,14 +329,14 @@ class FileUpload
$file->error = 'minFileSize'; $file->error = 'minFileSize';
return false; return false;
} }
if (is_int($this->options['max_number_of_files']) && ( if (is_numeric($this->options['max_number_of_files']) && (
count($this->getFileObjects()) >= $this->options['max_number_of_files']) count($this->getFileObjects()) >= $this->options['max_number_of_files'])
) { ) {
$file->error = 'maxNumberOfFiles'; $file->error = 'maxNumberOfFiles';
return false; return false;
} }
list($img_width, $img_height) = @getimagesize($uploaded_file); list($img_width, $img_height) = @getimagesize($uploaded_file);
if (is_int($img_width)) { if (is_numeric($img_width)) {
if ($this->options['max_width'] && $img_width > $this->options['max_width'] || if ($this->options['max_width'] && $img_width > $this->options['max_width'] ||
$this->options['max_height'] && $img_height > $this->options['max_height']) { $this->options['max_height'] && $img_height > $this->options['max_height']) {
$file->error = 'maxResolution'; $file->error = 'maxResolution';

View File

@ -191,8 +191,9 @@ class Form
$ret.='</td>'; $ret.='</td>';
if ($typeofdata != 'day' && $typeofdata != 'datepicker' && $typeofdata != 'datehourpicker') if ($typeofdata != 'day' && $typeofdata != 'datepicker' && $typeofdata != 'datehourpicker')
{ {
$ret.='<td align="left"><input type="submit" class="button" name="modify" value="'.$langs->trans("Modify").'">'; $ret.='<td align="left">';
$ret.='<br><br>'."\n"; $ret.='<input type="submit" class="button" name="modify" value="'.$langs->trans("Modify").'">';
$ret.='<br>'."\n";
$ret.='<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; $ret.='<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
$ret.='</td>'; $ret.='</td>';
} }
@ -1258,7 +1259,7 @@ class Form
* Return list of products for customer in Ajax if Ajax activated or go to select_produits_list * Return list of products for customer in Ajax if Ajax activated or go to select_produits_list
* *
* @param int $selected Preselected products * @param int $selected Preselected products
* @param string $htmlname Name of HTML seletc field (must be unique in page) * @param string $htmlname Name of HTML select field (must be unique in page)
* @param int $filtertype Filter on product type (''=nofilter, 0=product, 1=service) * @param int $filtertype Filter on product type (''=nofilter, 0=product, 1=service)
* @param int $limit Limit on number of returned lines * @param int $limit Limit on number of returned lines
* @param int $price_level Level of price to show * @param int $price_level Level of price to show
@ -1267,7 +1268,7 @@ class Form
* @param string $selected_input_value Value of preselected input text (with ajax) * @param string $selected_input_value Value of preselected input text (with ajax)
* @param int $hidelabel Hide label (0=no, 1=yes, 2=show search icon (before) and placeholder, 3 search icon after) * @param int $hidelabel Hide label (0=no, 1=yes, 2=show search icon (before) and placeholder, 3 search icon after)
* @param array $ajaxoptions Options for ajax_autocompleter * @param array $ajaxoptions Options for ajax_autocompleter
* @param int $socid Thridparty Id * @param int $socid Thirdparty Id
* @return void * @return void
*/ */
function select_produits($selected='', $htmlname='productid', $filtertype='', $limit=20, $price_level=0, $status=1, $finished=2, $selected_input_value='', $hidelabel=0, $ajaxoptions=array(),$socid=0) function select_produits($selected='', $htmlname='productid', $filtertype='', $limit=20, $price_level=0, $status=1, $finished=2, $selected_input_value='', $hidelabel=0, $ajaxoptions=array(),$socid=0)
@ -1319,13 +1320,13 @@ class Form
* @param int $selected Preselected product * @param int $selected Preselected product
* @param string $htmlname Name of select html * @param string $htmlname Name of select html
* @param string $filtertype Filter on product type (''=nofilter, 0=product, 1=service) * @param string $filtertype Filter on product type (''=nofilter, 0=product, 1=service)
* @param int $limit Limite sur le nombre de lignes retournees * @param int $limit Limit on number of returned lines
* @param int $price_level Level of price to show * @param int $price_level Level of price to show
* @param string $filterkey Filter on product * @param string $filterkey Filter on product
* @param int $status -1=Return all products, 0=Products not on sell, 1=Products on sell * @param int $status -1=Return all products, 0=Products not on sell, 1=Products on sell
* @param int $finished Filter on finished field: 2=No filter * @param int $finished Filter on finished field: 2=No filter
* @param int $outputmode 0=HTML select string, 1=Array * @param int $outputmode 0=HTML select string, 1=Array
* @param int $socid Thridparty Id * @param int $socid Thirdparty Id
* @return array Array of keys for json * @return array Array of keys for json
*/ */
function select_produits_list($selected='',$htmlname='productid',$filtertype='',$limit=20,$price_level=0,$filterkey='',$status=1,$finished=2,$outputmode=0,$socid=0) function select_produits_list($selected='',$htmlname='productid',$filtertype='',$limit=20,$price_level=0,$filterkey='',$status=1,$finished=2,$outputmode=0,$socid=0)
@ -2667,7 +2668,7 @@ class Form
$autoOpen=true; $autoOpen=true;
$dialogconfirm='dialog-confirm'; $dialogconfirm='dialog-confirm';
$button=''; $button='';
if (! is_int($useajax)) if (! is_numeric($useajax))
{ {
$button=$useajax; $button=$useajax;
$useajax=1; $useajax=1;

View File

@ -257,7 +257,8 @@ class FormFile
*/ */
function showdocuments($modulepart,$modulesubdir,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$allowgenifempty=1,$forcenomultilang=0,$iconPDF=0,$maxfilenamelength=28,$noform=0,$param='',$title='',$buttonlabel='',$codelang='',$morepicto='') function showdocuments($modulepart,$modulesubdir,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$allowgenifempty=1,$forcenomultilang=0,$iconPDF=0,$maxfilenamelength=28,$noform=0,$param='',$title='',$buttonlabel='',$codelang='',$morepicto='')
{ {
global $langs,$conf,$hookmanager,$user,$form,$bc; global $langs, $conf, $user, $hookmanager;
global $form, $bc;
if (! is_object($form)) $form=new Form($this->db); if (! is_object($form)) $form=new Form($this->db);
@ -554,9 +555,12 @@ class FormFile
$out.= "<tr ".$bc[$var].">"; $out.= "<tr ".$bc[$var].">";
$documenturl = DOL_URL_ROOT.'/document.php';
if (isset($conf->global->DOL_URL_ROOT_DOCUMENT_PHP)) $documenturl=$conf->global->DOL_URL_ROOT_DOCUMENT_PHP;
// Show file name with link to download // Show file name with link to download
$out.= '<td class="nowrap">'; $out.= '<td class="nowrap">';
$out.= '<a data-ajax="false" href="'.DOL_URL_ROOT . '/document.php?modulepart='.$modulepart.'&amp;file='.urlencode($relativepath).'"'; $out.= '<a data-ajax="false" href="'.$documenturl.'?modulepart='.$modulepart.'&amp;file='.urlencode($relativepath).'"';
$mime=dol_mimetype($relativepath,'',0); $mime=dol_mimetype($relativepath,'',0);
if (preg_match('/text/',$mime)) $out.= ' target="_blank"'; if (preg_match('/text/',$mime)) $out.= ' target="_blank"';
$out.= ' target="_blank">'; $out.= ' target="_blank">';

View File

@ -363,7 +363,8 @@ class FormOther
$sql_usr = "SELECT u.rowid, u.lastname, u.firstname, u.statut, u.login"; $sql_usr = "SELECT u.rowid, u.lastname, u.firstname, u.statut, u.login";
$sql_usr.= " FROM ".MAIN_DB_PREFIX."user as u"; $sql_usr.= " FROM ".MAIN_DB_PREFIX."user as u";
$sql_usr.= " WHERE u.entity IN (0,".$conf->entity.")"; $sql_usr.= " WHERE u.entity IN (0,".$conf->entity.")";
if (empty($user->rights->user->user->lire)) $sql_usr.=" AND u.fk_societe = ".($user->societe_id?$user->societe_id:0); if (empty($user->rights->user->user->lire)) $sql_usr.=" AND u.rowid = ".$user->id;
if (! empty($user->societe_id)) $sql_usr.=" AND u.fk_societe = ".$user->societe_id;
// Add existing sales representatives of thirdparty of external user // Add existing sales representatives of thirdparty of external user
if (empty($user->rights->user->user->lire) && $user->societe_id) if (empty($user->rights->user->user->lire) && $user->societe_id)
{ {

View File

@ -194,6 +194,7 @@ class FormProjets
if (!empty($this->societe->id)) { if (!empty($this->societe->id)) {
$sql.= " AND fk_soc=".$this->societe->id; $sql.= " AND fk_soc=".$this->societe->id;
} }
$sql.= ' AND entity='.$conf->entity;
$sql.= " ORDER BY ref DESC"; $sql.= " ORDER BY ref DESC";
dol_syslog(get_class($this).'::select_element sql='.$sql,LOG_DEBUG); dol_syslog(get_class($this).'::select_element sql='.$sql,LOG_DEBUG);

View File

@ -824,10 +824,18 @@ class DoliDBMysql extends DoliDB
dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log
$resql=$this->query($sql); $resql=$this->query($sql);
if (! $resql) if (! $resql)
{
if ($this->lasterrno != 'DB_ERROR_USER_ALREADY_EXISTS')
{ {
dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_ERR); dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_ERR);
return -1; return -1;
} }
else
{
// If user already exists, we continue to set permissions
dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_WARNING);
}
}
$sql = "GRANT ALL PRIVILEGES ON ".$this->escape($dolibarr_main_db_name).".* TO '".$this->escape($dolibarr_main_db_user)."'@'".$this->escape($dolibarr_main_db_host)."' IDENTIFIED BY '".$this->escape($dolibarr_main_db_pass)."'"; $sql = "GRANT ALL PRIVILEGES ON ".$this->escape($dolibarr_main_db_name).".* TO '".$this->escape($dolibarr_main_db_user)."'@'".$this->escape($dolibarr_main_db_host)."' IDENTIFIED BY '".$this->escape($dolibarr_main_db_pass)."'";
dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log
$resql=$this->query($sql); $resql=$this->query($sql);

View File

@ -828,10 +828,18 @@ class DoliDBMysqli extends DoliDB
dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log
$resql=$this->query($sql); $resql=$this->query($sql);
if (! $resql) if (! $resql)
{
if ($this->lasterrno != 'DB_ERROR_USER_ALREADY_EXISTS')
{ {
dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_ERR); dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_ERR);
return -1; return -1;
} }
else
{
// If user already exists, we continue to set permissions
dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_WARNING);
}
}
$sql = "GRANT ALL PRIVILEGES ON ".$this->escape($dolibarr_main_db_name).".* TO '".$this->escape($dolibarr_main_db_user)."'@'".$this->escape($dolibarr_main_db_host)."' IDENTIFIED BY '".$this->escape($dolibarr_main_db_pass)."'"; $sql = "GRANT ALL PRIVILEGES ON ".$this->escape($dolibarr_main_db_name).".* TO '".$this->escape($dolibarr_main_db_user)."'@'".$this->escape($dolibarr_main_db_host)."' IDENTIFIED BY '".$this->escape($dolibarr_main_db_pass)."'";
dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log
$resql=$this->query($sql); $resql=$this->query($sql);

View File

@ -172,6 +172,8 @@ class DoliDBPgsql extends DoliDB
else if (preg_match('/DROP TABLE/i',$line)) $type='dml'; else if (preg_match('/DROP TABLE/i',$line)) $type='dml';
} }
$line=preg_replace('/ as signed\)/i',' as integer)',$line);
if ($type == 'dml') if ($type == 'dml')
{ {
$line=preg_replace('/\s/',' ',$line); // Replace tabulation with space $line=preg_replace('/\s/',' ',$line); // Replace tabulation with space
@ -196,7 +198,6 @@ class DoliDBPgsql extends DoliDB
// nuke unsigned // nuke unsigned
$line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line); $line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line);
$line=preg_replace('/as signed/i','as integer',$line);
// blob -> text // blob -> text
$line=preg_replace('/\w*blob/i','text',$line); $line=preg_replace('/\w*blob/i','text',$line);

View File

@ -39,7 +39,7 @@
* @param string $filterd Filter of done by user * @param string $filterd Filter of done by user
* @param int $pid Product id * @param int $pid Product id
* @param int $socid Third party id * @param int $socid Third party id
* @param array $showextcals Array with list of external calendars, or -1 to show no legend * @param array $showextcals Array with list of external calendars (used to show links to select calendar), or -1 to show no legend
* @param string $actioncode Preselected value of actioncode for filter on type * @param string $actioncode Preselected value of actioncode for filter on type
* @return void * @return void
*/ */
@ -136,7 +136,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
print '});' . "\n"; print '});' . "\n";
print '</script>' . "\n"; print '</script>' . "\n";
print '<table>'; print '<table>';
if (! empty($conf->global->MAIN_JS_SWITCH_AGENDA)) if (! empty($conf->use_javascript_ajax))
{ {
if (count($showextcals) > 0) if (count($showextcals) > 0)
{ {
@ -147,7 +147,10 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
print '<tr><td>'; print '<tr><td>';
print '<script type="text/javascript">' . "\n"; print '<script type="text/javascript">' . "\n";
print 'jQuery(document).ready(function () {' . "\n"; print 'jQuery(document).ready(function () {' . "\n";
print 'jQuery("#check_' . $htmlname . '").click(function() { jQuery(".family_' . $htmlname . '").toggle(); });' . "\n"; print ' jQuery("#check_' . $htmlname . '").click(function() {';
print ' /* alert("'.$htmlname.'"); */';
print ' jQuery(".family_' . $htmlname . '").toggle();';
print ' });' . "\n";
print '});' . "\n"; print '});' . "\n";
print '</script>' . "\n"; print '</script>' . "\n";
print '<input type="checkbox" id="check_' . $htmlname . '" name="check_' . $htmlname . '" checked="true"> ' . $val ['name']; print '<input type="checkbox" id="check_' . $htmlname . '" name="check_' . $htmlname . '" checked="true"> ' . $val ['name'];

View File

@ -3694,6 +3694,7 @@ function dol_textishtml($msg,$option=0)
elseif (preg_match('/<(br|div|font|img|li|span|strong|table)>/i',$msg)) return true; elseif (preg_match('/<(br|div|font|img|li|span|strong|table)>/i',$msg)) return true;
elseif (preg_match('/<(br|div|font|img|li|span|strong|table)\s+[^<>\/]*>/i',$msg)) return true; elseif (preg_match('/<(br|div|font|img|li|span|strong|table)\s+[^<>\/]*>/i',$msg)) return true;
elseif (preg_match('/<(br|div|font|img|li|span|strong|table)\s+[^<>\/]*\/>/i',$msg)) return true; elseif (preg_match('/<(br|div|font|img|li|span|strong|table)\s+[^<>\/]*\/>/i',$msg)) return true;
elseif (preg_match('/<h[0-9]>/i',$msg)) return true;
elseif (preg_match('/&[A-Z0-9]{1,6};/i',$msg)) return true; // Html entities names (http://www.w3schools.com/tags/ref_entities.asp) elseif (preg_match('/&[A-Z0-9]{1,6};/i',$msg)) return true; // Html entities names (http://www.w3schools.com/tags/ref_entities.asp)
elseif (preg_match('/&#[0-9]{2,3};/i',$msg)) return true; // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp) elseif (preg_match('/&#[0-9]{2,3};/i',$msg)) return true; // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp)
return false; return false;
@ -4588,4 +4589,3 @@ function natural_search($fields, $value)
} }
return " AND " . ($end > 1? '(' : '') . $res; return " AND " . ($end > 1? '(' : '') . $res;
} }

View File

@ -438,7 +438,9 @@ function pdf_pagehead(&$pdf,$outputlangs,$page_height)
// Add a background image on document // Add a background image on document
if (! empty($conf->global->MAIN_USE_BACKGROUND_ON_PDF)) if (! empty($conf->global->MAIN_USE_BACKGROUND_ON_PDF))
{ {
$pdf->Image($conf->mycompany->dir_output.'/logos/'.$conf->global->MAIN_USE_BACKGROUND_ON_PDF, 0, 0, 0, $page_height); $pdf->SetAutoPageBreak(0,0); // Disable auto pagebreak before adding image
$pdf->Image($conf->mycompany->dir_output.'/logos/'.$conf->global->MAIN_USE_BACKGROUND_ON_PDF, (isset($conf->global->MAIN_USE_BACKGROUND_ON_PDF_X)?$conf->global->MAIN_USE_BACKGROUND_ON_PDF_X:0), (isset($conf->global->MAIN_USE_BACKGROUND_ON_PDF_Y)?$conf->global->MAIN_USE_BACKGROUND_ON_PDF_Y:0), 0, $page_height);
$pdf->SetAutoPageBreak(1,0); // Restore pagebreak
} }
} }
@ -1036,10 +1038,10 @@ function pdf_getlinedesc($object,$i,$outputlangs,$hideref=0,$hidedesc=0,$issuppl
if (empty($hideref)) if (empty($hideref))
{ {
if ($issupplierline) $ref_prodserv = $prodser->ref.' ('.$outputlangs->transnoentitiesnoconv("SupplierRef").' '.$ref_supplier.')'; // Show local ref and supplier ref if ($issupplierline) $ref_prodserv = $prodser->ref.($ref_supplier ? ' ('.$outputlangs->transnoentitiesnoconv("SupplierRef").' '.$ref_supplier.')' : ''); // Show local ref and supplier ref
else $ref_prodserv = $prodser->ref; // Show local ref only else $ref_prodserv = $prodser->ref; // Show local ref only
$ref_prodserv .= " - "; if (! empty($libelleproduitservice)) $ref_prodserv .= " - ";
} }
$libelleproduitservice=$prefix_prodserv.$ref_prodserv.$libelleproduitservice; $libelleproduitservice=$prefix_prodserv.$ref_prodserv.$libelleproduitservice;

View File

@ -292,11 +292,11 @@ function dol_loginfunction($langs,$conf,$mysoc)
if (! empty($conf->global->MAIN_USE_JQUERY_THEME)) $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME; if (! empty($conf->global->MAIN_USE_JQUERY_THEME)) $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME;
// Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_nomousehover // Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_nomousehover
$dol_hide_topmenu=GETPOST('dol_hide_topmenu'); $dol_hide_topmenu=GETPOST('dol_hide_topmenu','int');
$dol_hide_leftmenu=GETPOST('dol_hide_leftmenu'); $dol_hide_leftmenu=GETPOST('dol_hide_leftmenu','int');
$dol_optimize_smallscreen=GETPOST('dol_optimize_smallscreen'); $dol_optimize_smallscreen=GETPOST('dol_optimize_smallscreen','int');
$dol_no_mouse_hover=GETPOST('dol_no_mouse_hover'); $dol_no_mouse_hover=GETPOST('dol_no_mouse_hover','int');
$dol_use_jmobile=GETPOST('dol_use_jmobile'); $dol_use_jmobile=GETPOST('dol_use_jmobile','int');
// Include login page template // Include login page template
include $template_dir.'login.tpl.php'; include $template_dir.'login.tpl.php';

View File

@ -772,8 +772,6 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
// Suppliers // Suppliers
if (! empty($conf->societe->enabled) && ! empty($conf->fournisseur->enabled)) if (! empty($conf->societe->enabled) && ! empty($conf->fournisseur->enabled))
{
if (! empty($conf->facture->enabled))
{ {
$langs->load("bills"); $langs->load("bills");
$newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills", $langs->trans("BillsSuppliers"),0,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills", $langs->trans("BillsSuppliers"),0,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills');
@ -783,7 +781,6 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
$newmenu->add("/compta/facture/stats/index.php?leftmenu=suppliers_bills&mode=supplier", $langs->trans("Statistics"),1,$user->rights->fournisseur->facture->lire); $newmenu->add("/compta/facture/stats/index.php?leftmenu=suppliers_bills&mode=supplier", $langs->trans("Statistics"),1,$user->rights->fournisseur->facture->lire);
} }
}
// Orders // Orders
if (! empty($conf->commande->enabled)) if (! empty($conf->commande->enabled))

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
* *
* 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
@ -179,9 +180,10 @@ class pdf_rouget extends ModelePdfExpedition
$tab_height = 130; $tab_height = 130;
$tab_height_newpage = 150; $tab_height_newpage = 150;
if (! empty($object->note_public) || ! empty($object->tracking_number)) if (! empty($object->note_public) || (! empty($object->tracking_number) && ! empty($object->shipping_method_id)))
{ {
$tab_top = 88; $tab_top = 88;
$tab_top_alt = $tab_top;
// Tracking number // Tracking number
if (! empty($object->tracking_number)) if (! empty($object->tracking_number))
@ -196,7 +198,9 @@ class pdf_rouget extends ModelePdfExpedition
$label=$outputlangs->trans("LinkToTrackYourPackage")."<br>"; $label=$outputlangs->trans("LinkToTrackYourPackage")."<br>";
$label.=$outputlangs->trans("SendingMethod".strtoupper($code))." :"; $label.=$outputlangs->trans("SendingMethod".strtoupper($code))." :";
$pdf->SetFont('','B', $default_font_size - 2); $pdf->SetFont('','B', $default_font_size - 2);
$pdf->writeHTMLCell(60, 4, $this->posxdesc-1, $tab_top-1, $label." ".$object->tracking_url, 0, 1, false, true, 'L'); $pdf->writeHTMLCell(60, 7, $this->posxdesc-1, $tab_top-1, $label." ".$object->tracking_url, 0, 1, false, true, 'L');
$tab_top_alt += 7;
} }
} }
} }
@ -205,7 +209,7 @@ class pdf_rouget extends ModelePdfExpedition
if (! empty($object->note_public)) if (! empty($object->note_public))
{ {
$pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page $pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page
$pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top_alt, dol_htmlentitiesbr($object->note_public), 0, 1);
} }
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();

View File

@ -74,10 +74,10 @@ class modSalaries extends DolibarrModules
$this->conflictwith = array(); $this->conflictwith = array();
$this->langfiles = array("salaries"); $this->langfiles = array("salaries");
// Constantes // Constants
$this->const = array(); $this->const = array();
// Boites // Boxes
$this->boxes = array(); $this->boxes = array();
// Permissions // Permissions
@ -151,7 +151,7 @@ class modSalaries extends DolibarrModules
{ {
global $conf; global $conf;
// Nettoyage avant activation // Clean before activation
$this->remove($options); $this->remove($options);
$sql = array(); $sql = array();

View File

@ -329,7 +329,7 @@ class modSociete extends DolibarrModules
unset($this->export_entities_array[$r]['s.code_fournisseur']); unset($this->export_entities_array[$r]['s.code_fournisseur']);
} }
// Add extra fields // Add extra fields
$sql="SELECT name, label FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'socpeople'"; $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'socpeople'";
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) // This can fail when class is used on old database (during migration for example) if ($resql) // This can fail when class is used on old database (during migration for example)
{ {

View File

@ -993,7 +993,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("OrderToProcess"), '', 'R'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("OrderToProcess"), '', 'R');
} }
$posy+=2; $posy+=5;
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
// Show list of linked objects // Show list of linked objects

View File

@ -487,7 +487,7 @@ jQuery(document).ready(function() {
function setforfree() { function setforfree() {
jQuery("#search_idprod").val(''); jQuery("#search_idprod").val('');
jQuery("#idprod").val(''); jQuery("#idprod").val('');
jQuery("#idprodfournprice").val(''); jQuery("#idprodfournprice").val('0'); // Set cursor on not selected product
jQuery("#search_idprodfournprice").val(''); jQuery("#search_idprodfournprice").val('');
jQuery("#prod_entry_mode_free").attr('checked',true); jQuery("#prod_entry_mode_free").attr('checked',true);
jQuery("#prod_entry_mode_predef").attr('checked',false); jQuery("#prod_entry_mode_predef").attr('checked',false);

View File

@ -1128,6 +1128,10 @@ class Expedition extends CommonObject
// Eat-by date // Eat-by date
if (! empty($conf->productbatch->enabled)) { if (! empty($conf->productbatch->enabled)) {
/* test on conf at begining of file sometimes doesn't include expeditionbatch
* May be conf is not well initialized for dark reason
*/
require_once DOL_DOCUMENT_ROOT.'/expedition/class/expeditionbatch.class.php';
$line->detail_batch=ExpeditionLigneBatch::FetchAll($this->db,$obj->line_id); $line->detail_batch=ExpeditionLigneBatch::FetchAll($this->db,$obj->line_id);
} }
$this->lines[$i] = $line; $this->lines[$i] = $line;

View File

@ -500,7 +500,7 @@ if ($action == 'send' && ! GETPOST('addfile','alpha') && ! GETPOST('removedfile'
$interface=new Interfaces($db); $interface=new Interfaces($db);
$result=$interface->run_triggers('SHIPPING_SENTBYMAIL',$object,$user,$langs,$conf); $result=$interface->run_triggers('SHIPPING_SENTBYMAIL',$object,$user,$langs,$conf);
if ($result < 0) { if ($result < 0) {
$error++; $this->errors=$interface->errors; $error++; $object->errors=$interface->errors;
} }
// Fin appel triggers // Fin appel triggers
@ -863,7 +863,7 @@ if ($action == 'create')
if (($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) || $defaultqty < 0) $defaultqty=0; if (($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) || $defaultqty < 0) $defaultqty=0;
} }
if (empty($conf->productbatch->enabled) || ! ($product->hasbatch() and is_array($product->stock_warehouse[GETPOST('entrepot_id','int')]))) if (empty($conf->productbatch->enabled) || ! ($product->hasbatch() and is_object($product->stock_warehouse[GETPOST('entrepot_id','int')])))
{ {
// Quantity to send // Quantity to send
print '<td align="center">'; print '<td align="center">';

View File

@ -730,7 +730,7 @@ if ($action == 'send' && ! GETPOST('cancel','alpha') && (empty($conf->global->MA
$interface=new Interfaces($db); $interface=new Interfaces($db);
$result=$interface->run_triggers('FICHINTER_SENTBYMAIL',$object,$user,$langs,$conf); $result=$interface->run_triggers('FICHINTER_SENTBYMAIL',$object,$user,$langs,$conf);
if ($result < 0) { if ($result < 0) {
$error++; $this->errors=$interface->errors; $error++; $object->errors=$interface->errors;
} }
// Fin appel triggers // Fin appel triggers

View File

@ -42,6 +42,7 @@ class FactureFournisseur extends CommonInvoice
public $fk_element='fk_facture_fourn'; public $fk_element='fk_facture_fourn';
protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
var $rowid;
var $ref; var $ref;
var $product_ref; var $product_ref;
var $ref_supplier; var $ref_supplier;
@ -444,7 +445,7 @@ class FactureFournisseur extends CommonInvoice
*/ */
function fetch_lines() function fetch_lines()
{ {
$sql = 'SELECT f.rowid, f.description, f.pu_ht, f.pu_ttc, f.qty, f.remise_percent, f.tva_tx, f.tva'; $sql = 'SELECT f.rowid, f.ref as ref_supplier, f.description, f.pu_ht, f.pu_ttc, f.qty, f.remise_percent, f.tva_tx, f.tva';
$sql.= ', f.localtax1_tx, f.localtax2_tx, f.total_localtax1, f.total_localtax2 '; $sql.= ', f.localtax1_tx, f.localtax2_tx, f.total_localtax1, f.total_localtax2 ';
$sql.= ', f.total_ht, f.tva as total_tva, f.total_ttc, f.fk_product, f.product_type, f.info_bits'; $sql.= ', f.total_ht, f.tva as total_tva, f.total_ttc, f.fk_product, f.product_type, f.info_bits';
$sql.= ', p.rowid as product_id, p.ref as product_ref, p.label as label, p.description as product_desc'; $sql.= ', p.rowid as product_id, p.ref as product_ref, p.label as label, p.description as product_desc';
@ -452,7 +453,7 @@ class FactureFournisseur extends CommonInvoice
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON f.fk_product = p.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON f.fk_product = p.rowid';
$sql.= ' WHERE fk_facture_fourn='.$this->id; $sql.= ' WHERE fk_facture_fourn='.$this->id;
dol_syslog("FactureFournisseur::fetch_lines sql=".$sql, LOG_DEBUG); dol_syslog(get_class($this)."::fetch_lines sql=".$sql, LOG_DEBUG);
$resql_rows = $this->db->query($sql); $resql_rows = $this->db->query($sql);
if ($resql_rows) if ($resql_rows)
{ {
@ -467,10 +468,10 @@ class FactureFournisseur extends CommonInvoice
$this->lines[$i] = new stdClass(); $this->lines[$i] = new stdClass();
$this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->rowid = $obj->rowid;
$this->lines[$i]->description = $obj->description; $this->lines[$i]->description = $obj->description;
$this->lines[$i]->ref = $obj->product_ref; // TODO deprecated
$this->lines[$i]->product_ref = $obj->product_ref; // Internal reference $this->lines[$i]->product_ref = $obj->product_ref; // Internal reference
//$this->lines[$i]->ref_fourn = $obj->ref_fourn; // Reference fournisseur du produit $this->lines[$i]->ref = $obj->product_ref; // deprecated.
$this->lines[$i]->libelle = $obj->label; // Label du produit $this->lines[$i]->ref_supplier = $obj->ref_supplier; // Reference product supplier TODO Rename field ref to ref_supplier into table llx_facture_fourn_det and llx_commande_fournisseurdet and update fields it into updateline
$this->lines[$i]->libelle = $obj->label; // This field may contains label of product (when invoice create from order)
$this->lines[$i]->product_desc = $obj->product_desc; // Description du produit $this->lines[$i]->product_desc = $obj->product_desc; // Description du produit
$this->lines[$i]->pu_ht = $obj->pu_ht; $this->lines[$i]->pu_ht = $obj->pu_ht;
$this->lines[$i]->pu_ttc = $obj->pu_ttc; $this->lines[$i]->pu_ttc = $obj->pu_ttc;
@ -498,7 +499,7 @@ class FactureFournisseur extends CommonInvoice
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();
dol_syslog('FactureFournisseur::fetch_lines: Error '.$this->error,LOG_ERR); dol_syslog(get_class($this).'::fetch_lines: Error '.$this->error,LOG_ERR);
return -3; return -3;
} }
} }
@ -542,7 +543,7 @@ class FactureFournisseur extends CommonInvoice
if (isset($this->fk_user_valid)) $this->fk_user_valid=trim($this->fk_user_valid); if (isset($this->fk_user_valid)) $this->fk_user_valid=trim($this->fk_user_valid);
if (isset($this->fk_facture_source)) $this->fk_facture_source=trim($this->fk_facture_source); if (isset($this->fk_facture_source)) $this->fk_facture_source=trim($this->fk_facture_source);
if (isset($this->fk_project)) $this->fk_project=trim($this->fk_project); if (isset($this->fk_project)) $this->fk_project=trim($this->fk_project);
if (isset($this->fk_cond_reglement)) $this->fk_cond_reglement=trim($this->fk_cond_reglement); if (isset($this->cond_reglement_id)) $this->cond_reglement_id=trim($this->cond_reglement_id);
if (isset($this->note_private)) $this->note=trim($this->note_private); if (isset($this->note_private)) $this->note=trim($this->note_private);
if (isset($this->note_public)) $this->note_public=trim($this->note_public); if (isset($this->note_public)) $this->note_public=trim($this->note_public);
if (isset($this->model_pdf)) $this->model_pdf=trim($this->model_pdf); if (isset($this->model_pdf)) $this->model_pdf=trim($this->model_pdf);
@ -580,7 +581,7 @@ class FactureFournisseur extends CommonInvoice
$sql.= " fk_user_valid=".(isset($this->fk_user_valid)?$this->fk_user_valid:"null").","; $sql.= " fk_user_valid=".(isset($this->fk_user_valid)?$this->fk_user_valid:"null").",";
$sql.= " fk_facture_source=".(isset($this->fk_facture_source)?$this->fk_facture_source:"null").","; $sql.= " fk_facture_source=".(isset($this->fk_facture_source)?$this->fk_facture_source:"null").",";
$sql.= " fk_projet=".(isset($this->fk_project)?$this->fk_project:"null").","; $sql.= " fk_projet=".(isset($this->fk_project)?$this->fk_project:"null").",";
$sql.= " fk_cond_reglement=".(isset($this->fk_cond_reglement)?$this->fk_cond_reglement:"null").","; $sql.= " fk_cond_reglement=".(isset($this->cond_reglement_id)?$this->cond_reglement_id:"null").",";
$sql.= " date_lim_reglement=".(dol_strlen($this->date_echeance)!=0 ? "'".$this->db->idate($this->date_echeance)."'" : 'null').","; $sql.= " date_lim_reglement=".(dol_strlen($this->date_echeance)!=0 ? "'".$this->db->idate($this->date_echeance)."'" : 'null').",";
$sql.= " note_private=".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null").","; $sql.= " note_private=".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null").",";
$sql.= " note_public=".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null").","; $sql.= " note_public=".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null").",";
@ -1076,6 +1077,8 @@ class FactureFournisseur extends CommonInvoice
* @param int $rang Position of line * @param int $rang Position of line
* @param int $notrigger Disable triggers * @param int $notrigger Disable triggers
* @return int >0 if OK, <0 if KO * @return int >0 if OK, <0 if KO
*
* FIXME Add field ref (that should be named ref_supplier) and label into update. For example can be filled when product line created from order.
*/ */
function addline($desc, $pu, $txtva, $txlocaltax1, $txlocaltax2, $qty, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits='', $price_base_type='HT', $type=0, $rang=-1, $notrigger=false) function addline($desc, $pu, $txtva, $txlocaltax1, $txlocaltax2, $qty, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits='', $price_base_type='HT', $type=0, $rang=-1, $notrigger=false)
{ {
@ -1152,7 +1155,7 @@ class FactureFournisseur extends CommonInvoice
* Update a line detail into database * Update a line detail into database
* *
* @param int $id Id of line invoice * @param int $id Id of line invoice
* @param string $label Description of line * @param string $desc Description of line
* @param double $pu Prix unitaire (HT ou TTC selon price_base_type) * @param double $pu Prix unitaire (HT ou TTC selon price_base_type)
* @param double $vatrate VAT Rate * @param double $vatrate VAT Rate
* @param double $txlocaltax1 LocalTax1 Rate * @param double $txlocaltax1 LocalTax1 Rate
@ -1166,9 +1169,9 @@ class FactureFournisseur extends CommonInvoice
* @param int $notrigger Disable triggers * @param int $notrigger Disable triggers
* @return int <0 if KO, >0 if OK * @return int <0 if KO, >0 if OK
*/ */
function updateline($id, $label, $pu, $vatrate, $txlocaltax1=0, $txlocaltax2=0, $qty=1, $idproduct=0, $price_base_type='HT', $info_bits=0, $type=0, $remise_percent=0, $notrigger=false) function updateline($id, $desc, $pu, $vatrate, $txlocaltax1=0, $txlocaltax2=0, $qty=1, $idproduct=0, $price_base_type='HT', $info_bits=0, $type=0, $remise_percent=0, $notrigger=false)
{ {
dol_syslog(get_class($this)."::updateline $id,$label,$pu,$vatrate,$qty,$idproduct,$price_base_type,$info_bits,$type,$remise_percent", LOG_DEBUG); dol_syslog(get_class($this)."::updateline $id,$desc,$pu,$vatrate,$qty,$idproduct,$price_base_type,$info_bits,$type,$remise_percent", LOG_DEBUG);
include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php';
$pu = price2num($pu); $pu = price2num($pu);
@ -1217,7 +1220,7 @@ class FactureFournisseur extends CommonInvoice
} }
$sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn_det SET"; $sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn_det SET";
$sql.= " description ='".$this->db->escape($label)."'"; $sql.= " description ='".$this->db->escape($desc)."'";
$sql.= ", pu_ht = ".price2num($pu_ht); $sql.= ", pu_ht = ".price2num($pu_ht);
$sql.= ", pu_ttc = ".price2num($pu_ttc); $sql.= ", pu_ttc = ".price2num($pu_ttc);
$sql.= ", qty = ".price2num($qty); $sql.= ", qty = ".price2num($qty);

View File

@ -40,8 +40,13 @@ class ProductFournisseur extends Product
var $product_fourn_price_id; // id of ligne product-supplier var $product_fourn_price_id; // id of ligne product-supplier
var $id; // product id var $id; // product id
var $fourn_ref; // ref supplier var $fourn_ref; // deprecated
var $fourn_qty; // quantity for price var $ref_supplier; // ref supplier (can be set by get_buyprice)
var $vatrate_supplier; // default vat rate for this supplier/qty/product (can be set by get_buyprice)
var $fourn_qty; // quantity for price (can be set by get_buyprice)
var $fourn_pu; // unit price for quantity (can be set by get_buyprice)
var $fourn_price; // price for quantity var $fourn_price; // price for quantity
var $fourn_remise_percent; // discount for quantity (percent) var $fourn_remise_percent; // discount for quantity (percent)
var $fourn_remise; // discount for quantity (amount) var $fourn_remise; // discount for quantity (amount)

View File

@ -1734,17 +1734,6 @@ elseif (! empty($object->id))
// Form to add new line // Form to add new line
if ($object->statut == 0 && $user->rights->fournisseur->commande->creer && $action <> 'edit_line') if ($object->statut == 0 && $user->rights->fournisseur->commande->creer && $action <> 'edit_line')
{ {
/*print '<tr class="liste_titre">';
print '<td>';
print '<a name="add"></a>'; // ancre
print $langs->trans('AddNewLine').' - '.$langs->trans("FreeZone").'</td>';
print '<td align="right">'.$langs->trans('VAT').'</td>';
print '<td align="right">'.$langs->trans('PriceUHT').'</td>';
print '<td align="right">'.$langs->trans('Qty').'</td>';
print '<td align="right">'.$langs->trans('ReductionShort').'</td>';
print '<td colspan="4">&nbsp;</td>';
print '</tr>';*/
// Add free products/services form // Add free products/services form
global $forceall, $senderissupplier, $dateSelector; global $forceall, $senderissupplier, $dateSelector;
$forceall=1; $senderissupplier=1; $dateSelector=0; $forceall=1; $senderissupplier=1; $dateSelector=0;
@ -1761,97 +1750,6 @@ elseif (! empty($object->id))
$reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
} }
} }
/*
$var=true;
print '<tr '.$bc[$var].'>';
print '<td>';
$forceall=1;
print $form->select_type_of_lines(isset($_POST["type"])?$_POST["type"]:-1,'type',1,0,$forceall);
if ($forceall || (! empty($conf->product->enabled) && ! empty($conf->service->enabled))
|| (empty($conf->product->enabled) && empty($conf->service->enabled))) print '<br>';
if (is_object($hookmanager))
{
$parameters=array();
$reshook=$hookmanager->executeHooks('formCreateProductOptions',$parameters,$object,$action);
}
$nbrows=ROWS_2;
if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT;
$doleditor = new DolEditor('dp_desc', GETPOST('dp_desc'), '', 100, 'dolibarr_details', '', false, true, $conf->global->FCKEDITOR_ENABLE_DETAILS, $nbrows, 70);
$doleditor->Create();
print '</td>';
print '<td align="center">';
print $form->load_tva('tva_tx',(GETPOST('tva_tx')?GETPOST('tva_tx'):-1),$object->thirdparty,$mysoc);
print '</td>';
print '<td align="right"><input type="text" name="pu" size="5" value="'.GETPOST('pu').'"></td>';
print '<td align="right"><input type="text" name="qty" value="'.(GETPOST('qty')?GETPOST('qty'):'1').'" size="2"></td>';
print '<td align="right" class="nowrap"><input type="text" name="remise_percent" size="1" value="'.(GETPOST('remise_percent')?GETPOST('remise_percent'):$object->thirdparty->remise_percent).'"><span class="hideonsmartphone">%</span></td>';
print '<td align="center" colspan="4"><input type="submit" class="button" value="'.$langs->trans('Add').'" name="addline_libre"></td>';
print '</tr>';
// Ajout de produits/services predefinis
if (! empty($conf->product->enabled) || ! empty($conf->service->enabled))
{
print '<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(\'#idprodfournprice\').change(function() {
if (jQuery(\'#idprodfournprice\').val() > 0) jQuery(\'#np_desc\').focus();
});
});
</script>';
print '<tr class="liste_titre">';
print '<td colspan="3">';
print $langs->trans("AddNewLine").' - ';
if (! empty($conf->service->enabled))
{
print $langs->trans('RecordedProductsAndServices');
}
else
{
print $langs->trans('RecordedProducts');
}
print '</td>';
print '<td align="right">'.$langs->trans('Qty').'</td>';
print '<td align="right">'.$langs->trans('ReductionShort').'</td>';
print '<td colspan="4">&nbsp;</td>';
print '</tr>';
$var=!$var;
print '<tr '.$bc[$var].'>';
print '<td colspan="3">';
$ajaxoptions=array(
'update' => array('qty_predef'=>'qty','remise_percent_predef' => 'discount'), // html id tag will be edited with which ajax json response key
'option_disabled' => 'addPredefinedProductButton', // html id to disable once select is done
'error' => $langs->trans("NoPriceDefinedForThisSupplier") // translation of an error saved into var 'error'
);
$form->select_produits_fournisseurs($object->fourn_id, GETPOST('idprodfournprice'), 'idprodfournprice', '', '', $ajaxoptions);
if (empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) print '<br>';
if (is_object($hookmanager))
{
$parameters=array('htmlname'=>'idprodfournprice');
$reshook=$hookmanager->executeHooks('formCreateProductSupplierOptions',$parameters,$object,$action);
}
$nbrows=ROWS_2;
if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT;
$doleditor = new DolEditor('np_desc', GETPOST('np_desc'), '', 100, 'dolibarr_details', '', false, true, $conf->global->FCKEDITOR_ENABLE_DETAILS, $nbrows, 70);
$doleditor->Create();
print '</td>';
print '<td align="right"><input type="text" size="2" id="qty_predef" name="qty_predef" value="'.(GETPOST('qty_predef')?GETPOST('qty_predef'):'1').'"></td>';
print '<td align="right" class="nowrap"><input type="text" size="1" id="remise_percent_predef" name="remise_percent_predef" value="'.(GETPOST('remise_percent_predef')?GETPOST('remise_percent_predef'):$object->thirdparty->remise_percent).'"><span class="hideonsmartphone">%</span></td>';
print '<td align="center" colspan="4"><input type="submit" id="addPredefinedProductButton" class="button" value="'.$langs->trans('Add').'" name="addline_predefined"></td>';
print '</tr>';
}*/
} }
print '</table>'; print '</table>';

View File

@ -3,6 +3,7 @@
* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr> * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
* *
* 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
@ -115,7 +116,8 @@ if ($sall)
} }
if ($socid) $sql.= " AND s.rowid = ".$socid; if ($socid) $sql.= " AND s.rowid = ".$socid;
if (GETPOST('statut')!='') //Required triple check because statut=0 means draft filter
if (GETPOST('statut', 'int') !== '')
{ {
$sql .= " AND fk_statut IN (".GETPOST('statut').")"; $sql .= " AND fk_statut IN (".GETPOST('statut').")";
} }

View File

@ -363,6 +363,7 @@ elseif ($action == 'add' && $user->rights->fournisseur->facture->creer)
if ($lines[$i]->date_fin_reel) $date_end=$lines[$i]->date_fin_reel; if ($lines[$i]->date_fin_reel) $date_end=$lines[$i]->date_fin_reel;
if ($lines[$i]->date_end) $date_end=$lines[$i]->date_end; if ($lines[$i]->date_end) $date_end=$lines[$i]->date_end;
// FIXME Missing $lines[$i]->ref_supplier and $lines[$i]->label into addline and updateline methods. They are filled when coming from order for example.
$result = $object->addline( $result = $object->addline(
$desc, $desc,
$lines[$i]->subprice, $lines[$i]->subprice,
@ -466,9 +467,10 @@ elseif ($action == 'add' && $user->rights->fournisseur->facture->creer)
} }
} }
// Modification d'une ligne // Edit line
elseif ($action == 'update_line' && $user->rights->fournisseur->facture->creer) elseif ($action == 'update_line' && $user->rights->fournisseur->facture->creer)
{ {
// TODO Missing transaction
if (GETPOST('etat') == '1' && ! GETPOST('cancel')) // si on valide la modification if (GETPOST('etat') == '1' && ! GETPOST('cancel')) // si on valide la modification
{ {
$object->fetch($id); $object->fetch($id);
@ -516,6 +518,8 @@ elseif ($action == 'update_line' && $user->rights->fournisseur->facture->creer)
elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer) elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
{ {
$db->begin();
$ret=$object->fetch($id); $ret=$object->fetch($id);
if ($ret < 0) if ($ret < 0)
{ {
@ -601,6 +605,7 @@ elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
$type = $productsupplier->type; $type = $productsupplier->type;
// TODO Save the product supplier ref into database into field ref_supplier (must rename field ref into ref_supplier first)
$result=$object->addline($desc, $productsupplier->fourn_pu, $tvatx, $localtax1tx, $localtax2tx, $qty, $idprod, $remise_percent, '', '', 0, $npr); $result=$object->addline($desc, $productsupplier->fourn_pu, $tvatx, $localtax1tx, $localtax2tx, $qty, $idprod, $remise_percent, '', '', 0, $npr);
} }
if ($idprod == -2 || $idprod == 0) if ($idprod == -2 || $idprod == 0)
@ -655,6 +660,8 @@ elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
//print "xx".$tva_tx; exit; //print "xx".$tva_tx; exit;
if (! $error && $result > 0) if (! $error && $result > 0)
{ {
$db->commit();
// Define output language // Define output language
$outputlangs = $langs; $outputlangs = $langs;
$newlang=GETPOST('lang_id','alpha'); $newlang=GETPOST('lang_id','alpha');
@ -704,10 +711,14 @@ elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
unset($_POST['date_endmonth']); unset($_POST['date_endmonth']);
unset($_POST['date_endyear']); unset($_POST['date_endyear']);
} }
else if (empty($mesg)) else
{
$db->rollback();
if (empty($mesg))
{ {
$mesg='<div class="error">'.$object->error.'</div>'; $mesg='<div class="error">'.$object->error.'</div>';
} }
}
$action = ''; $action = '';
} }
@ -900,7 +911,7 @@ if ($action == 'send' && ! $_POST['addfile'] && ! $_POST['removedfile'] && ! $_P
$interface=new Interfaces($db); $interface=new Interfaces($db);
$result=$interface->run_triggers('BILL_SUPPLIER_SENTBYMAIL',$object,$user,$langs,$conf); $result=$interface->run_triggers('BILL_SUPPLIER_SENTBYMAIL',$object,$user,$langs,$conf);
if ($result < 0) { if ($result < 0) {
$error++; $this->errors=$interface->errors; $error++; $object->errors=$interface->errors;
} }
// Fin appel triggers // Fin appel triggers
@ -1141,10 +1152,10 @@ if ($action == 'create')
$mode_reglement_id = (!empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(!empty($soc->mode_reglement_supplier_id)?$soc->mode_reglement_supplier_id:0)); $mode_reglement_id = (!empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(!empty($soc->mode_reglement_supplier_id)?$soc->mode_reglement_supplier_id:0));
$remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0)); $remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0));
$remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0)); $remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0));
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0; $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
$datetmp=dol_mktime(12,0,0,$_POST['remonth'],$_POST['reday'],$_POST['reyear']); $datetmp=dol_mktime(12,0,0,$_POST['remonth'],$_POST['reday'],$_POST['reyear']);
$dateinvoice=($datetmp==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0):$datetmp); $dateinvoice=($datetmp==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$datetmp);
$datetmp=dol_mktime(12,0,0,$_POST['echmonth'],$_POST['echday'],$_POST['echyear']); $datetmp=dol_mktime(12,0,0,$_POST['echmonth'],$_POST['echday'],$_POST['echyear']);
$datedue=($datetmp==''?-1:$datetmp); $datedue=($datetmp==''?-1:$datetmp);
} }
@ -1154,7 +1165,7 @@ if ($action == 'create')
$cond_reglement_id = $societe->cond_reglement_supplier_id; $cond_reglement_id = $societe->cond_reglement_supplier_id;
$mode_reglement_id = $societe->mode_reglement_supplier_id; $mode_reglement_id = $societe->mode_reglement_supplier_id;
$datetmp=dol_mktime(12,0,0,$_POST['remonth'],$_POST['reday'],$_POST['reyear']); $datetmp=dol_mktime(12,0,0,$_POST['remonth'],$_POST['reday'],$_POST['reyear']);
$dateinvoice=($datetmp==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0):$datetmp); $dateinvoice=($datetmp==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$datetmp);
$datetmp=dol_mktime(12,0,0,$_POST['echmonth'],$_POST['echday'],$_POST['echyear']); $datetmp=dol_mktime(12,0,0,$_POST['echmonth'],$_POST['echday'],$_POST['echyear']);
$datedue=($datetmp==''?-1:$datetmp); $datedue=($datetmp==''?-1:$datetmp);
} }
@ -2056,24 +2067,9 @@ else
// Form to add new line // Form to add new line
if ($object->statut == 0 && $action != 'edit_line') if ($object->statut == 0 && $action != 'edit_line')
{ {
/*print '<tr class="liste_titre">';
print '<td>';
print '<a name="add"></a>'; // ancre
print $langs->trans('AddNewLine').' - '.$langs->trans("FreeZone").'</td>';
print '<td align="right">'.$langs->trans('VAT').'</td>';
print '<td align="right">'.$langs->trans('PriceUHT').'</td>';
print '<td align="right">'.$langs->trans('PriceUTTC').'</td>';
print '<td align="right">'.$langs->trans('Qty').'</td>';
print '<td align="right">'.$langs->trans('ReductionShort').'</td>';
print '<td align="right">&nbsp;</td>';
print '<td align="right">&nbsp;</td>';
print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
print '</tr>';*/
global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax; global $forceall, $senderissupplier, $dateSelector, $inputalsopricewithtax;
$forceall=1; $senderissupplier=1; $dateSelector=0; $inputalsopricewithtax=1; $forceall=1; $senderissupplier=1; $dateSelector=0; $inputalsopricewithtax=1;
if ($object->statut == 0 && $user->rights->propal->creer) if ($object->statut == 0 && $user->rights->fournisseur->facture->creer)
{ {
if ($action != 'editline') if ($action != 'editline')
{ {
@ -2086,108 +2082,6 @@ else
$reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
} }
} }
// Add free products/services form
/*
$var=true;
print '<tr '.$bc[$var].'>';
print '<td>';
$forceall=1; // For suppliers, we always show all types
print $form->select_type_of_lines(isset($_POST["type"])?$_POST["type"]:-1,'type',1,0,$forceall);
if ($forceall || (! empty($conf->product->enabled) && ! empty($conf->service->enabled))
|| (empty($conf->product->enabled) && empty($conf->service->enabled))) print '<br>';
if (is_object($hookmanager))
{
$parameters=array();
$reshook=$hookmanager->executeHooks('formCreateSupplierProductOptions',$parameters,$object,$action);
}
$nbrows=ROWS_2;
if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT;
$doleditor=new DolEditor('dp_desc',GETPOST("dp_desc"),'',100,'dolibarr_details','',false,true,$conf->global->FCKEDITOR_ENABLE_DETAILS,$nbrows,70);
$doleditor->Create();
print '</td>';
print '<td align="right">';
print $form->load_tva('tauxtva',(GETPOST('tauxtva')?GETPOST('tauxtva'):-1),$societe,$mysoc);
print '</td>';
print '<td align="right">';
print '<input size="4" name="amount" type="text" value="'.GETPOST("amount").'">';
print '</td>';
print '<td align="right">';
print '<input size="4" name="amountttc" type="text" value="'.GETPOST("amountttc").'">';
print '</td>';
print '<td align="right">';
print '<input size="1" name="qty" type="text" value="1" value="'.GETPOST("qty").'">';
print '</td>';
print '<td align="right" class="nowrap"><input size="1" name="remise_percent" type="text" value="'.(GETPOST('remise_percent')?GETPOST('remise_percent'):'0').'"><span class="hideonsmartphone">%</span></td>';
print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
print '<td align="center" valign="middle" colspan="2"><input type="submit" class="button" value="'.$langs->trans('Add').'" name="addline_libre"></td></tr>';
// Ajout de produits/services predefinis
if (! empty($conf->product->enabled) || ! empty($conf->service->enabled))
{
print '<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(\'#idprodfournprice\').change(function() {
if (jQuery(\'#idprodfournprice\').val() > 0) jQuery(\'#np_desc\').focus();
});
});
</script>';
print '<tr class="liste_titre">';
print '<td colspan="4">';
print $langs->trans("AddNewLine").' - ';
if (! empty($conf->service->enabled))
{
print $langs->trans('RecordedProductsAndServices');
}
else
{
print $langs->trans('RecordedProducts');
}
print '</td>';
print '<td align="right">'.$langs->trans('Qty').'</td>';
print '<td align="right">'.$langs->trans('ReductionShort').'</td>';
print '<td>&nbsp;</td>';
print '<td colspan="4">&nbsp;</td>';
print '</tr>';
$var=! $var;
print '<tr '.$bc[$var].'>';
print '<td colspan="4">';
$ajaxoptions=array(
'update' => array('qty_predef'=>'qty','remise_percent_predef' => 'discount'), // html id tag will be edited with which ajax json response key
'disabled' => 'addPredefinedProductButton', // html id to disable once select is done
'error' => $langs->trans("NoPriceDefinedForThisSupplier") // translation of an error saved into var 'error'
);
$form->select_produits_fournisseurs($object->socid, GETPOST('idprodfournprice'), 'idprodfournprice', '', '', $ajaxoptions);
if (empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) print '<br>';
if (is_object($hookmanager))
{
$parameters=array('htmlname'=>'idprodfournprice');
$reshook=$hookmanager->executeHooks('formCreateProductSupplierOptions',$parameters,$object,$action);
}
$nbrows=ROWS_2;
if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT;
$doleditor = new DolEditor('np_desc', GETPOST('np_desc'), '', 100, 'dolibarr_details', '', false, true, $conf->global->FCKEDITOR_ENABLE_DETAILS, $nbrows, 70);
$doleditor->Create();
print '</td>';
print '<td align="right"><input type="text" id="qty_predef" name="qty_predef" value="1" size="1"></td>';
print '<td align="right" class="nowrap"><input size="1" id="remise_percent_predef" name="remise_percent_predef" type="text" value="'.(GETPOST('remise_percent_predef')?GETPOST('remise_percent_predef'):'0').'"><span class="hideonsmartphone">%</span></td>';
print '<td>&nbsp;</td>';
print '<td>&nbsp;</td>';
print '<td align="center" valign="middle" colspan="2"><input type="submit" id="addPredefinedProductButton" class="button" value="'.$langs->trans("Add").'" name="addline_predefined"></td>';
print '</tr>';
}*/
} }
print '</table>'; print '</table>';

View File

@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
if (! $user->rights->facture->lire) accessforbidden(); if (! $user->rights->fournisseur->facture->lire) accessforbidden();
$langs->load("companies"); $langs->load("companies");
$langs->load("bills"); $langs->load("bills");

View File

@ -243,7 +243,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
$object->fetch($facid); $object->fetch($facid);
$datefacture=dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear')); $datefacture=dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear'));
$dateinvoice=($datefacture==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0):$datefacture); $dateinvoice=($datefacture==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$datefacture);
$sql = 'SELECT s.nom, s.rowid as socid,'; $sql = 'SELECT s.nom, s.rowid as socid,';
$sql.= ' f.rowid, f.ref, f.ref_supplier, f.amount, f.total_ttc as total'; $sql.= ' f.rowid, f.ref, f.ref_supplier, f.amount, f.total_ttc as total';

View File

@ -312,6 +312,7 @@ if ($object->fetch($id))
$sql = "SELECT p.rowid,p.ref, p.date_commande as dc, p.fk_statut"; $sql = "SELECT p.rowid,p.ref, p.date_commande as dc, p.fk_statut";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as p "; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as p ";
$sql.= " WHERE p.fk_soc =".$object->id; $sql.= " WHERE p.fk_soc =".$object->id;
$sql.= " AND p.entity =".$conf->entity;
$sql.= " ORDER BY p.date_commande DESC"; $sql.= " ORDER BY p.date_commande DESC";
$sql.= " ".$db->plimit($MAXLIST); $sql.= " ".$db->plimit($MAXLIST);
$resql=$db->query($sql); $resql=$db->query($sql);
@ -380,6 +381,7 @@ if ($object->fetch($id))
$sql.= ' FROM '.MAIN_DB_PREFIX.'facture_fourn as f'; $sql.= ' FROM '.MAIN_DB_PREFIX.'facture_fourn as f';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON f.rowid=pf.fk_facturefourn'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON f.rowid=pf.fk_facturefourn';
$sql.= ' WHERE f.fk_soc = '.$object->id; $sql.= ' WHERE f.fk_soc = '.$object->id;
$sql.= " AND f.entity =".$conf->entity;
$sql.= ' GROUP BY f.rowid,f.libelle,f.ref_supplier,f.fk_statut,f.datef,f.total_ttc,f.paye'; $sql.= ' GROUP BY f.rowid,f.libelle,f.ref_supplier,f.fk_statut,f.datef,f.total_ttc,f.paye';
$sql.= ' ORDER BY f.datef DESC'; $sql.= ' ORDER BY f.datef DESC';
$resql=$db->query($sql); $resql=$db->query($sql);

View File

@ -103,7 +103,7 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->fournisse
} }
} }
if ($action == 'setnum' && ! empty($_POST['num_paiement'])) if ($action == 'setnum_paiement' && ! empty($_POST['num_paiement']))
{ {
$object->fetch($id); $object->fetch($id);
$res = $object->update_num($_POST['num_paiement']); $res = $object->update_num($_POST['num_paiement']);

View File

@ -60,18 +60,18 @@ $cp = new Holiday($db);
if ($action == "add") if ($action == "add")
{ {
$message = ''; $message = '';
$error = false; $error = 0;
// Option du groupe de validation // Option du groupe de validation
/*if (!$cp->updateConfCP('userGroup',$_POST['userGroup'])) /*if (!$cp->updateConfCP('userGroup',$_POST['userGroup']))
{ {
$error = true; $error++;
}*/ }*/
// Option du délai pour faire une demande de congés payés // Option du délai pour faire une demande de congés payés
if (!$cp->updateConfCP('delayForRequest',$_POST['delayForRequest'])) if (!$cp->updateConfCP('delayForRequest',$_POST['delayForRequest']))
{ {
$error = true; $error++;
} }
// Option du nombre de jours à ajouter chaque mois // Option du nombre de jours à ajouter chaque mois
@ -79,67 +79,69 @@ if ($action == "add")
if(!$cp->updateConfCP('nbHolidayEveryMonth',$nbHolidayEveryMonth)) if(!$cp->updateConfCP('nbHolidayEveryMonth',$nbHolidayEveryMonth))
{ {
$error = true; $error++;
} }
// Option du nombre de jours pour un mariage // Option du nombre de jours pour un mariage
$OptMariageCP = price2num($_POST['OptMariage'],5); $OptMariageCP = price2num($_POST['OptMariage'],5);
if(!$cp->updateConfCP('OptMariage',$OptMariageCP)) { if(!$cp->updateConfCP('OptMariage',$OptMariageCP)) {
$error = true; $error++;
} }
// Option du nombre de jours pour un décés d'un proche // Option du nombre de jours pour un décés d'un proche
$OptDecesProcheCP = price2num($_POST['OptDecesProche'],5); $OptDecesProcheCP = price2num($_POST['OptDecesProche'],5);
if(!$cp->updateConfCP('OptDecesProche',$OptDecesProcheCP)) { if(!$cp->updateConfCP('OptDecesProche',$OptDecesProcheCP)) {
$error = true; $error++;
} }
// Option du nombre de jours pour un mariage d'un enfant // Option du nombre de jours pour un mariage d'un enfant
$OptMariageProcheCP = price2num($_POST['OptMariageProche'],5); $OptMariageProcheCP = price2num($_POST['OptMariageProche'],5);
if(!$cp->updateConfCP('OptMariageProche',$OptMariageProcheCP)) { if(!$cp->updateConfCP('OptMariageProche',$OptMariageProcheCP)) {
$error = true; $error++;
} }
// Option du nombre de jours pour un décés d'un parent // Option du nombre de jours pour un décés d'un parent
$OptDecesParentsCP = price2num($_POST['OptDecesParents'],5); $OptDecesParentsCP = price2num($_POST['OptDecesParents'],5);
if(!$cp->updateConfCP('OptDecesParents',$OptDecesParentsCP)) { if(!$cp->updateConfCP('OptDecesParents',$OptDecesParentsCP)) {
$error = true; $error++;
} }
// Option pour avertir le valideur si délai de demande incorrect // Option pour avertir le valideur si délai de demande incorrect
if(isset($_POST['AlertValidatorDelay'])) { if(isset($_POST['AlertValidatorDelay'])) {
if(!$cp->updateConfCP('AlertValidatorDelay','1')) { if(!$cp->updateConfCP('AlertValidatorDelay','1')) {
$error = true; $error++;
} }
} else { } else {
if(!$cp->updateConfCP('AlertValidatorDelay','0')) { if(!$cp->updateConfCP('AlertValidatorDelay','0')) {
$error = true; $error++;
} }
} }
// Option pour avertir le valideur si solde des congés de l'utilisateur inccorect // Option pour avertir le valideur si solde des congés de l'utilisateur inccorect
if(isset($_POST['AlertValidatorSolde'])) { if(isset($_POST['AlertValidatorSolde'])) {
if(!$cp->updateConfCP('AlertValidatorSolde','1')) { if(!$cp->updateConfCP('AlertValidatorSolde','1')) {
$error = true; $error++;
} }
} else { } else {
if(!$cp->updateConfCP('AlertValidatorSolde','0')) { if(!$cp->updateConfCP('AlertValidatorSolde','0')) {
$error = true; $error++;
} }
} }
// Option du nombre de jours à déduire pour 1 jour de congés // Option du nombre de jours à déduire pour 1 jour de congés
$nbHolidayDeducted = price2num($_POST['nbHolidayDeducted'],2); $nbHolidayDeducted = price2num($_POST['nbHolidayDeducted'],2);
if(!$cp->updateConfCP('nbHolidayDeducted',$nbHolidayDeducted)) { if(!$cp->updateConfCP('nbHolidayDeducted',$nbHolidayDeducted))
$error = true; {
$error++;
} }
if ($error) { if ($error)
{
$message = '<div class="error">'.$langs->trans('ErrorUpdateConfCP').'</div>'; $message = '<div class="error">'.$langs->trans('ErrorUpdateConfCP').'</div>';
} else { } else {
$message = '<div class="ok">'.$langs->trans('UpdateConfCPOK').'</div>'; $message = '<div class="ok">'.$langs->trans('UpdateConfCPOK').'</div>';
@ -151,8 +153,8 @@ if ($action == "add")
$result = $db->query($sql); $result = $db->query($sql);
$num = $db->num_rows($sql); $num = $db->num_rows($sql);
if($num < 1)
if($num < 1) { {
$cp->createCPusers(); $cp->createCPusers();
$message.= '<br /><div class="warning">'.$langs->trans('AddCPforUsers').'</div>'; $message.= '<br /><div class="warning">'.$langs->trans('AddCPforUsers').'</div>';
} }
@ -202,7 +204,7 @@ elseif ($action == 'create_event')
} }
elseif($action == 'event' && isset($_POST['update_event'])) elseif($action == 'event' && isset($_POST['update_event']))
{ {
$error = false; $error = 0;
$eventId = array_keys($_POST['update_event']); $eventId = array_keys($_POST['update_event']);
$eventId = $eventId[0]; $eventId = $eventId[0];
@ -213,16 +215,18 @@ elseif($action == 'event' && isset($_POST['update_event']))
$eventValue = $optValue; $eventValue = $optValue;
$eventValue = $eventValue[$eventId]; $eventValue = $eventValue[$eventId];
if(!empty($eventName)) { if (!empty($eventName))
{
$eventName = trim($eventName); $eventName = trim($eventName);
} else { } else {
$error = true; $error++;
} }
if(!empty($eventValue)) { if (!empty($eventValue))
{
$eventValue = price2num($eventValue,2); $eventValue = price2num($eventValue,2);
} else { } else {
$error = true; $error++;
} }
if (!$error) if (!$error)

View File

@ -91,21 +91,24 @@ if ($action == 'update' && isset($_POST['update_cp']))
} }
elseif($action == 'add_event') elseif($action == 'add_event')
{ {
$error = false; $error = 0;
if(!empty($_POST['list_event']) && $_POST['list_event'] > 0) { if(!empty($_POST['list_event']) && $_POST['list_event'] > 0) {
$event = $_POST['list_event']; $event = $_POST['list_event'];
} else { $error = true; } else { $error++;
} }
if(!empty($_POST['userCP']) && $_POST['userCP'] > 0) { if(!empty($_POST['userCP']) && $_POST['userCP'] > 0) {
$userCP = $_POST['userCP']; $userCP = $_POST['userCP'];
} else { $error = true; } else { $erro++;
} }
if($error) { if ($error)
{
$message = '<div class="error">'.$langs->trans('ErrorAddEventToUserCP').'</div>'; $message = '<div class="error">'.$langs->trans('ErrorAddEventToUserCP').'</div>';
} else { }
else
{
$nb_holiday = $holiday->getCPforUser($userCP); $nb_holiday = $holiday->getCPforUser($userCP);
$add_holiday = $holiday->getValueEventCp($event); $add_holiday = $holiday->getValueEventCp($event);
$new_holiday = $nb_holiday + $add_holiday; $new_holiday = $nb_holiday + $add_holiday;

View File

@ -443,7 +443,8 @@ else
$choice .= '<td class="listofchoices">'; $choice .= '<td class="listofchoices">';
$choice .= $langs->trans("UpgradeDesc"); $choice .= $langs->trans("UpgradeDesc");
if ($recommended_choice) { if ($recommended_choice)
{
$choice .= '<br>'; $choice .= '<br>';
//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE); //print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
$choice .= '<center><div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div>'; $choice .= '<center><div class="ok">'.$langs->trans("InstallChoiceSuggested").'</div>';
@ -475,6 +476,13 @@ else
} }
} }
// If there is no choice at all, we show all of them.
if (empty($available_choices))
{
$available_choices=$notavailable_choices;
$notavailable_choices=array();
}
// Array of install choices // Array of install choices
print '<table width="100%" class="listofchoices">'; print '<table width="100%" class="listofchoices">';
foreach ($available_choices as $choice) { foreach ($available_choices as $choice) {

View File

@ -12,7 +12,9 @@
-- To restrict request to Mysql version x.y use -- VMYSQLx.y -- To restrict request to Mysql version x.y use -- VMYSQLx.y
-- To restrict request to Pgsql version x.y use -- VPGSQLx.y -- To restrict request to Pgsql version x.y use -- VPGSQLx.y
-- To make pk to be auto increment (mysql): VMYSQL4.3 ALTER TABLE llx_c_shipment_mode CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT; -- To make pk to be auto increment (mysql): VMYSQL4.3 ALTER TABLE llx_c_shipment_mode CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT;
-- To make pk to be auto increment (postgres) VPGSQL8.2 NOT POSSIBLE. MUST DELETE/CREATE TABLE -- To make pk to be auto increment (postgres): VPGSQL8.2 NOT POSSIBLE. MUST DELETE/CREATE TABLE
-- To remove a not null status (mysql): VMYSQL4.3 ALTER TABLE llx_table MODIFY COLUMN colname integer NULL;
-- To remove a not null status (postgres): VPGSQL8.2 ALTER TABLE llx_table ALTER colname DROP NOT NULL;
-- -- VPGSQL8.2 DELETE FROM llx_usergroup_user WHERE fk_user NOT IN (SELECT rowid from llx_user); -- -- VPGSQL8.2 DELETE FROM llx_usergroup_user WHERE fk_user NOT IN (SELECT rowid from llx_user);
-- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup);
@ -323,6 +325,8 @@ ALTER TABLE llx_facture_fourn ADD fk_mode_reglement integer NULL AFTER fk_cond_r
ALTER TABLE llx_facture_fourn MODIFY COLUMN fk_mode_reglement integer NULL; ALTER TABLE llx_facture_fourn MODIFY COLUMN fk_mode_reglement integer NULL;
ALTER TABLE llx_facture_fourn MODIFY COLUMN fk_cond_reglement integer NULL; ALTER TABLE llx_facture_fourn MODIFY COLUMN fk_cond_reglement integer NULL;
-- VPGSQL8.2 ALTER TABLE llx_facture_fourn ALTER fk_mode_reglement DROP NOT NULL;
-- VPGSQL8.2 ALTER TABLE llx_facture_fourn ALTER fk_cond_reglement DROP NOT NULL;
INSERT INTO llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (9,'COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1); INSERT INTO llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (9,'COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1);

View File

@ -1198,4 +1198,6 @@ create table llx_c_type_resource
ALTER TABLE llx_c_type_resource ADD UNIQUE INDEX uk_c_type_resource_id (label, code); ALTER TABLE llx_c_type_resource ADD UNIQUE INDEX uk_c_type_resource_id (label, code);
ALTER TABLE llx_mailing_cibles ADD INDEX idx_mailing_cibles_fk_mailing_email (fk_mailing,email); -- Fix: Missing instruction not correctly done into 3.5
-- VPGSQL8.2 ALTER TABLE llx_facture_fourn ALTER fk_mode_reglement DROP NOT NULL;
-- VPGSQL8.2 ALTER TABLE llx_facture_fourn ALTER fk_cond_reglement DROP NOT NULL;

View File

@ -25,7 +25,7 @@ create table llx_commande
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_ext varchar(255), -- reference into an external system (not used by dolibarr) ref_ext varchar(255), -- reference into an external system (not used by dolibarr)
ref_int varchar(255), -- reference into an internal system (used by dolibarr) ref_int varchar(255), -- reference into an internal system (deprecated)
ref_client varchar(255), -- reference for customer ref_client varchar(255), -- reference for customer
fk_soc integer NOT NULL, fk_soc integer NOT NULL,

View File

@ -28,7 +28,7 @@ create table llx_expedition
fk_soc integer NOT NULL, fk_soc integer NOT NULL,
ref_ext varchar(30), -- reference into an external system (not used by dolibarr) ref_ext varchar(30), -- reference into an external system (not used by dolibarr)
ref_int varchar(30), -- reference into an internal system (used by dolibarr) ref_int varchar(30), -- reference into an internal system (used by dolibarr to store extern id like paypal info)
ref_customer varchar(30), -- customer number ref_customer varchar(30), -- customer number
date_creation datetime, -- date de creation date_creation datetime, -- date de creation

View File

@ -28,7 +28,7 @@ create table llx_facture
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_ext varchar(255), -- reference into an external system (not used by dolibarr) ref_ext varchar(255), -- reference into an external system (not used by dolibarr)
ref_int varchar(255), -- reference into an internal system (used by dolibarr) ref_int varchar(255), -- reference into an internal system (used by dolibarr to store extern id like paypal info)
ref_client varchar(255), -- reference for customer ref_client varchar(255), -- reference for customer
type smallint DEFAULT 0 NOT NULL, -- type of invoice type smallint DEFAULT 0 NOT NULL, -- type of invoice

View File

@ -26,7 +26,7 @@ create table llx_livraison
fk_soc integer NOT NULL, fk_soc integer NOT NULL,
ref_ext varchar(30), -- reference into an external system (not used by dolibarr) ref_ext varchar(30), -- reference into an external system (not used by dolibarr)
ref_int varchar(30), -- reference into an internal system (used by dolibarr) ref_int varchar(30), -- reference into an internal system (used by dolibarr to store extern id like paypal info)
ref_customer varchar(30), -- customer number ref_customer varchar(30), -- customer number
date_creation datetime, -- date de creation date_creation datetime, -- date de creation

View File

@ -26,7 +26,7 @@ create table llx_propal
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_ext varchar(255), -- reference into an external system (not used by dolibarr) ref_ext varchar(255), -- reference into an external system (not used by dolibarr)
ref_int varchar(255), -- reference into an internal system (used by dolibarr) ref_int varchar(255), -- reference into an internal system (used by dolibarr to store extern id like paypal info)
ref_client varchar(255), -- customer proposal number ref_client varchar(255), -- customer proposal number
fk_soc integer, fk_soc integer,

View File

@ -1,6 +1,6 @@
-- ======================================================================== -- ========================================================================
-- Copyright (C) 2000-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> -- Copyright (C) 2000-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> -- Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com> -- Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
-- Copyright (C) 2010 Juanjo Menent <dolibarr@2byte.es> -- Copyright (C) 2010 Juanjo Menent <dolibarr@2byte.es>
-- --
@ -26,7 +26,7 @@ create table llx_societe
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_ext varchar(128), -- reference into an external system (not used by dolibarr) ref_ext varchar(128), -- reference into an external system (not used by dolibarr)
ref_int varchar(60), -- reference into an internal system (used by dolibarr) ref_int varchar(60), -- reference into an internal system (deprecated)
statut tinyint DEFAULT 0, -- statut statut tinyint DEFAULT 0, -- statut
parent integer, parent integer,

View File

@ -24,7 +24,7 @@ create table llx_user
entity integer DEFAULT 1 NOT NULL, -- multi company id entity integer DEFAULT 1 NOT NULL, -- multi company id
ref_ext varchar(50), -- reference into an external system (not used by dolibarr) ref_ext varchar(50), -- reference into an external system (not used by dolibarr)
ref_int varchar(50), -- reference into an internal system (used by dolibarr) ref_int varchar(50), -- reference into an internal system (deprecated)
datec datetime, datec datetime,
tms timestamp, tms timestamp,

View File

@ -116,7 +116,7 @@ LanguageBrowserParameter=الوحدة %s
LocalisationDolibarrParameters=الوحدات المحلية LocalisationDolibarrParameters=الوحدات المحلية
ClientTZ=Client Time Zone (user) ClientTZ=Client Time Zone (user)
ClientHour=Client time (user) ClientHour=Client time (user)
OSTZ=المنطقة الزمنية لنظام تشغيل الخادم OSTZ=Server OS Time Zone
PHPTZ=المنطقة الزمنية خادم PHP PHPTZ=المنطقة الزمنية خادم PHP
PHPServerOffsetWithGreenwich=عرض وزنية جرينتش لخادم لغة الـ PHP (ثانية) PHPServerOffsetWithGreenwich=عرض وزنية جرينتش لخادم لغة الـ PHP (ثانية)
ClientOffsetWithGreenwich=عرض وزنية الجرينتش للعميل / المتصفح (ثانية) ClientOffsetWithGreenwich=عرض وزنية الجرينتش للعميل / المتصفح (ثانية)
@ -233,7 +233,9 @@ OfficialWebSiteFr=الفرنسية الموقع الرسمي
OfficialWiki=Dolibarr يكي OfficialWiki=Dolibarr يكي
OfficialDemo=Dolibarr الانترنت التجريبي OfficialDemo=Dolibarr الانترنت التجريبي
OfficialMarketPlace=المسؤول عن وحدات السوق الخارجية / أدونس OfficialMarketPlace=المسؤول عن وحدات السوق الخارجية / أدونس
OfficialWebHostingService=Official web hosting services (Cloud hosting) OfficialWebHostingService=Referenced web hosting services (Cloud hosting)
ReferencedPreferredPartners=Preferred Partners
OtherResources=Autres ressources
ForDocumentationSeeWiki=For user's or developer's documentation (Doc, FAQs...),<br>take a look at the Dolibarr Wiki:<br><b><a href="%s" target=للمستخدم أو للتطوير وثائق (مستدات ،...)، أسئلة وأجوبة <br> إلقاء نظرة على ويكي Dolibarr : <br> <a href="%s" target="_blank"><b>ق ٪</b></a> ForDocumentationSeeWiki=For user's or developer's documentation (Doc, FAQs...),<br>take a look at the Dolibarr Wiki:<br><b><a href="%s" target=للمستخدم أو للتطوير وثائق (مستدات ،...)، أسئلة وأجوبة <br> إلقاء نظرة على ويكي Dolibarr : <br> <a href="%s" target="_blank"><b>ق ٪</b></a>
ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:<br><b><a href="%s" target=عن أي أسئلة أخرى / مساعدة ، يمكنك استخدام Dolibarr المنتدى : <br> <a href="%s" target="_blank"><b>ق ٪</b></a> ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:<br><b><a href="%s" target=عن أي أسئلة أخرى / مساعدة ، يمكنك استخدام Dolibarr المنتدى : <br> <a href="%s" target="_blank"><b>ق ٪</b></a>
HelpCenterDesc1=هذا المجال يمكن أن تساعدك في الحصول على مساعدة لتقديم خدمات الدعم على Dolibarr. HelpCenterDesc1=هذا المجال يمكن أن تساعدك في الحصول على مساعدة لتقديم خدمات الدعم على Dolibarr.
@ -369,9 +371,9 @@ ExtrafieldSelectList = Select from table
ExtrafieldSeparator=Separator ExtrafieldSeparator=Separator
ExtrafieldCheckBox=Checkbox ExtrafieldCheckBox=Checkbox
ExtrafieldRadio=Radio button ExtrafieldRadio=Radio button
ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
LibraryToBuildPDF=Library used to build PDF LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
@ -472,7 +474,7 @@ Module410Desc=Webcalendar التكامل
Module500Name=Special expenses (tax, social contributions, dividends) Module500Name=Special expenses (tax, social contributions, dividends)
Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries
Module510Name=Salaries Module510Name=Salaries
Module510Desc=Management of empoyees salaries and payments Module510Desc=Management of employees salaries and payments
Module600Name=الإخطارات Module600Name=الإخطارات
Module600Desc=إرسال الإشعارات عن طريق البريد الإلكتروني على بعض الفعاليات التجارية Dolibarr لطرف ثالث اتصالات Module600Desc=إرسال الإشعارات عن طريق البريد الإلكتروني على بعض الفعاليات التجارية Dolibarr لطرف ثالث اتصالات
Module700Name=التبرعات Module700Name=التبرعات
@ -681,6 +683,10 @@ Permission401=قراءة خصومات
Permission402=إنشاء / تعديل الخصومات Permission402=إنشاء / تعديل الخصومات
Permission403=تحقق من الخصومات Permission403=تحقق من الخصومات
Permission404=حذف خصومات Permission404=حذف خصومات
Permission510=Read Salaries
Permission512=Create/modify salaries
Permission514=Delete salaries
Permission517=Export salaries
Permission531=قراءة الخدمات Permission531=قراءة الخدمات
Permission532=إنشاء / تعديل الخدمات Permission532=إنشاء / تعديل الخدمات
Permission534=حذف خدمات Permission534=حذف خدمات
@ -999,7 +1005,7 @@ ExtraFieldsSupplierOrders=Complementary attributes (orders)
ExtraFieldsSupplierInvoices=Complementary attributes (invoices) ExtraFieldsSupplierInvoices=Complementary attributes (invoices)
ExtraFieldsProject=Complementary attributes (projects) ExtraFieldsProject=Complementary attributes (projects)
ExtraFieldsProjectTask=Complementary attributes (tasks) ExtraFieldsProjectTask=Complementary attributes (tasks)
ExtraFieldHasWrongValue=قيمة الخاصية %s له قيمة خاطئة. ExtraFieldHasWrongValue=Attribute %s has a wrong value.
AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space
AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space
SendingMailSetup=الإعداد من sendings عن طريق البريد الإلكتروني SendingMailSetup=الإعداد من sendings عن طريق البريد الإلكتروني
@ -1018,13 +1024,13 @@ SuhosinSessionEncrypt=Session storage encrypted by Suhosin
ConditionIsCurrently=Condition is currently %s ConditionIsCurrently=Condition is currently %s
TestNotPossibleWithCurrentBrowsers=Automatic detection not possible TestNotPossibleWithCurrentBrowsers=Automatic detection not possible
YouUseBestDriver=You use driver %s that is best driver available currently. YouUseBestDriver=You use driver %s that is best driver available currently.
YouDoNotUseBestDriver=You use drive %s but driver %s is recommanded. YouDoNotUseBestDriver=You use drive %s but driver %s is recommended.
NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization.
SearchOptim=Search optimization SearchOptim=Search optimization
YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response.
BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance.
BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari.
XDebugInstalled=XDebug est chargé. XDebugInstalled=XDebug is loaded.
XCacheInstalled=XCache is loaded. XCacheInstalled=XCache is loaded.
AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink
FieldEdition=Edition of field %s FieldEdition=Edition of field %s
@ -1073,7 +1079,7 @@ WebCalServer=خدمة استضافة قاعدة بيانات التقويم
WebCalDatabaseName=اسم قاعدة البيانات WebCalDatabaseName=اسم قاعدة البيانات
WebCalUser=المستخدم من الوصول إلى قاعدة البيانات WebCalUser=المستخدم من الوصول إلى قاعدة البيانات
WebCalSetupSaved=أنقذ Webcalendar الإعداد بنجاح. WebCalSetupSaved=أنقذ Webcalendar الإعداد بنجاح.
WebCalTestOk=علاقة الخادم '٪ ق' على قاعدة البيانات '٪ ق' مستخدم '٪ ق' ناجحة. WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful.
WebCalTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها. WebCalTestKo1=علاقة الخادم '٪ ق' تنجح ولكن قاعدة البيانات '٪ ق' لا يمكن التوصل إليها.
WebCalTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت. WebCalTestKo2=علاقة الخادم '٪ ق' مستخدم '٪ ق' فشلت.
WebCalErrorConnectOkButWrongDatabase=نجح الصدد ولكن قاعدة البيانات لا يبدو أن Webcalendar في قاعدة البيانات. WebCalErrorConnectOkButWrongDatabase=نجح الصدد ولكن قاعدة البيانات لا يبدو أن Webcalendar في قاعدة البيانات.
@ -1119,7 +1125,7 @@ WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty)
OrdersSetup=أوامر إدارة الإعداد OrdersSetup=أوامر إدارة الإعداد
OrdersNumberingModules=أوامر الترقيم نمائط OrdersNumberingModules=أوامر الترقيم نمائط
OrdersModelModule=وثائق من أجل النماذج OrdersModelModule=وثائق من أجل النماذج
HideTreadedOrders=إخفاء أو معاملة الغاء الاوامر في قائمة HideTreadedOrders=Hide the treated or cancelled orders in the list
ValidOrderAfterPropalClosed=للمصادقة على النظام بعد اقتراح أوثق ، لا يجعل من الممكن للخطوة من جانب النظام المؤقت ValidOrderAfterPropalClosed=للمصادقة على النظام بعد اقتراح أوثق ، لا يجعل من الممكن للخطوة من جانب النظام المؤقت
FreeLegalTextOnOrders=بناء على أوامر النص الحر FreeLegalTextOnOrders=بناء على أوامر النص الحر
WatermarkOnDraftOrders=Watermark on draft orders (none if empty) WatermarkOnDraftOrders=Watermark on draft orders (none if empty)
@ -1214,9 +1220,9 @@ LDAPSynchroKO=فشل تزامن الاختبار
LDAPSynchroKOMayBePermissions=تزامن فشل الاختبار. تأكد من أن ارتباط لخادم تهيئتها بشكل صحيح ، ويسمح LDAP udpates LDAPSynchroKOMayBePermissions=تزامن فشل الاختبار. تأكد من أن ارتباط لخادم تهيئتها بشكل صحيح ، ويسمح LDAP udpates
LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=ربط برنامج التعاون الفني لخادم LDAP ناجحة (٪ ق= خادم بورت= ٪) LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=ربط برنامج التعاون الفني لخادم LDAP ناجحة (٪ ق= خادم بورت= ٪)
LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=ربط برنامج التعاون الفني لخادم LDAP فشل (خادم ق= ٪ بورت= ٪) LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=ربط برنامج التعاون الفني لخادم LDAP فشل (خادم ق= ٪ بورت= ٪)
LDAPBindOK=Connect/Authentificate to LDAP server sucessfull (Server=%s, Port=%s, Admin=%s, Password=ربط / Authentificate ناجحة لخادم LDAP (خادم ق= ٪ بورت= ٪ ق ، ق= ٪ الادارية ، كلمة المرور= ٪) LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=ربط / Authentificate لخادم LDAP فشل (خادم ق= ٪ بورت= ٪ ق ، ق= ٪ الادارية ، كلمة المرور= ٪) LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=ربط / Authentificate لخادم LDAP فشل (خادم ق= ٪ بورت= ٪ ق ، ق= ٪ الادارية ، كلمة المرور= ٪)
LDAPUnbindSuccessfull=فصل ناجحة LDAPUnbindSuccessfull=Disconnect successful
LDAPUnbindFailed=قطع فشل LDAPUnbindFailed=قطع فشل
LDAPConnectToDNSuccessfull=الاتحاد الافريقي بصدد DN (٪) ري ¿½ ussie LDAPConnectToDNSuccessfull=الاتحاد الافريقي بصدد DN (٪) ري ¿½ ussie
LDAPConnectToDNFailed=الاتحاد الافريقي بصدد DN (٪) ¿½ ï ¿½ ه chouï LDAPConnectToDNFailed=الاتحاد الافريقي بصدد DN (٪) ¿½ ï ¿½ ه chouï
@ -1273,7 +1279,7 @@ LDAPFieldSidExample=مثال ذلك : objectsid
LDAPFieldEndLastSubscription=تاريخ انتهاء الاكتتاب LDAPFieldEndLastSubscription=تاريخ انتهاء الاكتتاب
LDAPFieldTitle=وظيفة / وظيفة LDAPFieldTitle=وظيفة / وظيفة
LDAPFieldTitleExample=Example: title LDAPFieldTitleExample=Example: title
LDAPParametersAreStillHardCoded=LDAP المعايير ما زالت hardcoded (الطبقة اتصال) LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class)
LDAPSetupNotComplete=LDAP الإعداد غير كاملة (على آخرين علامات التبويب) LDAPSetupNotComplete=LDAP الإعداد غير كاملة (على آخرين علامات التبويب)
LDAPNoUserOrPasswordProvidedAccessIsReadOnly=أي مدير أو كلمة السر. LDAP الوصول مجهولة وسيكون في قراءة فقط. LDAPNoUserOrPasswordProvidedAccessIsReadOnly=أي مدير أو كلمة السر. LDAP الوصول مجهولة وسيكون في قراءة فقط.
LDAPDescContact=تسمح لك هذه الصفحة لتحديد اسم LDAP الصفات LDAP شجرة في كل البيانات التي وجدت على Dolibarr الاتصالات. LDAPDescContact=تسمح لك هذه الصفحة لتحديد اسم LDAP الصفات LDAP شجرة في كل البيانات التي وجدت على Dolibarr الاتصالات.
@ -1429,7 +1435,7 @@ OptionVATDefault=القياسية
OptionVATDebitOption=الخيار خدمات الخصم OptionVATDebitOption=الخيار خدمات الخصم
OptionVatDefaultDesc=ومن المقرر ان ضريبة القيمة المضافة : <br> -- التسليم / الدفع للسلع <br> -- على دفع تكاليف الخدمات OptionVatDefaultDesc=ومن المقرر ان ضريبة القيمة المضافة : <br> -- التسليم / الدفع للسلع <br> -- على دفع تكاليف الخدمات
OptionVatDebitOptionDesc=ومن المقرر ان ضريبة القيمة المضافة : <br> -- التسليم / الدفع للسلع <br> -- على الفاتورة (الخصم) للخدمات OptionVatDebitOptionDesc=ومن المقرر ان ضريبة القيمة المضافة : <br> -- التسليم / الدفع للسلع <br> -- على الفاتورة (الخصم) للخدمات
SummaryOfVatExigibilityUsedByDefault=زمن افتراضي exigibility ضريبة القيمة المضافة وفقا لخيار choosed : SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option:
OnDelivery=التسليم OnDelivery=التسليم
OnPayment=عن الدفع OnPayment=عن الدفع
OnInvoice=على فاتورة OnInvoice=على فاتورة
@ -1446,7 +1452,7 @@ AccountancyCodeBuy=Purchase account. code
AgendaSetup=جدول الأعمال وحدة الإعداد AgendaSetup=جدول الأعمال وحدة الإعداد
PasswordTogetVCalExport=مفتاح ربط تصدير تأذن PasswordTogetVCalExport=مفتاح ربط تصدير تأذن
PastDelayVCalExport=لا تصدر الحدث الأكبر من PastDelayVCalExport=لا تصدر الحدث الأكبر من
AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionnary -> Type of agenda events) AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events)
##### ClickToDial ##### ##### ClickToDial #####
ClickToDialDesc=هذا النموذج يسمح لإضافة رمز بعد رقم هاتف Dolibarr الاتصالات. وهناك اضغط على هذه الأيقونة ، سوف يطلب من أحد serveur معينة مع تحديد عنوان لكم أدناه. ويمكن استخدام هذه الكلمة لدعوة من مركز نظام Dolibarr التي يمكن الاتصال على رقم الهاتف هذا المسبار النظام على سبيل المثال. ClickToDialDesc=هذا النموذج يسمح لإضافة رمز بعد رقم هاتف Dolibarr الاتصالات. وهناك اضغط على هذه الأيقونة ، سوف يطلب من أحد serveur معينة مع تحديد عنوان لكم أدناه. ويمكن استخدام هذه الكلمة لدعوة من مركز نظام Dolibarr التي يمكن الاتصال على رقم الهاتف هذا المسبار النظام على سبيل المثال.
##### Point Of Sales (CashDesk) ##### ##### Point Of Sales (CashDesk) #####

View File

@ -89,6 +89,8 @@ ListOfServicesToExpireWithDuration=List of Services to expire in %s days
ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days
ListOfServicesToExpire=List of Services to expire ListOfServicesToExpire=List of Services to expire
NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative. NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative.
StandardContractsTemplate=Standard contracts template
ContactNameAndSignature=For %s, name and signature:
##### Types de contacts ##### ##### Types de contacts #####
TypeContact_contrat_internal_SALESREPSIGN=ممثل مبيعات توقيع العقد TypeContact_contrat_internal_SALESREPSIGN=ممثل مبيعات توقيع العقد

View File

@ -8,7 +8,7 @@ ImportableDatas=بيانات وارداتها
SelectExportDataSet=اختر البيانات التي تريد تصديرها... SelectExportDataSet=اختر البيانات التي تريد تصديرها...
SelectImportDataSet=اختر البيانات التي تريد الاستيراد... SelectImportDataSet=اختر البيانات التي تريد الاستيراد...
SelectExportFields=اختيار الحقول التي تريد تصديرها ، أو اختيار ملف التصدير مسبقا SelectExportFields=اختيار الحقول التي تريد تصديرها ، أو اختيار ملف التصدير مسبقا
SelectImportFields=اختيار الحقول التي تريد استيراد ، أو حدد ملف استيراد محددة سلفا ، SelectImportFields=Choose source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile:
NotImportedFields=حقول من الملف المصدر يتم استيراد NotImportedFields=حقول من الملف المصدر يتم استيراد
SaveExportModel=احفظ هذا التصدير صورة لو كنت تخطط لإعادة استخدامها في وقت لاحق... SaveExportModel=احفظ هذا التصدير صورة لو كنت تخطط لإعادة استخدامها في وقت لاحق...
SaveImportModel=إنقاذ هذه استيراد صورة لو كنت تخطط لإعادة استخدامها في وقت لاحق... SaveImportModel=إنقاذ هذه استيراد صورة لو كنت تخطط لإعادة استخدامها في وقت لاحق...
@ -81,7 +81,7 @@ DoNotImportFirstLine=لا استيراد السطر الأول من الملف
NbOfSourceLines=عدد الأسطر في الملف المصدر NbOfSourceLines=عدد الأسطر في الملف المصدر
NowClickToTestTheImport=الاختيار المعلمات استيراد عرفتها. وإذا كانت صحيحة ، انقر على <b>%s</b> "زر" لإطلاق محاكاة لعملية الاستيراد (يمكن تغيير أية بيانات في قاعدة البيانات وسوف ، انها مجرد محاكاة لحظة)... NowClickToTestTheImport=الاختيار المعلمات استيراد عرفتها. وإذا كانت صحيحة ، انقر على <b>%s</b> "زر" لإطلاق محاكاة لعملية الاستيراد (يمكن تغيير أية بيانات في قاعدة البيانات وسوف ، انها مجرد محاكاة لحظة)...
RunSimulateImportFile=بدء استيراد محاكاة RunSimulateImportFile=بدء استيراد محاكاة
FieldNeedSource=هذا يشعر في قاعدة البيانات تتطلب البيانات من الملف المصدر FieldNeedSource=This field requires data from the source file
SomeMandatoryFieldHaveNoSource=بعض الحقول إلزامية ليس لديها مصدر من ملف البيانات SomeMandatoryFieldHaveNoSource=بعض الحقول إلزامية ليس لديها مصدر من ملف البيانات
InformationOnSourceFile=معلومات عن الملف المصدر InformationOnSourceFile=معلومات عن الملف المصدر
InformationOnTargetTables=معلومات عن الهدف الحقول InformationOnTargetTables=معلومات عن الهدف الحقول

View File

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

View File

@ -19,6 +19,7 @@ Language_en_SA=English (Saudi Arabia)
Language_en_US=الإنكليزية (الولايات المتحدة) Language_en_US=الإنكليزية (الولايات المتحدة)
Language_en_ZA=English (South Africa) Language_en_ZA=English (South Africa)
Language_es_ES=الأسبانية Language_es_ES=الأسبانية
Language_es_DO=Spanish (Dominican Republic)
Language_es_AR=الأسبانية (الأرجنتين) Language_es_AR=الأسبانية (الأرجنتين)
Language_es_CL=Spanish (Chile) Language_es_CL=Spanish (Chile)
Language_es_HN=الأسبانية (هندوراس) Language_es_HN=الأسبانية (هندوراس)
@ -38,6 +39,7 @@ Language_fr_NC=French (New Caledonia)
Language_he_IL=Hebrew Language_he_IL=Hebrew
Language_hr_HR=Croatian Language_hr_HR=Croatian
Language_hu_HU=المجري Language_hu_HU=المجري
Language_id_ID=Indonesian
Language_is_IS=الآيسلندي Language_is_IS=الآيسلندي
Language_it_IT=الإيطالي Language_it_IT=الإيطالي
Language_ja_JP=اليابانية Language_ja_JP=اليابانية

View File

@ -79,6 +79,7 @@ MailtoEMail=Hyper link to email
ActivateCheckRead=Allow to use the "Unsubcribe" link ActivateCheckRead=Allow to use the "Unsubcribe" link
ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature
EMailSentToNRecipients=EMail sent to %s recipients. EMailSentToNRecipients=EMail sent to %s recipients.
XTargetsAdded=<b>%s</b> recipients added into target list
EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email.
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
SendRemind=Send reminder by EMails SendRemind=Send reminder by EMails

View File

@ -551,6 +551,7 @@ MailSentBy=البريد الإلكتروني التي بعث بها
TextUsedInTheMessageBody=هيئة البريد الإلكتروني TextUsedInTheMessageBody=هيئة البريد الإلكتروني
SendAcknowledgementByMail=ارسال Ack. عن طريق البريد الإلكتروني SendAcknowledgementByMail=ارسال Ack. عن طريق البريد الإلكتروني
NoEMail=أي بريد إلكتروني NoEMail=أي بريد إلكتروني
NoMobilePhone=No mobile phone
Owner=مالك Owner=مالك
DetectedVersion=اكتشاف نسخة DetectedVersion=اكتشاف نسخة
FollowingConstantsWillBeSubstituted=الثوابت التالية ستكون بديلا المقابلة القيمة. FollowingConstantsWillBeSubstituted=الثوابت التالية ستكون بديلا المقابلة القيمة.

View File

@ -28,8 +28,10 @@ ProductsAndServicesStatistics=المنتجات والخدمات والإحصاء
ProductsStatistics=المنتجات إحصاءات ProductsStatistics=المنتجات إحصاءات
ProductsOnSell=بيع المنتجات ProductsOnSell=بيع المنتجات
ProductsNotOnSell=من بيع المنتجات ProductsNotOnSell=من بيع المنتجات
ProductsOnSellAndOnBuy=Products not for sale nor purchase
ServicesOnSell=خدمات البيع ServicesOnSell=خدمات البيع
ServicesNotOnSell=من بيع الخدمات ServicesNotOnSell=من بيع الخدمات
ServicesOnSellAndOnBuy=Services not for sale nor purchase
InternalRef=إشارة الداخلية InternalRef=إشارة الداخلية
LastRecorded=آخر المنتجات والخدمات المسجلة على بيع LastRecorded=آخر المنتجات والخدمات المسجلة على بيع
LastRecordedProductsAndServices=٪ ق الماضي سجلت المنتجات / الخدمات LastRecordedProductsAndServices=٪ ق الماضي سجلت المنتجات / الخدمات
@ -70,6 +72,8 @@ PublicPrice=السعر العام
CurrentPrice=السعر الحالي CurrentPrice=السعر الحالي
NewPrice=السعر الجديد NewPrice=السعر الجديد
MinPrice=القطرة. سعر البيع MinPrice=القطرة. سعر البيع
MinPriceHT=Minim. selling price (net of tax)
MinPriceTTC=Minim. selling price (inc. tax)
CantBeLessThanMinPrice=سعر البيع لا يمكن أن يكون أقل من الحد الأدنى المسموح لهذا المنتج (٪ ق بدون الضرائب) CantBeLessThanMinPrice=سعر البيع لا يمكن أن يكون أقل من الحد الأدنى المسموح لهذا المنتج (٪ ق بدون الضرائب)
ContractStatus=عقد مركز ContractStatus=عقد مركز
ContractStatusClosed=مغلقة ContractStatusClosed=مغلقة
@ -179,6 +183,7 @@ ProductIsUsed=ويستخدم هذا المنتج
NewRefForClone=المرجع. من المنتجات الجديدة / خدمة NewRefForClone=المرجع. من المنتجات الجديدة / خدمة
CustomerPrices=أسعار العملاء CustomerPrices=أسعار العملاء
SuppliersPrices=أسعار الموردين SuppliersPrices=أسعار الموردين
SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services)
CustomCode=قانون الجمارك CustomCode=قانون الجمارك
CountryOrigin=بلد المنشأ CountryOrigin=بلد المنشأ
HiddenIntoCombo=مخبأة في قوائم مختارة HiddenIntoCombo=مخبأة في قوائم مختارة
@ -208,6 +213,7 @@ CostPmpHT=Net total VWAP
ProductUsedForBuild=Auto consumed by production ProductUsedForBuild=Auto consumed by production
ProductBuilded=Production completed ProductBuilded=Production completed
ProductsMultiPrice=Product multi-price ProductsMultiPrice=Product multi-price
ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices)
ProductSellByQuarterHT=Products turnover quarterly VWAP ProductSellByQuarterHT=Products turnover quarterly VWAP
ServiceSellByQuarterHT=Services turnover quarterly VWAP ServiceSellByQuarterHT=Services turnover quarterly VWAP
Quarter1=1st. Quarter Quarter1=1st. Quarter

View File

@ -112,6 +112,7 @@ ReplenishmentOrdersDesc=This is list of all opened supplier orders
Replenishments=Replenishments Replenishments=Replenishments
NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s)
NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s)
MassMovement=Mass movement
MassStockMovement=Mass stock movement MassStockMovement=Mass stock movement
SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s". SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s".
RecordMovement=Record transfert RecordMovement=Record transfert

View File

@ -116,7 +116,7 @@ LanguageBrowserParameter=Параметър %s
LocalisationDolibarrParameters=Локализация параметри LocalisationDolibarrParameters=Локализация параметри
ClientTZ=Client Time Zone (user) ClientTZ=Client Time Zone (user)
ClientHour=Client time (user) ClientHour=Client time (user)
OSTZ=Servre OS Time Zone OSTZ=Server OS Time Zone
PHPTZ=PHP server Time Zone PHPTZ=PHP server Time Zone
PHPServerOffsetWithGreenwich=PHP сървъра компенсира широчина Гринуич (секунди) PHPServerOffsetWithGreenwich=PHP сървъра компенсира широчина Гринуич (секунди)
ClientOffsetWithGreenwich=Клиент / Browser компенсира широчина Гринуич (секунди) ClientOffsetWithGreenwich=Клиент / Browser компенсира широчина Гринуич (секунди)
@ -233,7 +233,9 @@ OfficialWebSiteFr=Френски официален уеб сайт
OfficialWiki=Dolibarr документация на Wiki OfficialWiki=Dolibarr документация на Wiki
OfficialDemo=Dolibarr онлайн демо OfficialDemo=Dolibarr онлайн демо
OfficialMarketPlace=Официален магазин за външни модули/добавки OfficialMarketPlace=Официален магазин за външни модули/добавки
OfficialWebHostingService=Официален уеб хостинг услуга (Cloud хостинг) OfficialWebHostingService=Referenced web hosting services (Cloud hosting)
ReferencedPreferredPartners=Preferred Partners
OtherResources=Autres ressources
ForDocumentationSeeWiki=Документация за потребител или разработчик (Doc, често задавани въпроси ...), <br> можете да намерите в Dolibarr Wiki: <br> <a href="%s" target="_blank"><b>%s</b></a> ForDocumentationSeeWiki=Документация за потребител или разработчик (Doc, често задавани въпроси ...), <br> можете да намерите в Dolibarr Wiki: <br> <a href="%s" target="_blank"><b>%s</b></a>
ForAnswersSeeForum=За всякакви други въпроси / Помощ, можете да използвате форума Dolibarr: <br> <a href="%s" target="_blank"><b>%s</b></a> ForAnswersSeeForum=За всякакви други въпроси / Помощ, можете да използвате форума Dolibarr: <br> <a href="%s" target="_blank"><b>%s</b></a>
HelpCenterDesc1=Тази област може да ви помогне да получите помощ и поддръжка за Dolibarr. HelpCenterDesc1=Тази област може да ви помогне да получите помощ и поддръжка за Dolibarr.
@ -369,9 +371,9 @@ ExtrafieldSelectList = Select from table
ExtrafieldSeparator=Separator ExtrafieldSeparator=Separator
ExtrafieldCheckBox=Checkbox ExtrafieldCheckBox=Checkbox
ExtrafieldRadio=Радио бутон ExtrafieldRadio=Радио бутон
ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
LibraryToBuildPDF=Library used to build PDF LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
@ -472,7 +474,7 @@ Module410Desc=Webcalendar интеграция
Module500Name=Special expenses (tax, social contributions, dividends) Module500Name=Special expenses (tax, social contributions, dividends)
Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries
Module510Name=Salaries Module510Name=Salaries
Module510Desc=Management of empoyees salaries and payments Module510Desc=Management of employees salaries and payments
Module600Name=Известия Module600Name=Известия
Module600Desc=Изпращане известия по имейл за някои бизнес събития в Dolibarr към трети лица Module600Desc=Изпращане известия по имейл за някои бизнес събития в Dolibarr към трети лица
Module700Name=Дарения Module700Name=Дарения
@ -681,6 +683,10 @@ Permission401=Прочети отстъпки
Permission402=Създаване / промяна на отстъпки Permission402=Създаване / промяна на отстъпки
Permission403=Проверка на отстъпки Permission403=Проверка на отстъпки
Permission404=Изтриване на отстъпки Permission404=Изтриване на отстъпки
Permission510=Read Salaries
Permission512=Create/modify salaries
Permission514=Delete salaries
Permission517=Export salaries
Permission531=Прочети услуги Permission531=Прочети услуги
Permission532=Създаване / промяна услуги Permission532=Създаване / промяна услуги
Permission534=Изтриване на услуги Permission534=Изтриване на услуги
@ -999,7 +1005,7 @@ ExtraFieldsSupplierOrders=Complementary attributes (orders)
ExtraFieldsSupplierInvoices=Complementary attributes (invoices) ExtraFieldsSupplierInvoices=Complementary attributes (invoices)
ExtraFieldsProject=Complementary attributes (projects) ExtraFieldsProject=Complementary attributes (projects)
ExtraFieldsProjectTask=Complementary attributes (tasks) ExtraFieldsProjectTask=Complementary attributes (tasks)
ExtraFieldHasWrongValue=Attribut %s има грешна стойност. ExtraFieldHasWrongValue=Attribute %s has a wrong value.
AlphaNumOnlyCharsAndNoSpace=само героите alphanumericals без пространство AlphaNumOnlyCharsAndNoSpace=само героите alphanumericals без пространство
AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space
SendingMailSetup=Настройка на изпращане по имейл SendingMailSetup=Настройка на изпращане по имейл
@ -1018,13 +1024,13 @@ SuhosinSessionEncrypt=Session storage encrypted by Suhosin
ConditionIsCurrently=Condition is currently %s ConditionIsCurrently=Condition is currently %s
TestNotPossibleWithCurrentBrowsers=Automatic detection not possible TestNotPossibleWithCurrentBrowsers=Automatic detection not possible
YouUseBestDriver=You use driver %s that is best driver available currently. YouUseBestDriver=You use driver %s that is best driver available currently.
YouDoNotUseBestDriver=You use drive %s but driver %s is recommanded. YouDoNotUseBestDriver=You use drive %s but driver %s is recommended.
NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization.
SearchOptim=Search optimization SearchOptim=Search optimization
YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response.
BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance.
BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari.
XDebugInstalled=XDebug est chargé. XDebugInstalled=XDebug is loaded.
XCacheInstalled=XCache is loaded. XCacheInstalled=XCache is loaded.
AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink
FieldEdition=Edition of field %s FieldEdition=Edition of field %s
@ -1073,7 +1079,7 @@ WebCalServer=Хостинг сървър календар база данни
WebCalDatabaseName=Име на базата данни WebCalDatabaseName=Име на базата данни
WebCalUser=Потребителя за достъп до базата данни WebCalUser=Потребителя за достъп до базата данни
WebCalSetupSaved=Webcalendar настройка запазена успешно. WebCalSetupSaved=Webcalendar настройка запазена успешно.
WebCalTestOk=Връзка към &quot;%s&quot; сървър на &quot;%s&quot; база данни с успешен потребителски %s. WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful.
WebCalTestKo1=Свързване към сървър &quot;%s успее, но база данни&quot; %s &quot;не може да бъде постигнато. WebCalTestKo1=Свързване към сървър &quot;%s успее, но база данни&quot; %s &quot;не може да бъде постигнато.
WebCalTestKo2=Връзка към сървъра &quot;%s&quot; с потребителя %s &quot;се провали. WebCalTestKo2=Връзка към сървъра &quot;%s&quot; с потребителя %s &quot;се провали.
WebCalErrorConnectOkButWrongDatabase=Връзка успял, но базата данни не изглежда да е база данни Webcalendar. WebCalErrorConnectOkButWrongDatabase=Връзка успял, но базата данни не изглежда да е база данни Webcalendar.
@ -1119,7 +1125,7 @@ WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty)
OrdersSetup=Настройки за управление на поръчки OrdersSetup=Настройки за управление на поръчки
OrdersNumberingModules=Поръчки номериране модули OrdersNumberingModules=Поръчки номериране модули
OrdersModelModule=Поръчка документи модели OrdersModelModule=Поръчка документи модели
HideTreadedOrders=Скриване на третираните или отказани поръчки в списъка HideTreadedOrders=Hide the treated or cancelled orders in the list
ValidOrderAfterPropalClosed=Да се ​​потвърди ред след предложението близо, това прави възможно да не се увеличат с временния ред ValidOrderAfterPropalClosed=Да се ​​потвърди ред след предложението близо, това прави възможно да не се увеличат с временния ред
FreeLegalTextOnOrders=Свободен текст на поръчки FreeLegalTextOnOrders=Свободен текст на поръчки
WatermarkOnDraftOrders=Watermark on draft orders (none if empty) WatermarkOnDraftOrders=Watermark on draft orders (none if empty)
@ -1214,9 +1220,9 @@ LDAPSynchroKO=Неуспешно синхронизиране тест
LDAPSynchroKOMayBePermissions=Неуспешно синхронизиране тест. Уверете се, че свързването със сървъра е конфигуриран правилно и позволява LDAP udpates LDAPSynchroKOMayBePermissions=Неуспешно синхронизиране тест. Уверете се, че свързването със сървъра е конфигуриран правилно и позволява LDAP udpates
LDAPTCPConnectOK=TCP свърже с LDAP сървъра успешни (сървър = %s, Порт = %s) LDAPTCPConnectOK=TCP свърже с LDAP сървъра успешни (сървър = %s, Порт = %s)
LDAPTCPConnectKO=TCP се свърже с LDAP сървъра не успя (Server = %s, Port = %s) LDAPTCPConnectKO=TCP се свърже с LDAP сървъра не успя (Server = %s, Port = %s)
LDAPBindOK=Свързване / Authentificate сървъра sucessfull LDAP (сървър = %s, Port = %s, Admin = %s, парола = %s) LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPBindKO=Свързване / Authentificate LDAP сървъра се провали (сървър = %s, Port = %s, Admin = %s, парола = %s) LDAPBindKO=Свързване / Authentificate LDAP сървъра се провали (сървър = %s, Port = %s, Admin = %s, парола = %s)
LDAPUnbindSuccessfull=Изключете успешно LDAPUnbindSuccessfull=Disconnect successful
LDAPUnbindFailed=Изключете не успя LDAPUnbindFailed=Изключете не успя
LDAPConnectToDNSuccessfull=Връзка о DN (%s) РИ ¿½ ussie LDAPConnectToDNSuccessfull=Връзка о DN (%s) РИ ¿½ ussie
LDAPConnectToDNFailed=Връзка о DN (%s) ï ¿½ chouï ¿½ д LDAPConnectToDNFailed=Връзка о DN (%s) ï ¿½ chouï ¿½ д
@ -1273,7 +1279,7 @@ LDAPFieldSidExample=Пример: objectsid
LDAPFieldEndLastSubscription=Дата на абонамент края LDAPFieldEndLastSubscription=Дата на абонамент края
LDAPFieldTitle=Мнение / Функция LDAPFieldTitle=Мнение / Функция
LDAPFieldTitleExample=Example: title LDAPFieldTitleExample=Example: title
LDAPParametersAreStillHardCoded=LDAP параметри все още кодиран (в контакт клас) LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class)
LDAPSetupNotComplete=LDAP настройка не е пълна (отидете на други раздели) LDAPSetupNotComplete=LDAP настройка не е пълна (отидете на други раздели)
LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Не администратор или парола. LDAP достъп ще бъдат анонимни и в режим само за четене. LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Не администратор или парола. LDAP достъп ще бъдат анонимни и в режим само за четене.
LDAPDescContact=Тази страница ви позволява да дефинирате LDAP атрибути име в LDAP дърво за всеки намерени данни за контактите на Dolibarr. LDAPDescContact=Тази страница ви позволява да дефинирате LDAP атрибути име в LDAP дърво за всеки намерени данни за контактите на Dolibarr.
@ -1429,7 +1435,7 @@ OptionVATDefault=Стандарт
OptionVATDebitOption=Вариант услуги по дебитни OptionVATDebitOption=Вариант услуги по дебитни
OptionVatDefaultDesc=Се дължи ДДС: <br> - При доставка на стоки (ние използваме датата на фактурата) <br> - Плащания за услуги OptionVatDefaultDesc=Се дължи ДДС: <br> - При доставка на стоки (ние използваме датата на фактурата) <br> - Плащания за услуги
OptionVatDebitOptionDesc=Се дължи ДДС: <br> - При доставка на стоки (ние използваме датата на фактурата) <br> - По фактура (дебитно) за услуги OptionVatDebitOptionDesc=Се дължи ДДС: <br> - При доставка на стоки (ние използваме датата на фактурата) <br> - По фактура (дебитно) за услуги
SummaryOfVatExigibilityUsedByDefault=Време на изискуемост на ДДС по подразбиране, според няма избрана опция: SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option:
OnDelivery=При доставка OnDelivery=При доставка
OnPayment=На плащане OnPayment=На плащане
OnInvoice=На фактура OnInvoice=На фактура
@ -1446,7 +1452,7 @@ AccountancyCodeBuy=Purchase account. code
AgendaSetup=Събития и натъкмяване на дневен ред модул AgendaSetup=Събития и натъкмяване на дневен ред модул
PasswordTogetVCalExport=, За да разреши износ връзка PasswordTogetVCalExport=, За да разреши износ връзка
PastDelayVCalExport=Не изнася случай по-стари от PastDelayVCalExport=Не изнася случай по-стари от
AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionnary -> Type of agenda events) AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events)
##### ClickToDial ##### ##### ClickToDial #####
ClickToDialDesc=Този модул позволява да добавите икона след телефонни номера. Кликнете върху тази икона ще призове сървър с определен URL адрес можете да зададете по-долу. Това може да се използва, за да се обадя на кол център система от Dolibarr, че да се обаждат на телефонен номер на SIP система, например. ClickToDialDesc=Този модул позволява да добавите икона след телефонни номера. Кликнете върху тази икона ще призове сървър с определен URL адрес можете да зададете по-долу. Това може да се използва, за да се обадя на кол център система от Dolibarr, че да се обаждат на телефонен номер на SIP система, например.
##### Point Of Sales (CashDesk) ##### ##### Point Of Sales (CashDesk) #####

View File

@ -89,6 +89,8 @@ ListOfServicesToExpireWithDuration=List of Services to expire in %s days
ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days
ListOfServicesToExpire=List of Services to expire ListOfServicesToExpire=List of Services to expire
NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative. NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative.
StandardContractsTemplate=Standard contracts template
ContactNameAndSignature=For %s, name and signature:
##### Types de contacts ##### ##### Types de contacts #####
TypeContact_contrat_internal_SALESREPSIGN=Търговски представител подписване на договора TypeContact_contrat_internal_SALESREPSIGN=Търговски представител подписване на договора

View File

@ -8,7 +8,7 @@ ImportableDatas=Се внасят набор от данни
SelectExportDataSet=Изберете набор от данни, които искате да експортирате ... SelectExportDataSet=Изберете набор от данни, които искате да експортирате ...
SelectImportDataSet=Изберете набор от данни, който искате да импортирате ... SelectImportDataSet=Изберете набор от данни, който искате да импортирате ...
SelectExportFields=Изберете полетата, които искате да експортирате, или да изберете предварително дефинирана Profil износ SelectExportFields=Изберете полетата, които искате да експортирате, или да изберете предварително дефинирана Profil износ
SelectImportFields=Изберете файла източник полета, които искате да импортирате и тяхното поле в базата данни от тях се движат нагоре и надолу с анкерни %s или изберете предварително дефинирана Profil внос: SelectImportFields=Choose source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile:
NotImportedFields=Области на файла източник не са внесени NotImportedFields=Области на файла източник не са внесени
SaveExportModel=Запази този профил за износ, ако смятате да го използвате отново по-късно ... SaveExportModel=Запази този профил за износ, ако смятате да го използвате отново по-късно ...
SaveImportModel=Запази този профил за внос, ако смятате да го използвате отново по-късно ... SaveImportModel=Запази този профил за внос, ако смятате да го използвате отново по-късно ...
@ -81,7 +81,7 @@ DoNotImportFirstLine=Да не се внасят първия ред на изх
NbOfSourceLines=Брой на линиите във файла източник NbOfSourceLines=Брой на линиите във файла източник
NowClickToTestTheImport=Проверете внос параметрите, които сте задали. Ако те са правилни, кликнете върху бутона <b>&quot;%s&quot;,</b> за да започне симулация на процеса на импортиране (няма данни ще се промени във вашата база данни, това е само симулация за момента) ... NowClickToTestTheImport=Проверете внос параметрите, които сте задали. Ако те са правилни, кликнете върху бутона <b>&quot;%s&quot;,</b> за да започне симулация на процеса на импортиране (няма данни ще се промени във вашата база данни, това е само симулация за момента) ...
RunSimulateImportFile=Стартиране на симулация внос RunSimulateImportFile=Стартиране на симулация внос
FieldNeedSource=Това Полета в базата данни изискват данни от файла източник FieldNeedSource=This field requires data from the source file
SomeMandatoryFieldHaveNoSource=Някои от задължителните полета не са източник от файл с данни SomeMandatoryFieldHaveNoSource=Някои от задължителните полета не са източник от файл с данни
InformationOnSourceFile=Информация за файла източник InformationOnSourceFile=Информация за файла източник
InformationOnTargetTables=Информация за целевите области InformationOnTargetTables=Информация за целевите области

View File

@ -8,7 +8,6 @@ NotActiveModCP=Трябва да вкючите модула за отпуски
NotConfigModCP=Необходимо е да конфигурирате модула за отпуски за да видите тази страница. За да направите това, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> щтракнете тук </ a>. NotConfigModCP=Необходимо е да конфигурирате модула за отпуски за да видите тази страница. За да направите това, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> щтракнете тук </ a>.
NoCPforUser=You don't have a demand for holidays. NoCPforUser=You don't have a demand for holidays.
AddCP=Кандидатстване за отпуск AddCP=Кандидатстване за отпуск
CPErrorSQL=Възникна SQL грешка:
Employe=Служител Employe=Служител
DateDebCP=Начална дата DateDebCP=Начална дата
DateFinCP=Крайна дата DateFinCP=Крайна дата

View File

@ -19,6 +19,7 @@ Language_en_SA=English (Саудитска Арабия)
Language_en_US=English (United States) Language_en_US=English (United States)
Language_en_ZA=English (Южна Африка) Language_en_ZA=English (Южна Африка)
Language_es_ES=Испански Language_es_ES=Испански
Language_es_DO=Spanish (Dominican Republic)
Language_es_AR=Испански (Аржентина) Language_es_AR=Испански (Аржентина)
Language_es_CL=Spanish (Chile) Language_es_CL=Spanish (Chile)
Language_es_HN=Испански (Хондурас) Language_es_HN=Испански (Хондурас)
@ -38,6 +39,7 @@ Language_fr_NC=French (Нова Каледония)
Language_he_IL=Иврит Language_he_IL=Иврит
Language_hr_HR=Хърватски Language_hr_HR=Хърватски
Language_hu_HU=Унгарски Language_hu_HU=Унгарски
Language_id_ID=Indonesian
Language_is_IS=Исландски Language_is_IS=Исландски
Language_it_IT=Италиански Language_it_IT=Италиански
Language_ja_JP=Японски Language_ja_JP=Японски

View File

@ -79,6 +79,7 @@ MailtoEMail=Хипер-връзка на приятел
ActivateCheckRead=Оставя се да се използва за четене тракер получаване и връзката unsubcribe ActivateCheckRead=Оставя се да се използва за четене тракер получаване и връзката unsubcribe
ActivateCheckReadKey=Key използване за криптиране на използването на URL адрес за обратна разписка и функция unsubcribe ActivateCheckReadKey=Key използване за криптиране на използването на URL адрес за обратна разписка и функция unsubcribe
EMailSentToNRecipients=EMail sent to %s recipients. EMailSentToNRecipients=EMail sent to %s recipients.
XTargetsAdded=<b>%s</b> recipients added into target list
EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email.
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
SendRemind=Send reminder by EMails SendRemind=Send reminder by EMails

View File

@ -551,6 +551,7 @@ MailSentBy=E-mail, изпратен от
TextUsedInTheMessageBody=Email body TextUsedInTheMessageBody=Email body
SendAcknowledgementByMail=Изпращане на уведомление по имейл SendAcknowledgementByMail=Изпращане на уведомление по имейл
NoEMail=Няма имейл NoEMail=Няма имейл
NoMobilePhone=No mobile phone
Owner=Собственик Owner=Собственик
DetectedVersion=Открита версия DetectedVersion=Открита версия
FollowingConstantsWillBeSubstituted=Следните константи ще бъдат заменени със съответната стойност. FollowingConstantsWillBeSubstituted=Следните константи ще бъдат заменени със съответната стойност.

View File

@ -28,8 +28,10 @@ ProductsAndServicesStatistics=Статистика на Продукти и Ус
ProductsStatistics=Статистика на продукти ProductsStatistics=Статистика на продукти
ProductsOnSell=Налични продукти ProductsOnSell=Налични продукти
ProductsNotOnSell=Стари продукти ProductsNotOnSell=Стари продукти
ProductsOnSellAndOnBuy=Products not for sale nor purchase
ServicesOnSell=Налични услуги ServicesOnSell=Налични услуги
ServicesNotOnSell=Стари услуги ServicesNotOnSell=Стари услуги
ServicesOnSellAndOnBuy=Services not for sale nor purchase
InternalRef=Вътрешна препратка InternalRef=Вътрешна препратка
LastRecorded=Последните записани продукти / услуги по продажба LastRecorded=Последните записани продукти / услуги по продажба
LastRecordedProductsAndServices=Последните %s записани продукти / услуги LastRecordedProductsAndServices=Последните %s записани продукти / услуги
@ -70,6 +72,8 @@ PublicPrice=Публична цена
CurrentPrice=Текуща цена CurrentPrice=Текуща цена
NewPrice=Нова цена NewPrice=Нова цена
MinPrice=Миним. продажна цена MinPrice=Миним. продажна цена
MinPriceHT=Minim. selling price (net of tax)
MinPriceTTC=Minim. selling price (inc. tax)
CantBeLessThanMinPrice=Продажната цена не може да бъде по-ниска от максимално допустимата за този продукт (%s без ДДС). Това съобщение може да се появи, ако въведете твърде важна отстъпка. CantBeLessThanMinPrice=Продажната цена не може да бъде по-ниска от максимално допустимата за този продукт (%s без ДДС). Това съобщение може да се появи, ако въведете твърде важна отстъпка.
ContractStatus=Състояние на договор ContractStatus=Състояние на договор
ContractStatusClosed=Затворен ContractStatusClosed=Затворен
@ -179,6 +183,7 @@ ProductIsUsed=Този продукт е използван
NewRefForClone=Реф. на нов продукт/услуга NewRefForClone=Реф. на нов продукт/услуга
CustomerPrices=Цени за клиенти CustomerPrices=Цени за клиенти
SuppliersPrices=Цени на доставцици SuppliersPrices=Цени на доставцици
SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services)
CustomCode=Customs code CustomCode=Customs code
CountryOrigin=Държава на произход CountryOrigin=Държава на произход
HiddenIntoCombo=Hidden into select lists HiddenIntoCombo=Hidden into select lists
@ -208,6 +213,7 @@ CostPmpHT=Net total VWAP
ProductUsedForBuild=Auto consumed by production ProductUsedForBuild=Auto consumed by production
ProductBuilded=Production completed ProductBuilded=Production completed
ProductsMultiPrice=Product multi-price ProductsMultiPrice=Product multi-price
ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices)
ProductSellByQuarterHT=Products turnover quarterly VWAP ProductSellByQuarterHT=Products turnover quarterly VWAP
ServiceSellByQuarterHT=Services turnover quarterly VWAP ServiceSellByQuarterHT=Services turnover quarterly VWAP
Quarter1=1st. Quarter Quarter1=1st. Quarter

View File

@ -112,6 +112,7 @@ ReplenishmentOrdersDesc=This is list of all opened supplier orders
Replenishments=Попълване Replenishments=Попълване
NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s)
NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s)
MassMovement=Mass movement
MassStockMovement=Mass stock movement MassStockMovement=Mass stock movement
SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s". SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s".
RecordMovement=Record transfert RecordMovement=Record transfert

View File

@ -116,7 +116,7 @@ LanguageBrowserParameter=Parameter %s
LocalisationDolibarrParameters=Localisation parameters LocalisationDolibarrParameters=Localisation parameters
ClientTZ=Client Time Zone (user) ClientTZ=Client Time Zone (user)
ClientHour=Client time (user) ClientHour=Client time (user)
OSTZ=Servre OS Time Zone OSTZ=Server OS Time Zone
PHPTZ=PHP server Time Zone PHPTZ=PHP server Time Zone
PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds) PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds)
ClientOffsetWithGreenwich=Klijent/browser ofset širina Greenwich-a (sekunde) ClientOffsetWithGreenwich=Klijent/browser ofset širina Greenwich-a (sekunde)
@ -233,7 +233,9 @@ OfficialWebSiteFr=French official web site
OfficialWiki=Dolibarr documentation on Wiki OfficialWiki=Dolibarr documentation on Wiki
OfficialDemo=Dolibarr online demo OfficialDemo=Dolibarr online demo
OfficialMarketPlace=Official market place for external modules/addons OfficialMarketPlace=Official market place for external modules/addons
OfficialWebHostingService=Službene web hosting usluge (Cloud hosting) OfficialWebHostingService=Referenced web hosting services (Cloud hosting)
ReferencedPreferredPartners=Preferred Partners
OtherResources=Autres ressources
ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),<br>take a look at the Dolibarr Wiki:<br><b><a href="%s" target="_blank">%s</a></b> ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),<br>take a look at the Dolibarr Wiki:<br><b><a href="%s" target="_blank">%s</a></b>
ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:<br><b><a href="%s" target="_blank">%s</a></b> ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:<br><b><a href="%s" target="_blank">%s</a></b>
HelpCenterDesc1=This area can help you to get a Help support service on Dolibarr. HelpCenterDesc1=This area can help you to get a Help support service on Dolibarr.
@ -369,9 +371,9 @@ ExtrafieldSelectList = Select from table
ExtrafieldSeparator=Separator ExtrafieldSeparator=Separator
ExtrafieldCheckBox=Checkbox ExtrafieldCheckBox=Checkbox
ExtrafieldRadio=Radio button ExtrafieldRadio=Radio button
ExtrafieldParamHelpselect=Lista parametara mora biti kao key,value <br><br> na primjer: <br> 1,value1 <br> 2,value2 <br> 3,value33 <br> ... <br><br> Da bi lista u zavisila od druge: <br> 1,value1|parent_list_code:parent_key <br> 2,value2|parent_list_code:parent_key ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
LibraryToBuildPDF=Library used to build PDF LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
@ -472,7 +474,7 @@ Module410Desc=Webcalendar integration
Module500Name=Special expenses (tax, social contributions, dividends) Module500Name=Special expenses (tax, social contributions, dividends)
Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries
Module510Name=Salaries Module510Name=Salaries
Module510Desc=Management of empoyees salaries and payments Module510Desc=Management of employees salaries and payments
Module600Name=Notifications Module600Name=Notifications
Module600Desc=Send notifications by email on some Dolibarr business events to third party contacts Module600Desc=Send notifications by email on some Dolibarr business events to third party contacts
Module700Name=Donations Module700Name=Donations
@ -681,6 +683,10 @@ Permission401=Read discounts
Permission402=Create/modify discounts Permission402=Create/modify discounts
Permission403=Validate discounts Permission403=Validate discounts
Permission404=Delete discounts Permission404=Delete discounts
Permission510=Read Salaries
Permission512=Create/modify salaries
Permission514=Delete salaries
Permission517=Export salaries
Permission531=Read services Permission531=Read services
Permission532=Create/modify services Permission532=Create/modify services
Permission534=Delete services Permission534=Delete services
@ -999,7 +1005,7 @@ ExtraFieldsSupplierOrders=Dopunske atributa (naloga)
ExtraFieldsSupplierInvoices=Dopunski atributi (fakture) ExtraFieldsSupplierInvoices=Dopunski atributi (fakture)
ExtraFieldsProject=Dopunski atributi (projekti) ExtraFieldsProject=Dopunski atributi (projekti)
ExtraFieldsProjectTask=Dopunski atributi (zadaci) ExtraFieldsProjectTask=Dopunski atributi (zadaci)
ExtraFieldHasWrongValue=Attribut %s has a wrong value. ExtraFieldHasWrongValue=Attribute %s has a wrong value.
AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space
AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space
SendingMailSetup=Setup of sendings by email SendingMailSetup=Setup of sendings by email
@ -1018,13 +1024,13 @@ SuhosinSessionEncrypt=Session storage encrypted by Suhosin
ConditionIsCurrently=Condition is currently %s ConditionIsCurrently=Condition is currently %s
TestNotPossibleWithCurrentBrowsers=Automatska detekcija nije moguća TestNotPossibleWithCurrentBrowsers=Automatska detekcija nije moguća
YouUseBestDriver=Možete koristiti driver %s koji je trenutno najbolji. YouUseBestDriver=Možete koristiti driver %s koji je trenutno najbolji.
YouDoNotUseBestDriver=Možete koristiti drive %s, ali driver %s se preporučava. YouDoNotUseBestDriver=You use drive %s but driver %s is recommended.
NbOfProductIsLowerThanNoPb=Imate samo %s proizvoda/usluga u bazu podataka. To ne zahtijeva posebne optimizacije. NbOfProductIsLowerThanNoPb=Imate samo %s proizvoda/usluga u bazu podataka. To ne zahtijeva posebne optimizacije.
SearchOptim=Optimizacija pretraživanja SearchOptim=Optimizacija pretraživanja
YouHaveXProductUseSearchOptim=Imate %s proizvod u bazu podataka. Trebalo bi dodati konstantu PRODUCT_DONOTSEARCH_ANYWHERE na 1 u Početna-Postavke-Ostalo, ograničavate pretragu na početak što je moguće za baze podataka za korištenje indeksa i trebali bi dobiti hitnu reakciju. YouHaveXProductUseSearchOptim=Imate %s proizvod u bazu podataka. Trebalo bi dodati konstantu PRODUCT_DONOTSEARCH_ANYWHERE na 1 u Početna-Postavke-Ostalo, ograničavate pretragu na početak što je moguće za baze podataka za korištenje indeksa i trebali bi dobiti hitnu reakciju.
BrowserIsOK=Vi koristite web browser %s. Ovaj browser je ok za sigurnost i performanse. BrowserIsOK=Vi koristite web browser %s. Ovaj browser je ok za sigurnost i performanse.
BrowserIsKO=Vi koristite web browser %s. Poznato je da je ovaj broswer loš izbor za sigurnost, performanse i pouzdanost. Mi preporučujemo da koristite Firefox, Chrome, Opera i Safari. BrowserIsKO=Vi koristite web browser %s. Poznato je da je ovaj broswer loš izbor za sigurnost, performanse i pouzdanost. Mi preporučujemo da koristite Firefox, Chrome, Opera i Safari.
XDebugInstalled=XCache je učitan. XDebugInstalled=XDebug is loaded.
XCacheInstalled=XCache je učitan. XCacheInstalled=XCache je učitan.
AddRefInList=Prikaz kupca/dobavljača ref u listi (odaberite listu ili combobox) i većina hyperlink AddRefInList=Prikaz kupca/dobavljača ref u listi (odaberite listu ili combobox) i većina hyperlink
FieldEdition=Edition of field %s FieldEdition=Edition of field %s
@ -1073,7 +1079,7 @@ WebCalServer=Server hosting calendar database
WebCalDatabaseName=Database name WebCalDatabaseName=Database name
WebCalUser=User to access database WebCalUser=User to access database
WebCalSetupSaved=Webcalendar setup saved successfully. WebCalSetupSaved=Webcalendar setup saved successfully.
WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successfull. WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful.
WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached.
WebCalTestKo2=Connection to server '%s' with user '%s' failed. WebCalTestKo2=Connection to server '%s' with user '%s' failed.
WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database. WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database.
@ -1119,7 +1125,7 @@ WatermarkOnDraftProposal=Vodeni žig na nacrte komercijalnih prijedloga (ništa,
OrdersSetup=Order management setup OrdersSetup=Order management setup
OrdersNumberingModules=Orders numbering models OrdersNumberingModules=Orders numbering models
OrdersModelModule=Order documents models OrdersModelModule=Order documents models
HideTreadedOrders=Hide the treated or canceled orders in the list HideTreadedOrders=Hide the treated or cancelled orders in the list
ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order
FreeLegalTextOnOrders=Free text on orders FreeLegalTextOnOrders=Free text on orders
WatermarkOnDraftOrders=Vodeni žig na nacrte naloga (ništa, ako je prazno) WatermarkOnDraftOrders=Vodeni žig na nacrte naloga (ništa, ako je prazno)
@ -1214,9 +1220,9 @@ LDAPSynchroKO=Failed synchronization test
LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that connexion to server is correctly configured and allows LDAP udpates LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that connexion to server is correctly configured and allows LDAP udpates
LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s)
LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s)
LDAPBindOK=Connect/Authentificate to LDAP server sucessfull (Server=%s, Port=%s, Admin=%s, Password=%s) LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPUnbindSuccessfull=Disconnect successfull LDAPUnbindSuccessfull=Disconnect successful
LDAPUnbindFailed=Disconnect failed LDAPUnbindFailed=Disconnect failed
LDAPConnectToDNSuccessfull=Connection to DN (%s) successful LDAPConnectToDNSuccessfull=Connection to DN (%s) successful
LDAPConnectToDNFailed=Connection to DN (%s) failed LDAPConnectToDNFailed=Connection to DN (%s) failed
@ -1273,7 +1279,7 @@ LDAPFieldSidExample=Example : objectsid
LDAPFieldEndLastSubscription=Date of subscription end LDAPFieldEndLastSubscription=Date of subscription end
LDAPFieldTitle=Post/Function LDAPFieldTitle=Post/Function
LDAPFieldTitleExample=Example: title LDAPFieldTitleExample=Example: title
LDAPParametersAreStillHardCoded=LDAP parametres are still hardcoded (in contact class) LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class)
LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) LDAPSetupNotComplete=LDAP setup not complete (go on others tabs)
LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode. LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode.
LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts. LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts.
@ -1429,7 +1435,7 @@ OptionVATDefault=Standard
OptionVATDebitOption=Option services on Debit OptionVATDebitOption=Option services on Debit
OptionVatDefaultDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on payments for services OptionVatDefaultDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on payments for services
OptionVatDebitOptionDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on invoice (debit) for services OptionVatDebitOptionDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on invoice (debit) for services
SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to choosed option: SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option:
OnDelivery=On delivery OnDelivery=On delivery
OnPayment=On payment OnPayment=On payment
OnInvoice=On invoice OnInvoice=On invoice
@ -1446,7 +1452,7 @@ AccountancyCodeBuy=Purchase account. code
AgendaSetup=Events and agenda module setup AgendaSetup=Events and agenda module setup
PasswordTogetVCalExport=Key to authorize export link PasswordTogetVCalExport=Key to authorize export link
PastDelayVCalExport=Do not export event older than PastDelayVCalExport=Do not export event older than
AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionnary -> Type of agenda events) AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events)
##### ClickToDial ##### ##### ClickToDial #####
ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example. ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example.
##### Point Of Sales (CashDesk) ##### ##### Point Of Sales (CashDesk) #####

View File

@ -89,6 +89,8 @@ ListOfServicesToExpireWithDuration=Lista usluga pred isticanje za %s dana
ListOfServicesToExpireWithDurationNeg=Lista isteklih usluga više od %s dana ListOfServicesToExpireWithDurationNeg=Lista isteklih usluga više od %s dana
ListOfServicesToExpire=Lista usluga pred isticanje ListOfServicesToExpire=Lista usluga pred isticanje
NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative. NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative.
StandardContractsTemplate=Standard contracts template
ContactNameAndSignature=For %s, name and signature:
##### Types de contacts ##### ##### Types de contacts #####
TypeContact_contrat_internal_SALESREPSIGN=Predstavnik prodaje koji potpisuje ugovor TypeContact_contrat_internal_SALESREPSIGN=Predstavnik prodaje koji potpisuje ugovor

View File

@ -8,7 +8,7 @@ ImportableDatas=Importable dataset
SelectExportDataSet=Choose dataset you want to export... SelectExportDataSet=Choose dataset you want to export...
SelectImportDataSet=Choose dataset you want to import... SelectImportDataSet=Choose dataset you want to import...
SelectExportFields=Choose fields you want to export, or select a predefined export profile SelectExportFields=Choose fields you want to export, or select a predefined export profile
SelectImportFields=Choose source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profil: SelectImportFields=Choose source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile:
NotImportedFields=Fields of source file not imported NotImportedFields=Fields of source file not imported
SaveExportModel=Save this export profile if you plan to reuse it later... SaveExportModel=Save this export profile if you plan to reuse it later...
SaveImportModel=Save this import profile if you plan to reuse it later... SaveImportModel=Save this import profile if you plan to reuse it later...
@ -81,7 +81,7 @@ DoNotImportFirstLine=Do not import first line of source file
NbOfSourceLines=Number of lines in source file NbOfSourceLines=Number of lines in source file
NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "<b>%s</b>" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)... NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "<b>%s</b>" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)...
RunSimulateImportFile=Launch the import simulation RunSimulateImportFile=Launch the import simulation
FieldNeedSource=This fiels in database require a data from source file FieldNeedSource=This field requires data from the source file
SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file
InformationOnSourceFile=Information on source file InformationOnSourceFile=Information on source file
InformationOnTargetTables=Information on target fields InformationOnTargetTables=Information on target fields

View File

@ -8,7 +8,6 @@ NotActiveModCP=Morate omogućiti modul godišnji odmori da bi vidjeli ovu strani
NotConfigModCP=Morate konfigurisati modul godišnji odmori da bi vidjeli ovu stranicu. Da bi ste uradili ovo, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;">kliknite ovdje<a>. NotConfigModCP=Morate konfigurisati modul godišnji odmori da bi vidjeli ovu stranicu. Da bi ste uradili ovo, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;">kliknite ovdje<a>.
NoCPforUser=Nema te zahtjeva za godišnje odmore. NoCPforUser=Nema te zahtjeva za godišnje odmore.
AddCP=Prijavi se za godišnji odmor AddCP=Prijavi se za godišnji odmor
CPErrorSQL=Desila se SQL greška:
Employe=Zaposlenik Employe=Zaposlenik
DateDebCP=Datum početka DateDebCP=Datum početka
DateFinCP=Datum završetka DateFinCP=Datum završetka

View File

@ -19,6 +19,7 @@ Language_en_SA=Engleski (Saudijska Arabija)
Language_en_US=Engleski (United States) Language_en_US=Engleski (United States)
Language_en_ZA=Engleski (Južna Afrika) Language_en_ZA=Engleski (Južna Afrika)
Language_es_ES=Španski Language_es_ES=Španski
Language_es_DO=Spanish (Dominican Republic)
Language_es_AR=Španjolski (Argentina) Language_es_AR=Španjolski (Argentina)
Language_es_CL=Spanish (Chile) Language_es_CL=Spanish (Chile)
Language_es_HN=Španjolski (Honduras) Language_es_HN=Španjolski (Honduras)
@ -38,6 +39,7 @@ Language_fr_NC=Francuski (Nova Kaledonija)
Language_he_IL=Jevrejski Language_he_IL=Jevrejski
Language_hr_HR=Hrvatski Language_hr_HR=Hrvatski
Language_hu_HU=Mađarski Language_hu_HU=Mađarski
Language_id_ID=Indonesian
Language_is_IS=Islandski Language_is_IS=Islandski
Language_it_IT=Italijanski Language_it_IT=Italijanski
Language_ja_JP=Japanski Language_ja_JP=Japanski

View File

@ -79,6 +79,7 @@ MailtoEMail=Hyper link na e-poštu
ActivateCheckRead=Dozvoli korištenje "Ispiši se" linka ActivateCheckRead=Dozvoli korištenje "Ispiši se" linka
ActivateCheckReadKey=Kljul korišten za enkriptovanje linka koristi se za "Pročitaj potvrdu" i "Ispiši se" mogućnosti ActivateCheckReadKey=Kljul korišten za enkriptovanje linka koristi se za "Pročitaj potvrdu" i "Ispiši se" mogućnosti
EMailSentToNRecipients=E-pošta poslana %s primaocima EMailSentToNRecipients=E-pošta poslana %s primaocima
XTargetsAdded=<b>%s</b> recipients added into target list
EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email.
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
SendRemind=Send reminder by EMails SendRemind=Send reminder by EMails

View File

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

View File

@ -28,8 +28,10 @@ ProductsAndServicesStatistics=Statistika proizvoda i usluga
ProductsStatistics=Statistika proizvoda ProductsStatistics=Statistika proizvoda
ProductsOnSell=Dostupni proizvodi ProductsOnSell=Dostupni proizvodi
ProductsNotOnSell=Zastarjeli proizvodi ProductsNotOnSell=Zastarjeli proizvodi
ProductsOnSellAndOnBuy=Products not for sale nor purchase
ServicesOnSell=Dostupne usluge ServicesOnSell=Dostupne usluge
ServicesNotOnSell=Zastarjele usluge ServicesNotOnSell=Zastarjele usluge
ServicesOnSellAndOnBuy=Services not for sale nor purchase
InternalRef=Interna referenca InternalRef=Interna referenca
LastRecorded=Last products/services on sell recorded LastRecorded=Last products/services on sell recorded
LastRecordedProductsAndServices=Last %s recorded products/services LastRecordedProductsAndServices=Last %s recorded products/services
@ -70,6 +72,8 @@ PublicPrice=Public price
CurrentPrice=Current price CurrentPrice=Current price
NewPrice=New price NewPrice=New price
MinPrice=Minim. selling price MinPrice=Minim. selling price
MinPriceHT=Minim. selling price (net of tax)
MinPriceTTC=Minim. selling price (inc. tax)
CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount.
ContractStatus=Contract status ContractStatus=Contract status
ContractStatusClosed=Closed ContractStatusClosed=Closed
@ -179,6 +183,7 @@ ProductIsUsed=This product is used
NewRefForClone=Ref. of new product/service NewRefForClone=Ref. of new product/service
CustomerPrices=Customers prices CustomerPrices=Customers prices
SuppliersPrices=Suppliers prices SuppliersPrices=Suppliers prices
SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services)
CustomCode=Customs code CustomCode=Customs code
CountryOrigin=Origin country CountryOrigin=Origin country
HiddenIntoCombo=Hidden into select lists HiddenIntoCombo=Hidden into select lists
@ -208,6 +213,7 @@ CostPmpHT=Net total VWAP
ProductUsedForBuild=Auto consumed by production ProductUsedForBuild=Auto consumed by production
ProductBuilded=Production completed ProductBuilded=Production completed
ProductsMultiPrice=Product multi-price ProductsMultiPrice=Product multi-price
ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices)
ProductSellByQuarterHT=Products turnover quarterly VWAP ProductSellByQuarterHT=Products turnover quarterly VWAP
ServiceSellByQuarterHT=Services turnover quarterly VWAP ServiceSellByQuarterHT=Services turnover quarterly VWAP
Quarter1=1st. Quarter Quarter1=1st. Quarter

View File

@ -112,6 +112,7 @@ ReplenishmentOrdersDesc=Ovo je lista svih otvorenih narudžbi dobavljača
Replenishments=Nadopune Replenishments=Nadopune
NbOfProductBeforePeriod=Količina proizvoda %s u zalihi prije odabranog perioda (%s) NbOfProductBeforePeriod=Količina proizvoda %s u zalihi prije odabranog perioda (%s)
NbOfProductAfterPeriod=Količina proizvoda %s u zalihi poslije odabranog perioda (> %s) NbOfProductAfterPeriod=Količina proizvoda %s u zalihi poslije odabranog perioda (> %s)
MassMovement=Mass movement
MassStockMovement=Masovno kretanje zalihe MassStockMovement=Masovno kretanje zalihe
SelectProductInAndOutWareHouse=Odaberite proizvod, kolilinu, izvordno skladište i ciljano skladište. zatim kliknite "%s". Kada je ovo završeno za sva potrebna kretanja, kliknite "%s". SelectProductInAndOutWareHouse=Odaberite proizvod, kolilinu, izvordno skladište i ciljano skladište. zatim kliknite "%s". Kada je ovo završeno za sva potrebna kretanja, kliknite "%s".
RecordMovement=Zapiši transfer RecordMovement=Zapiši transfer

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