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: Price min of composition is not supplier price min by quantity.
- Fix: [ bug #1356 ] Bank accountancy number is limited to 8 numbers.
- Fix: [ bug #1439 ] impossible to remove a a translation (multilanguage-feature)
TODO
- 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".
***** 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 *****
Fix: Error on field accountancy code for export profile of invoices.
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: When number reach 9999 with default numbering module, next number
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 *****
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
Fix: Margin tabs bad data show
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.* *****
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
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
[ 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
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
visible, depending on which modules were activated.
Dolibarr was designed to be easy to use. Only the features that you need
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,
Contacts directory,
@ -66,6 +66,6 @@ Description: Web based software to manage a company or foundation
Wizards to export and import data,
LDAP connectivity,
PDF exports,
And a lot of more modules...
And a lot more modules...
.
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
- 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
- Upstream release

View File

@ -572,6 +572,9 @@ fi
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
- 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
- Upstream release

View File

@ -341,6 +341,9 @@ fi
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
- 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
- Upstream release

View File

@ -352,6 +352,9 @@ fi
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
- 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
- Upstream release

View File

@ -15,7 +15,7 @@ fi
# To detect
if [ "x$1" = "xlist" ]
then
for file in `find . -type f`
for file in `find . -type f -name *.lang`
do
if [ `sort "$file" | uniq -d | wc -l` -gt 0 ]
then
@ -27,7 +27,7 @@ fi
# To fix
if [ "x$1" = "xfix" ]
then
for file in `find . -type f`
for file in `find . -type f -name *.lang`
do
awk -i inplace ' !x[$0]++' "$file"
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/files.lib.php';
if (!$user->admin)
accessforbidden();
if (!$user->admin) accessforbidden();
$langs->load("agenda");
$langs->load("admin");
@ -63,7 +62,7 @@ if ($actionsave)
// Save agendas
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'));
$color=trim(GETPOST('agenda_ext_color'.$i,'alpha'));
if ($color=='-1') $color='';
@ -76,7 +75,7 @@ if ($actionsave)
break;
}
//print 'color='.$color;
//print '-name='.$name.'-color='.$color;
$res=dolibarr_set_const($db,'AGENDA_EXT_NAME'.$i,$name,'chaine',0,'',$conf->entity);
if (! $res > 0) $error++;
$res=dolibarr_set_const($db,'AGENDA_EXT_SRC'.$i,$src,'chaine',0,'',$conf->entity);
@ -218,8 +217,7 @@ print '</table>';
print '<br>';
print '<center>';
print "<input type=\"submit\" name=\"save\" class=\"button\" value=\"".$langs->trans("Save")."\">";
print "<input type=\"submit\" id=\"save\" name=\"save\" class=\"button hideifnotset\" value=\"".$langs->trans("Save")."\">";
print "</center>";
print "</form>\n";

View File

@ -500,7 +500,7 @@ print "</tr>\n";
clearstatcache();
$var=true;
foreach ($dirmodels as $reldir)
foreach ($def as $reldir)
{
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_')
{
$var=!$var;
$name = substr($file, 4, dol_strlen($file) -16);
$classname = substr($file, 0, dol_strlen($file) -12);
$var=!$var;
require_once $dir.'/'.$file;
$module = new $classname($db);
print '<tr '.$bc[$var].'><td>';
echo "$name";
print (empty($module->name)?$name:$module->name);
print "</td><td>\n";
require_once $dir.$file;
$module = new $classname($db);

View File

@ -372,9 +372,14 @@ foreach ($dirmodels as $reldir)
$name = substr($file, 4, dol_strlen($file) -16);
$classname = substr($file, 0, dol_strlen($file) -12);
require_once $dir.'/'.$file;
$module = new $classname($db, new FactureFournisseur($db));
$var=!$var;
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";
require_once $dir.$file;
$module = new $classname($db,$specimenthirdparty);

View File

@ -42,6 +42,7 @@ accessforbidden();
$type=GETPOST('type', 'alpha');
$value=GETPOST('value', 'alpha');
$label = GETPOST('label','alpha');
$action=GETPOST('action', 'alpha');
$specimenthirdparty=new Societe($db);
@ -367,9 +368,14 @@ foreach ($dirmodels as $reldir)
$name = substr($file, 4, dol_strlen($file) -16);
$classname = substr($file, 0, dol_strlen($file) -12);
require_once $dir.'/'.$file;
$module = new $classname($db, new CommandeFournisseur($db));
$var=!$var;
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";
require_once $dir.$file;
$module = new $classname($db,$specimenthirdparty);

View File

@ -86,18 +86,35 @@ print '</br>';
// OPCode cache
print '<br>';
print '<strong>'.$langs->trans("OPCodeCache").'</strong>: ';
$test1=function_exists('xcache_info');
if ($test1)
$foundcache=0;
$test=function_exists('xcache_info');
if (! $foundcache && $test)
{
$foundcache++;
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>';
}
else
$test=function_exists('eaccelerator_info');
if (! $foundcache && $test)
{
$test2=function_exists('eaccelerator_info');
if ($test2) print img_picto('','tick.png').' '.$langs->trans("EAcceleratorInstalled");
else print $langs->trans("NoOPCodeCacheFound");
$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
{
print img_picto('','warning').' '.$langs->trans("APCCacheInstalledButDisabled");
}
}
if (! $foundcache) print $langs->trans("NoOPCodeCacheFound");
print '<br>';
// HTTPCacheStaticResources

View File

@ -54,16 +54,23 @@ print '</div>';
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
{
include 'facturation.php';
dol_print_error('','menu param '.$page.' is not inside allowed list');
}
print '</div>';
$_SESSION['serObjFacturation'] = serialize($obj_facturation);

View File

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

View File

@ -203,12 +203,6 @@ if ($action == 'add_action')
$action = 'create';
$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'))
{

View File

@ -146,9 +146,11 @@ if (empty($conf->global->AGENDA_DISABLE_EXT) && $conf->global->AGENDA_EXT_NB > 0
$source='AGENDA_EXT_SRC'.$i;
$name='AGENDA_EXT_NAME'.$i;
$color='AGENDA_EXT_COLOR'.$i;
$buggedfile='AGENDA_EXT_BUGGEDFILE'.$i;
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
$namecal = $extcal['name'];
$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->parse($url);
// 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;
$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
foreach($icalevents as $icalevent)
{
//var_dump($icalevent);
//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.
@ -659,12 +665,36 @@ if (count($listofextcals))
$event->fulldayevent=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'];
$dateend=$icalevent['DTEND'];
$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)
{

View File

@ -473,7 +473,7 @@ if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! G
$result = $interface->run_triggers('PROPAL_SENTBYMAIL', $object, $user, $langs, $conf);
if ($result < 0) {
$error ++;
$this->errors = $interface->errors;
$object->errors = $interface->errors;
}
// Fin appel triggers
@ -1157,7 +1157,7 @@ if ($action == 'create') {
// Date
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>';
// Validaty duration
@ -1191,10 +1191,9 @@ if ($action == 'create') {
$syear = date("Y", $tmpdte);
$smonth = date("m", $tmpdte);
$sday = date("d", $tmpdte);
$form->select_date($syear . "-" . $smonth . "-" . $sday, 'liv_', '', '', '', "addprop");
$form->select_date($syear."-".$smonth."-".$sday, 'liv_', '', '', '', "addprop");
} else {
$datepropal = empty($conf->global->MAIN_AUTOFILL_DATE) ? - 1 : 0;
$form->select_date($datepropal, 'liv_', '', '', '', "addprop");
$form->select_date(-1, 'liv_', '', '', '', "addprop", 1, 1);
}
print '</td></tr>';
@ -1247,8 +1246,9 @@ if ($action == 'create') {
print '<input type="hidden" name="createmode" value="empty">';
}
print '<table>';
if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE)) {
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))
{
// For backward compatibility
print '<tr>';
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 '</tr>';
}
print "</table>";
}
print '</td></tr>';
}
print '</table>';
print '<br>';
if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE) || ! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) print '</table><br>';
$langs->load("bills");
print '<center>';

View File

@ -546,6 +546,7 @@ class Propal extends CommonObject
$this->line->label = $label;
$this->line->desc = $desc;
$this->line->qty = $qty;
$this->line->product_type = $type;
$this->line->tva_tx = $txtva;
$this->line->localtax1_tx = $txlocaltax1;
$this->line->localtax2_tx = $txlocaltax2;
@ -1348,10 +1349,10 @@ class Propal extends CommonObject
{
// Rename of propal directory ($this->ref = old ref, $num = new ref)
// to not lose the linked files
$facref = dol_sanitizeFileName($this->ref);
$snumfa = dol_sanitizeFileName($num);
$dirsource = $conf->propal->dir_output.'/'.$facref;
$dirdest = $conf->propal->dir_output.'/'.$snumfa;
$oldref = dol_sanitizeFileName($this->ref);
$newref = dol_sanitizeFileName($num);
$dirsource = $conf->propal->dir_output.'/'.$oldref;
$dirdest = $conf->propal->dir_output.'/'.$newref;
if (file_exists($dirsource))
{
dol_syslog(get_class($this)."::validate rename dir ".$dirsource." into ".$dirdest);
@ -1361,15 +1362,17 @@ class Propal extends CommonObject
dol_syslog("Rename ok");
// 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->statut = 1;
$this->user_valid_id=$user->id;
$this->datev=$now;
$this->db->commit();
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.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.= ' 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.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON pd.fk_product = p.rowid';
$sql.= ' WHERE pd.rowid = '.$rowid;
@ -2820,6 +2823,7 @@ class PropaleLigne extends CommonObject
$this->marque_tx = $marginInfos[2];
$this->special_code = $objp->special_code;
$this->product_type = $objp->product_type;
$this->rang = $objp->rang;
$this->ref = $objp->product_ref; // deprecated
@ -3054,6 +3058,7 @@ class PropaleLigne extends CommonObject
$sql = "UPDATE ".MAIN_DB_PREFIX."propaldet SET";
$sql.= " description='".$this->db->escape($this->desc)."'";
$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.= " , localtax1_tx=".price2num($this->localtax1_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('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('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('');
print "</tr>\n";
@ -301,6 +301,7 @@ if ($result)
print '<input class="flat" type="text" size="12" name="search_societe" value="'.$search_societe.'">';
print '</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 $langs->trans('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);
print '</td>';
print '<td class="liste_titre" colspan="1">&nbsp;</td>';
// Amount
print '<td class="liste_titre" align="center">';
print '<input class="flat" type="text" size="10" name="search_montant_ht" value="'.$search_montant_ht.'">';
print '</td>';
print '<td class="liste_titre" align="right">';
// Author
print '<td class="liste_titre" align="center">';
print '<input class="flat" size="10" type="text" name="search_author" value="'.$search_author.'">';
print '</td>';
print '<td class="liste_titre" align="right">';

View File

@ -130,7 +130,7 @@ if ($socid > 0)
// Nouvelle valeur
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
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.= " FROM ".MAIN_DB_PREFIX."societe_remise as rc, ".MAIN_DB_PREFIX."user as u";
$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);
$this->fetch_optionals($this->id,$extralabels);
$this->db->free();
$this->db->free($result);
/*
* Lines

View File

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

View File

@ -373,7 +373,7 @@ if ($action == 'create' && empty($mesgs))
$remise_percent = $soc->remise_percent;
}
$remise_absolue = 0;
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0;
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
$absolute_discount=$soc->getAvailableDiscounts();
print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
@ -413,7 +413,7 @@ if ($action == 'create' && empty($mesgs))
// Date invoice
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>';
// Payment term
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">';
if ($sep > 0) print '&nbsp;'; // If we had at least one line in future
else print $langs->trans("CurrentBalance");
print '</td>';
print '<td align="right" nowrap><b>'.price($total).'</b></td>';
print ' '.$object->currency_code.'</td>';
print '<td align="right" nowrap><b>'.price($total, 0, $langs, 0, 0, -1, $object->currency_code).'</b></td>';
print '<td>&nbsp;</td>';
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 "</tr>\n";
$total = 0; $found = 0;
$total = array(); $found = 0;
$var=true;
foreach ($accounts as $key=>$type)
{
@ -119,17 +119,19 @@ foreach ($accounts as $key=>$type)
print '</td>';
print '<td align="center">'.$acc->getLibStatut(2).'</td>';
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 '</tr>';
$total += $solde;
$total[$acc->currency_code] += $solde;
}
}
if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>';
// 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>';
@ -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 "</tr>\n";
$total = 0; $found = 0;
$total = array(); $found = 0;
$var=true;
foreach ($accounts as $key=>$type)
{
@ -165,16 +167,19 @@ foreach ($accounts as $key=>$type)
print '<td>&nbsp;</td>';
print '<td align="center">'.$acc->getLibStatut(2).'</td>';
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 '</tr>';
$total += $solde;
$total[$acc->currency_code] += $solde;
}
}
if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>';
// 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 "</tr>\n";
$total = 0; $found = 0;
$total = array(); $found = 0;
$var=true;
foreach ($accounts as $key=>$type)
{
@ -222,16 +227,19 @@ foreach ($accounts as $key=>$type)
print '</td>';
print '<td align="center">'.$acc->getLibStatut(2).'</td>';
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 '</tr>';
$total += $solde;
$total[$acc->currency_code] += $solde;
}
}
if (! $found) print '<tr '.$bc[$var].'><td colspan="6">'.$langs->trans("None").'</td></tr>';
// 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>";

View File

@ -1607,7 +1607,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO
$result = $interface->run_triggers('BILL_SENTBYMAIL', $object, $user, $langs, $conf);
if ($result < 0) {
$error ++;
$this->errors = $interface->errors;
$object->errors = $interface->errors;
}
// Fin appel triggers
@ -1666,7 +1666,7 @@ else if ($action == 'builddoc') // En get ou en post
// Save last template used to generate document
if (GETPOST('model'))
$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');
// Define output language
@ -1871,10 +1871,12 @@ if ($action == 'create')
$ref_int = (! empty($objectsrc->ref_int) ? $objectsrc->ref_int : '');
$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));
$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_absolue = (! empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (! empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
$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));
$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));
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:'';
// Replicate extrafields
$objectsrc->fetch_optionals($originid);
@ -1884,11 +1886,11 @@ if ($action == 'create')
}
else
{
$cond_reglement_id = $soc->cond_reglement_id;
$mode_reglement_id = $soc->mode_reglement_id;
$remise_percent = $soc->remise_percent;
$remise_absolue = 0;
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ? -1 : ''; // Do not set 0 here (0 for a date is 1970)
$cond_reglement_id = $soc->cond_reglement_id;
$mode_reglement_id = $soc->mode_reglement_id;
$remise_percent = $soc->remise_percent;
$remise_absolue = 0;
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''; // Do not set 0 here (0 for a date is 1970)
}
$absolute_discount = $soc->getAvailableDiscounts();

View File

@ -651,7 +651,7 @@ class BonPrelevement extends CommonObject
{
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.= " ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
//$sql.= " ,".MAIN_DB_PREFIX."c_paiement as cp";
@ -1410,6 +1410,34 @@ class BonPrelevement extends CommonObject
fputs($this->file, ' </PmtInf>'.$CrLf);
fputs($this->file, ' </CstmrDrctDbtInitn>'.$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;
}
}

View File

@ -258,14 +258,14 @@ abstract class CommonDocGenerator
$extrafields = new ExtraFields($this->db);
$extralabels = $extrafields->fetch_name_optionals_label('socpeople', true);
$object->fetch_optionals($object->id, $extralabels);
foreach($extrafields->attribute_label as $key => $label)
foreach($extrafields->attribute_label as $key => $label)
{
if ($extrafields->attribute_type[$key] == 'price')
if ($extrafields->attribute_type[$key] == 'price')
{
$object->array_options['options_' . $key] = price($object->array_options ['options_' . $key], 0, $outputlangs, 0, 0, - 1, $conf->currency);
}
elseif($extrafields->attribute_type[$key] == 'select')
elseif($extrafields->attribute_type[$key] == 'select')
{
$object->array_options['options_' . $key] = $extrafields->attribute_param[$key]['options'][$object->array_options['options_' . $key]];
}
@ -377,12 +377,11 @@ abstract class CommonDocGenerator
// Retrieve extrafields
if (is_array($object->array_options) && count($object->array_options))
{
$extrafieldkey=$this->element;
'facture';
$extrafieldkey=$object->element;
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
$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);
$resarray = $this->fill_substitutionarray_with_extrafields($object,$resarray,$extrafields,$array_key=$array_key,$outputlangs);

View File

@ -637,7 +637,7 @@ abstract class CommonObject
global $conf;
dol_syslog(get_class($this).'::fetch_barcode this->element='.$this->element.' this->barcode_type='.$this->barcode_type);
$idtype=$this->barcode_type;
if (empty($idtype) && $idtype != '0') // If type of barcode no set, we try to guess. If set to '0' it means we forced to have type remain not defined
{
@ -645,7 +645,7 @@ abstract class CommonObject
else if ($this->element == 'societe') $idtype = $conf->global->GENBARCODE_BARCODETYPE_THIRDPARTY;
else dol_syslog('Call fetch_barcode with barcode_type not defined and cant be guessed', LOG_WARNING);
}
if ($idtype > 0)
{
if (empty($this->barcode_type) || empty($this->barcode_type_code) || empty($this->barcode_type_label) || empty($this->barcode_type_coder)) // If data not already loaded
@ -2121,7 +2121,7 @@ abstract class CommonObject
foreach ($tab as $key => $value)
{
//Test fetch_array ! is_int($key) because fetch_array seult is a mix table with Key as alpha and Key as int (depend db engine)
// Test fetch_array ! is_int($key) because fetch_array seult is a mix table with Key as alpha and Key as int (depend db engine)
if ($key != 'rowid' && $key != 'tms' && $key != 'fk_member' && ! is_int($key))
{
// we can add this attribute to adherent object
@ -3237,6 +3237,7 @@ abstract class CommonObject
$marginInfo = $this->getMarginInfos($force_price);
print '<table class="nobordernopadding" width="100%">';
print '<tr class="liste_titre">';
print '<td width="30%">'.$langs->trans('Margins').'</td>';
print '<td width="20%" align="right">'.$langs->trans('SellingPrice').'</td>';
@ -3250,38 +3251,49 @@ abstract class CommonObject
if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.$langs->trans('MarkRate').'</td>';
print '</tr>';
//if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) {
print '<tr class="impair">';
print '<td>'.$langs->trans('MarginOnProducts').'</td>';
print '<td align="right">'.price($marginInfo['pv_products'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>';
print '<tr class="pair">';
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['pa_services'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>';
//}
print '<tr class="impair">';
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['pa_total'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>';
if (! empty($conf->product->enabled))
{
//if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) {
print '<tr class="impair">';
print '<td>'.$langs->trans('MarginOnProducts').'</td>';
print '<td align="right">'.price($marginInfo['pv_products'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>';
}
if (! empty($conf->service->enabled))
{
print '<tr class="pair">';
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['pa_services'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>';
}
if (! empty($conf->product->enabled) && ! empty($conf->service->enabled))
{
print '<tr class="impair">';
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['pa_total'], null, null, null, null, $rounding).'</td>';
print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>';
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>';
if (! empty($conf->global->DISPLAY_MARK_RATES))
print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>';
print '</tr>';
}
print '</table>';
}

View File

@ -329,14 +329,14 @@ class FileUpload
$file->error = 'minFileSize';
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'])
) {
$file->error = 'maxNumberOfFiles';
return false;
}
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'] ||
$this->options['max_height'] && $img_height > $this->options['max_height']) {
$file->error = 'maxResolution';

View File

@ -191,8 +191,9 @@ class Form
$ret.='</td>';
if ($typeofdata != 'day' && $typeofdata != 'datepicker' && $typeofdata != 'datehourpicker')
{
$ret.='<td align="left"><input type="submit" class="button" name="modify" value="'.$langs->trans("Modify").'">';
$ret.='<br><br>'."\n";
$ret.='<td align="left">';
$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.='</td>';
}
@ -1258,7 +1259,7 @@ class Form
* Return list of products for customer in Ajax if Ajax activated or go to select_produits_list
*
* @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 $limit Limit on number of returned lines
* @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 int $hidelabel Hide label (0=no, 1=yes, 2=show search icon (before) and placeholder, 3 search icon after)
* @param array $ajaxoptions Options for ajax_autocompleter
* @param int $socid Thridparty Id
* @param int $socid Thirdparty Id
* @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)
@ -1319,13 +1320,13 @@ class Form
* @param int $selected Preselected product
* @param string $htmlname Name of select html
* @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 string $filterkey Filter on product
* @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 $outputmode 0=HTML select string, 1=Array
* @param int $socid Thridparty Id
* @param int $socid Thirdparty Id
* @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)
@ -2667,7 +2668,7 @@ class Form
$autoOpen=true;
$dialogconfirm='dialog-confirm';
$button='';
if (! is_int($useajax))
if (! is_numeric($useajax))
{
$button=$useajax;
$useajax=1;
@ -4091,7 +4092,7 @@ class Form
//Check if fetch_barcode() failed
if ($result < 1) return '<!-- ErrorFetchBarcode -->';
}
// Barcode image
$url=DOL_URL_ROOT.'/viewimage.php?modulepart=barcode&generator='.urlencode($object->barcode_type_coder).'&code='.urlencode($object->barcode).'&encoding='.urlencode($object->barcode_type_code);
$out ='<!-- url barcode = '.$url.' -->';

View File

@ -257,10 +257,11 @@ 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='')
{
global $langs,$conf,$hookmanager,$user,$form,$bc;
global $langs, $conf, $user, $hookmanager;
global $form, $bc;
if (! is_object($form)) $form=new Form($this->db);
// filedir = $conf->...->dir_ouput."/".get_exdir(id)
include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
@ -554,9 +555,12 @@ class FormFile
$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
$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);
if (preg_match('/text/',$mime)) $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.= " FROM ".MAIN_DB_PREFIX."user as u";
$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
if (empty($user->rights->user->user->lire) && $user->societe_id)
{

View File

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

View File

@ -825,8 +825,16 @@ class DoliDBMysql extends DoliDB
$resql=$this->query($sql);
if (! $resql)
{
dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_ERR);
return -1;
if ($this->lasterrno != 'DB_ERROR_USER_ALREADY_EXISTS')
{
dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_ERR);
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)."'";
dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log

View File

@ -829,8 +829,16 @@ class DoliDBMysqli extends DoliDB
$resql=$this->query($sql);
if (! $resql)
{
dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_ERR);
return -1;
if ($this->lasterrno != 'DB_ERROR_USER_ALREADY_EXISTS')
{
dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_ERR);
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)."'";
dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log

View File

@ -46,7 +46,7 @@ class DoliDBPgsql extends DoliDB
static $versionmin=array(8,4,0); // Version min database
//! Resultset of last query
private $_results;
public $unescapeslashquot;
public $standard_conforming_strings;
@ -172,6 +172,8 @@ class DoliDBPgsql extends DoliDB
else if (preg_match('/DROP TABLE/i',$line)) $type='dml';
}
$line=preg_replace('/ as signed\)/i',' as integer)',$line);
if ($type == 'dml')
{
$line=preg_replace('/\s/',' ',$line); // Replace tabulation with space
@ -196,8 +198,7 @@ class DoliDBPgsql extends DoliDB
// nuke unsigned
$line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line);
$line=preg_replace('/as signed/i','as integer',$line);
// blob -> text
$line=preg_replace('/\w*blob/i','text',$line);
@ -463,7 +464,7 @@ class DoliDBPgsql extends DoliDB
function query($query,$usesavepoint=0,$type='auto')
{
global $conf;
$query = trim($query);
// Convert MySQL syntax to PostgresSQL syntax
@ -484,7 +485,7 @@ class DoliDBPgsql extends DoliDB
else $loop=false;
}
}
if ($usesavepoint && $this->transaction_opened)
{
@pg_query($this->db, 'SAVEPOINT mysavepoint');

View File

@ -39,7 +39,7 @@
* @param string $filterd Filter of done by user
* @param int $pid Product 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
* @return void
*/
@ -136,7 +136,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
print '});' . "\n";
print '</script>' . "\n";
print '<table>';
if (! empty($conf->global->MAIN_JS_SWITCH_AGENDA))
if (! empty($conf->use_javascript_ajax))
{
if (count($showextcals) > 0)
{
@ -147,7 +147,10 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
print '<tr><td>';
print '<script type="text/javascript">' . "\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 '</script>' . "\n";
print '<input type="checkbox" id="check_' . $htmlname . '" name="check_' . $htmlname . '" checked="true"> ' . $val ['name'];
@ -434,9 +437,9 @@ function actions_prepare_head($object)
$head[$h][1] = $langs->trans('Info');
$head[$h][2] = 'info';
$h++;
complete_head_from_modules($conf,$langs,$object,$head,$h,'action');
complete_head_from_modules($conf,$langs,$object,$head,$h,'action','remove');
return $head;

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)\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('/&#[0-9]{2,3};/i',$msg)) return true; // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp)
return false;
@ -4588,4 +4589,3 @@ function natural_search($fields, $value)
}
return " AND " . ($end > 1? '(' : '') . $res;
}

View File

@ -438,7 +438,9 @@ function pdf_pagehead(&$pdf,$outputlangs,$page_height)
// Add a background image on document
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 ($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
$ref_prodserv .= " - ";
if (! empty($libelleproduitservice)) $ref_prodserv .= " - ";
}
$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;
// Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_nomousehover
$dol_hide_topmenu=GETPOST('dol_hide_topmenu');
$dol_hide_leftmenu=GETPOST('dol_hide_leftmenu');
$dol_optimize_smallscreen=GETPOST('dol_optimize_smallscreen');
$dol_no_mouse_hover=GETPOST('dol_no_mouse_hover');
$dol_use_jmobile=GETPOST('dol_use_jmobile');
$dol_hide_topmenu=GETPOST('dol_hide_topmenu','int');
$dol_hide_leftmenu=GETPOST('dol_hide_leftmenu','int');
$dol_optimize_smallscreen=GETPOST('dol_optimize_smallscreen','int');
$dol_no_mouse_hover=GETPOST('dol_no_mouse_hover','int');
$dol_use_jmobile=GETPOST('dol_use_jmobile','int');
// Include login page template
include $template_dir.'login.tpl.php';

View File

@ -773,16 +773,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
// Suppliers
if (! empty($conf->societe->enabled) && ! empty($conf->fournisseur->enabled))
{
if (! empty($conf->facture->enabled))
{
$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/fiche.php?action=create",$langs->trans("NewBill"),1,$user->rights->fournisseur->facture->creer);
$newmenu->add("/fourn/facture/impayees.php", $langs->trans("Unpaid"),1,$user->rights->fournisseur->facture->lire);
$newmenu->add("/fourn/facture/paiement.php", $langs->trans("Payments"),1,$user->rights->fournisseur->facture->lire);
$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/fiche.php?action=create",$langs->trans("NewBill"),1,$user->rights->fournisseur->facture->creer);
$newmenu->add("/fourn/facture/impayees.php", $langs->trans("Unpaid"),1,$user->rights->fournisseur->facture->lire);
$newmenu->add("/fourn/facture/paiement.php", $langs->trans("Payments"),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);
}
$newmenu->add("/compta/facture/stats/index.php?leftmenu=suppliers_bills&mode=supplier", $langs->trans("Statistics"),1,$user->rights->fournisseur->facture->lire);
}
// Orders

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* 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
* 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_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_alt = $tab_top;
// Tracking number
if (! empty($object->tracking_number))
@ -196,7 +198,9 @@ class pdf_rouget extends ModelePdfExpedition
$label=$outputlangs->trans("LinkToTrackYourPackage")."<br>";
$label.=$outputlangs->trans("SendingMethod".strtoupper($code))." :";
$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))
{
$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();

View File

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

View File

@ -329,7 +329,7 @@ class modSociete extends DolibarrModules
unset($this->export_entities_array[$r]['s.code_fournisseur']);
}
// 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);
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');
}
$posy+=2;
$posy+=5;
$pdf->SetTextColor(0,0,60);
// Show list of linked objects

View File

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

View File

@ -1128,6 +1128,10 @@ class Expedition extends CommonObject
// Eat-by date
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);
}
$this->lines[$i] = $line;

View File

@ -500,7 +500,7 @@ if ($action == 'send' && ! GETPOST('addfile','alpha') && ! GETPOST('removedfile'
$interface=new Interfaces($db);
$result=$interface->run_triggers('SHIPPING_SENTBYMAIL',$object,$user,$langs,$conf);
if ($result < 0) {
$error++; $this->errors=$interface->errors;
$error++; $object->errors=$interface->errors;
}
// 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 (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
print '<td align="center">';

View File

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

View File

@ -42,6 +42,7 @@ class FactureFournisseur extends CommonInvoice
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
var $rowid;
var $ref;
var $product_ref;
var $ref_supplier;
@ -444,7 +445,7 @@ class FactureFournisseur extends CommonInvoice
*/
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.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';
@ -452,7 +453,7 @@ class FactureFournisseur extends CommonInvoice
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON f.fk_product = p.rowid';
$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);
if ($resql_rows)
{
@ -467,11 +468,11 @@ class FactureFournisseur extends CommonInvoice
$this->lines[$i] = new stdClass();
$this->lines[$i]->rowid = $obj->rowid;
$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]->ref_fourn = $obj->ref_fourn; // Reference fournisseur du produit
$this->lines[$i]->libelle = $obj->label; // Label du produit
$this->lines[$i]->product_desc = $obj->product_desc; // Description du produit
$this->lines[$i]->ref = $obj->product_ref; // deprecated.
$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]->pu_ht = $obj->pu_ht;
$this->lines[$i]->pu_ttc = $obj->pu_ttc;
$this->lines[$i]->tva_tx = $obj->tva_tx;
@ -498,7 +499,7 @@ class FactureFournisseur extends CommonInvoice
else
{
$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;
}
}
@ -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_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_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_public)) $this->note_public=trim($this->note_public);
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_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_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.= " 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").",";
@ -1076,6 +1077,8 @@ class FactureFournisseur extends CommonInvoice
* @param int $rang Position of line
* @param int $notrigger Disable triggers
* @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)
{
@ -1152,7 +1155,7 @@ class FactureFournisseur extends CommonInvoice
* Update a line detail into database
*
* @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 $vatrate VAT Rate
* @param double $txlocaltax1 LocalTax1 Rate
@ -1166,9 +1169,9 @@ class FactureFournisseur extends CommonInvoice
* @param int $notrigger Disable triggers
* @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';
$pu = price2num($pu);
@ -1194,7 +1197,7 @@ class FactureFournisseur extends CommonInvoice
$localtaxes_type=getLocalTaxesFromRate($vatrate,0,$this->thirdparty);
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $vatrate, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $this->thirdparty,$localtaxes_type);
$tabprice = calcul_price_total($qty, $pu, $remise_percent, $vatrate, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $this->thirdparty, $localtaxes_type);
$total_ht = $tabprice[0];
$total_tva = $tabprice[1];
$total_ttc = $tabprice[2];
@ -1217,7 +1220,7 @@ class FactureFournisseur extends CommonInvoice
}
$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_ttc = ".price2num($pu_ttc);
$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 $id; // product id
var $fourn_ref; // ref supplier
var $fourn_qty; // quantity for price
var $fourn_ref; // deprecated
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_remise_percent; // discount for quantity (percent)
var $fourn_remise; // discount for quantity (amount)

View File

@ -1734,17 +1734,6 @@ elseif (! empty($object->id))
// Form to add new 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
global $forceall, $senderissupplier, $dateSelector;
$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
}
}
/*
$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>';

View File

@ -3,6 +3,7 @@
* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* 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
* 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 (GETPOST('statut')!='')
//Required triple check because statut=0 means draft filter
if (GETPOST('statut', 'int') !== '')
{
$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_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(
$desc,
$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)
{
// TODO Missing transaction
if (GETPOST('etat') == '1' && ! GETPOST('cancel')) // si on valide la modification
{
$object->fetch($id);
@ -516,6 +518,8 @@ elseif ($action == 'update_line' && $user->rights->fournisseur->facture->creer)
elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
{
$db->begin();
$ret=$object->fetch($id);
if ($ret < 0)
{
@ -601,6 +605,7 @@ elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
$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);
}
if ($idprod == -2 || $idprod == 0)
@ -655,6 +660,8 @@ elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
//print "xx".$tva_tx; exit;
if (! $error && $result > 0)
{
$db->commit();
// Define output language
$outputlangs = $langs;
$newlang=GETPOST('lang_id','alpha');
@ -704,9 +711,13 @@ elseif ($action == 'addline' && $user->rights->fournisseur->facture->creer)
unset($_POST['date_endmonth']);
unset($_POST['date_endyear']);
}
else if (empty($mesg))
{
$mesg='<div class="error">'.$object->error.'</div>';
else
{
$db->rollback();
if (empty($mesg))
{
$mesg='<div class="error">'.$object->error.'</div>';
}
}
$action = '';
@ -900,7 +911,7 @@ if ($action == 'send' && ! $_POST['addfile'] && ! $_POST['removedfile'] && ! $_P
$interface=new Interfaces($db);
$result=$interface->run_triggers('BILL_SUPPLIER_SENTBYMAIL',$object,$user,$langs,$conf);
if ($result < 0) {
$error++; $this->errors=$interface->errors;
$error++; $object->errors=$interface->errors;
}
// 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));
$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));
$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']);
$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']);
$datedue=($datetmp==''?-1:$datetmp);
}
@ -1154,7 +1165,7 @@ if ($action == 'create')
$cond_reglement_id = $societe->cond_reglement_supplier_id;
$mode_reglement_id = $societe->mode_reglement_supplier_id;
$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']);
$datedue=($datetmp==''?-1:$datetmp);
}
@ -2056,24 +2067,9 @@ else
// Form to add new 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;
$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')
{
@ -2086,108 +2082,6 @@ else
$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>';

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.'/compta/paiement/class/paiement.class.php';
if (! $user->rights->facture->lire) accessforbidden();
if (! $user->rights->fournisseur->facture->lire) accessforbidden();
$langs->load("companies");
$langs->load("bills");

View File

@ -243,7 +243,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
$object->fetch($facid);
$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.= ' 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.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as p ";
$sql.= " WHERE p.fk_soc =".$object->id;
$sql.= " AND p.entity =".$conf->entity;
$sql.= " ORDER BY p.date_commande DESC";
$sql.= " ".$db->plimit($MAXLIST);
$resql=$db->query($sql);
@ -380,6 +381,7 @@ if ($object->fetch($id))
$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.= ' 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.= ' ORDER BY f.datef DESC';
$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);
$res = $object->update_num($_POST['num_paiement']);

View File

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

View File

@ -82,7 +82,7 @@ if ($action == 'update' && isset($_POST['update_cp']))
$sql.= " value = '".dol_print_date($now,'%Y%m%d%H%M%S')."'";
$sql.= " WHERE name = 'lastUpdate' and value IS NULL"; // Add value IS NULL to be sure to update only at init.
dol_syslog('define_holiday update lastUpdate entry sql='.$sql);
$result = $db->query($sql);
$result = $db->query($sql);
$mesg='<div class="ok">'.$langs->trans('UpdateConfCPOK').'</div>';
@ -91,21 +91,24 @@ if ($action == 'update' && isset($_POST['update_cp']))
}
elseif($action == 'add_event')
{
$error = false;
$error = 0;
if(!empty($_POST['list_event']) && $_POST['list_event'] > 0) {
$event = $_POST['list_event'];
} else { $error = true;
} else { $error++;
}
if(!empty($_POST['userCP']) && $_POST['userCP'] > 0) {
$userCP = $_POST['userCP'];
} else { $error = true;
} else { $erro++;
}
if($error) {
if ($error)
{
$message = '<div class="error">'.$langs->trans('ErrorAddEventToUserCP').'</div>';
} else {
}
else
{
$nb_holiday = $holiday->getCPforUser($userCP);
$add_holiday = $holiday->getValueEventCp($event);
$new_holiday = $nb_holiday + $add_holiday;

View File

@ -443,7 +443,8 @@ else
$choice .= '<td class="listofchoices">';
$choice .= $langs->trans("UpgradeDesc");
if ($recommended_choice) {
if ($recommended_choice)
{
$choice .= '<br>';
//print $langs->trans("InstallChoiceRecommanded",DOL_VERSION,$conf->global->MAIN_VERSION_LAST_UPGRADE);
$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
print '<table width="100%" class="listofchoices">';
foreach ($available_choices as $choice) {

View File

@ -11,8 +11,10 @@
-- To drop a foreign key: ALTER TABLE llx_table DROP FOREIGN KEY fk_name;
-- To restrict request to Mysql version x.y use -- VMYSQLx.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 (postgres) VPGSQL8.2 NOT POSSIBLE. MUST DELETE/CREATE TABLE
-- 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 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);
-- -- 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_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);

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_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
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
fk_soc integer NOT NULL,

View File

@ -28,7 +28,7 @@ create table llx_expedition
fk_soc integer NOT NULL,
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
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
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
type smallint DEFAULT 0 NOT NULL, -- type of invoice

View File

@ -26,7 +26,7 @@ create table llx_livraison
fk_soc integer NOT NULL,
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
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
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
fk_soc integer,

View File

@ -1,6 +1,6 @@
-- ========================================================================
-- 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) 2010 Juanjo Menent <dolibarr@2byte.es>
--
@ -22,11 +22,11 @@
create table llx_societe
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
nom varchar(60), -- company reference name
entity integer DEFAULT 1 NOT NULL, -- multi company id
nom varchar(60), -- company reference name
entity integer DEFAULT 1 NOT NULL, -- multi company id
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_ext varchar(128), -- reference into an external system (not used by dolibarr)
ref_int varchar(60), -- reference into an internal system (deprecated)
statut tinyint DEFAULT 0, -- statut
parent integer,

View File

@ -24,7 +24,7 @@ create table llx_user
entity integer DEFAULT 1 NOT NULL, -- multi company id
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,
tms timestamp,

View File

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

View File

@ -8,7 +8,7 @@ ImportableDatas=بيانات وارداتها
SelectExportDataSet=اختر البيانات التي تريد تصديرها...
SelectImportDataSet=اختر البيانات التي تريد الاستيراد...
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=حقول من الملف المصدر يتم استيراد
SaveExportModel=احفظ هذا التصدير صورة لو كنت تخطط لإعادة استخدامها في وقت لاحق...
SaveImportModel=إنقاذ هذه استيراد صورة لو كنت تخطط لإعادة استخدامها في وقت لاحق...
@ -81,7 +81,7 @@ DoNotImportFirstLine=لا استيراد السطر الأول من الملف
NbOfSourceLines=عدد الأسطر في الملف المصدر
NowClickToTestTheImport=الاختيار المعلمات استيراد عرفتها. وإذا كانت صحيحة ، انقر على <b>%s</b> "زر" لإطلاق محاكاة لعملية الاستيراد (يمكن تغيير أية بيانات في قاعدة البيانات وسوف ، انها مجرد محاكاة لحظة)...
RunSimulateImportFile=بدء استيراد محاكاة
FieldNeedSource=هذا يشعر في قاعدة البيانات تتطلب البيانات من الملف المصدر
FieldNeedSource=This field requires data from the source file
SomeMandatoryFieldHaveNoSource=بعض الحقول إلزامية ليس لديها مصدر من ملف البيانات
InformationOnSourceFile=معلومات عن الملف المصدر
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>.
NoCPforUser=You don't have a demand for holidays.
AddCP=Apply for holidays
CPErrorSQL=An SQL error occurred:
Employe=Employee
DateDebCP=تاريخ البدء
DateFinCP=نهاية التاريخ

View File

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

View File

@ -79,6 +79,7 @@ MailtoEMail=Hyper link to email
ActivateCheckRead=Allow to use the "Unsubcribe" link
ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature
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.
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
SendRemind=Send reminder by EMails

View File

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

View File

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

View File

@ -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)
NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s)
MassMovement=Mass 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".
RecordMovement=Record transfert

View File

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

View File

@ -8,7 +8,7 @@ ImportableDatas=Се внасят набор от данни
SelectExportDataSet=Изберете набор от данни, които искате да експортирате ...
SelectImportDataSet=Изберете набор от данни, който искате да импортирате ...
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=Области на файла източник не са внесени
SaveExportModel=Запази този профил за износ, ако смятате да го използвате отново по-късно ...
SaveImportModel=Запази този профил за внос, ако смятате да го използвате отново по-късно ...
@ -81,7 +81,7 @@ DoNotImportFirstLine=Да не се внасят първия ред на изх
NbOfSourceLines=Брой на линиите във файла източник
NowClickToTestTheImport=Проверете внос параметрите, които сте задали. Ако те са правилни, кликнете върху бутона <b>&quot;%s&quot;,</b> за да започне симулация на процеса на импортиране (няма данни ще се промени във вашата база данни, това е само симулация за момента) ...
RunSimulateImportFile=Стартиране на симулация внос
FieldNeedSource=Това Полета в базата данни изискват данни от файла източник
FieldNeedSource=This field requires data from the source file
SomeMandatoryFieldHaveNoSource=Някои от задължителните полета не са източник от файл с данни
InformationOnSourceFile=Информация за файла източник
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>.
NoCPforUser=You don't have a demand for holidays.
AddCP=Кандидатстване за отпуск
CPErrorSQL=Възникна SQL грешка:
Employe=Служител
DateDebCP=Начална дата
DateFinCP=Крайна дата

View File

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

View File

@ -79,6 +79,7 @@ MailtoEMail=Хипер-връзка на приятел
ActivateCheckRead=Оставя се да се използва за четене тракер получаване и връзката unsubcribe
ActivateCheckReadKey=Key използване за криптиране на използването на URL адрес за обратна разписка и функция unsubcribe
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.
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
SendRemind=Send reminder by EMails

View File

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

View File

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

View File

@ -112,6 +112,7 @@ ReplenishmentOrdersDesc=This is list of all opened supplier orders
Replenishments=Попълване
NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s)
NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s)
MassMovement=Mass 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".
RecordMovement=Record transfert

View File

@ -116,7 +116,7 @@ LanguageBrowserParameter=Parameter %s
LocalisationDolibarrParameters=Localisation parameters
ClientTZ=Client Time Zone (user)
ClientHour=Client time (user)
OSTZ=Servre OS Time Zone
OSTZ=Server OS Time Zone
PHPTZ=PHP server Time Zone
PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds)
ClientOffsetWithGreenwich=Klijent/browser ofset širina Greenwich-a (sekunde)
@ -233,7 +233,9 @@ OfficialWebSiteFr=French official web site
OfficialWiki=Dolibarr documentation on Wiki
OfficialDemo=Dolibarr online demo
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>
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.
@ -369,9 +371,9 @@ ExtrafieldSelectList = Select from table
ExtrafieldSeparator=Separator
ExtrafieldCheckBox=Checkbox
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
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for exemple : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
@ -472,7 +474,7 @@ Module410Desc=Webcalendar integration
Module500Name=Special expenses (tax, social contributions, dividends)
Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries
Module510Name=Salaries
Module510Desc=Management of empoyees salaries and payments
Module510Desc=Management of employees salaries and payments
Module600Name=Notifications
Module600Desc=Send notifications by email on some Dolibarr business events to third party contacts
Module700Name=Donations
@ -495,15 +497,15 @@ Module2400Name=Agenda
Module2400Desc=Events/tasks and agenda management
Module2500Name=Electronic Content Management
Module2500Desc=Save and share documents
Module2600Name= WebServices
Module2600Desc= Enable the Dolibarr web services server
Module2700Name= Gravatar
Module2700Desc= Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access
Module2600Name=WebServices
Module2600Desc=Enable the Dolibarr web services server
Module2700Name=Gravatar
Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access
Module2800Desc=FTP Client
Module2900Name= GeoIPMaxmind
Module2900Desc= GeoIP Maxmind conversions capabilities
Module3100Name= Skype
Module3100Desc= Dodajte Skype dugme na kartici sljedbenika / trećih strana / kontakata
Module2900Name=GeoIPMaxmind
Module2900Desc=GeoIP Maxmind conversions capabilities
Module3100Name=Skype
Module3100Desc=Dodajte Skype dugme na kartici sljedbenika / trećih strana / kontakata
Module5000Name=Multi-company
Module5000Desc=Allows you to manage multiple companies
Module6000Name=Workflow - Tok rada
@ -681,6 +683,10 @@ Permission401=Read discounts
Permission402=Create/modify discounts
Permission403=Validate discounts
Permission404=Delete discounts
Permission510=Read Salaries
Permission512=Create/modify salaries
Permission514=Delete salaries
Permission517=Export salaries
Permission531=Read services
Permission532=Create/modify services
Permission534=Delete services
@ -999,7 +1005,7 @@ ExtraFieldsSupplierOrders=Dopunske atributa (naloga)
ExtraFieldsSupplierInvoices=Dopunski atributi (fakture)
ExtraFieldsProject=Dopunski atributi (projekti)
ExtraFieldsProjectTask=Dopunski atributi (zadaci)
ExtraFieldHasWrongValue=Attribut %s has a wrong value.
ExtraFieldHasWrongValue=Attribute %s has a wrong value.
AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space
AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space
SendingMailSetup=Setup of sendings by email
@ -1018,13 +1024,13 @@ SuhosinSessionEncrypt=Session storage encrypted by Suhosin
ConditionIsCurrently=Condition is currently %s
TestNotPossibleWithCurrentBrowsers=Automatska detekcija nije moguća
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.
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.
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.
XDebugInstalled=XCache je učitan.
XDebugInstalled=XDebug is loaded.
XCacheInstalled=XCache je učitan.
AddRefInList=Prikaz kupca/dobavljača ref u listi (odaberite listu ili combobox) i većina hyperlink
FieldEdition=Edition of field %s
@ -1073,7 +1079,7 @@ WebCalServer=Server hosting calendar database
WebCalDatabaseName=Database name
WebCalUser=User to access database
WebCalSetupSaved=Webcalendar setup saved successfully.
WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successfull.
WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful.
WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached.
WebCalTestKo2=Connection to server '%s' with user '%s' failed.
WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database.
@ -1119,7 +1125,7 @@ WatermarkOnDraftProposal=Vodeni žig na nacrte komercijalnih prijedloga (ništa,
OrdersSetup=Order management setup
OrdersNumberingModules=Orders numbering models
OrdersModelModule=Order documents models
HideTreadedOrders=Hide the treated or canceled orders in the list
HideTreadedOrders=Hide the treated or cancelled orders in the list
ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order
FreeLegalTextOnOrders=Free text on orders
WatermarkOnDraftOrders=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
LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s)
LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s)
LDAPBindOK=Connect/Authentificate to LDAP server sucessfull (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s)
LDAPUnbindSuccessfull=Disconnect successfull
LDAPUnbindSuccessfull=Disconnect successful
LDAPUnbindFailed=Disconnect failed
LDAPConnectToDNSuccessfull=Connection to DN (%s) successful
LDAPConnectToDNFailed=Connection to DN (%s) failed
@ -1273,7 +1279,7 @@ LDAPFieldSidExample=Example : objectsid
LDAPFieldEndLastSubscription=Date of subscription end
LDAPFieldTitle=Post/Function
LDAPFieldTitleExample=Example: title
LDAPParametersAreStillHardCoded=LDAP parametres are still hardcoded (in contact class)
LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class)
LDAPSetupNotComplete=LDAP setup not complete (go on others tabs)
LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode.
LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts.
@ -1429,7 +1435,7 @@ OptionVATDefault=Standard
OptionVATDebitOption=Option services on Debit
OptionVatDefaultDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on payments for services
OptionVatDebitOptionDesc=VAT is due:<br>- on delivery for goods (we use invoice date)<br>- on invoice (debit) for services
SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to choosed option:
SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option:
OnDelivery=On delivery
OnPayment=On payment
OnInvoice=On invoice
@ -1446,7 +1452,7 @@ AccountancyCodeBuy=Purchase account. code
AgendaSetup=Events and agenda module setup
PasswordTogetVCalExport=Key to authorize export link
PastDelayVCalExport=Do not export event older than
AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionnary -> Type of agenda events)
AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events)
##### ClickToDial #####
ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example.
##### Point Of Sales (CashDesk) #####

View File

@ -89,6 +89,8 @@ ListOfServicesToExpireWithDuration=Lista usluga pred isticanje za %s dana
ListOfServicesToExpireWithDurationNeg=Lista isteklih usluga više od %s dana
ListOfServicesToExpire=Lista usluga pred isticanje
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 #####
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...
SelectImportDataSet=Choose dataset you want to import...
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
SaveExportModel=Save this export 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
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
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
InformationOnSourceFile=Information on source file
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>.
NoCPforUser=Nema te zahtjeva za godišnje odmore.
AddCP=Prijavi se za godišnji odmor
CPErrorSQL=Desila se SQL greška:
Employe=Zaposlenik
DateDebCP=Datum poč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_ZA=Engleski (Južna Afrika)
Language_es_ES=Španski
Language_es_DO=Spanish (Dominican Republic)
Language_es_AR=Španjolski (Argentina)
Language_es_CL=Spanish (Chile)
Language_es_HN=Španjolski (Honduras)
@ -38,6 +39,7 @@ Language_fr_NC=Francuski (Nova Kaledonija)
Language_he_IL=Jevrejski
Language_hr_HR=Hrvatski
Language_hu_HU=Mađarski
Language_id_ID=Indonesian
Language_is_IS=Islandski
Language_it_IT=Italijanski
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
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
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.
MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
SendRemind=Send reminder by EMails

View File

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

View File

@ -28,8 +28,10 @@ ProductsAndServicesStatistics=Statistika proizvoda i usluga
ProductsStatistics=Statistika proizvoda
ProductsOnSell=Dostupni proizvodi
ProductsNotOnSell=Zastarjeli proizvodi
ProductsOnSellAndOnBuy=Products not for sale nor purchase
ServicesOnSell=Dostupne usluge
ServicesNotOnSell=Zastarjele usluge
ServicesOnSellAndOnBuy=Services not for sale nor purchase
InternalRef=Interna referenca
LastRecorded=Last products/services on sell recorded
LastRecordedProductsAndServices=Last %s recorded products/services
@ -70,6 +72,8 @@ PublicPrice=Public price
CurrentPrice=Current price
NewPrice=New 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.
ContractStatus=Contract status
ContractStatusClosed=Closed
@ -179,6 +183,7 @@ ProductIsUsed=This product is used
NewRefForClone=Ref. of new product/service
CustomerPrices=Customers prices
SuppliersPrices=Suppliers prices
SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services)
CustomCode=Customs code
CountryOrigin=Origin country
HiddenIntoCombo=Hidden into select lists
@ -208,6 +213,7 @@ CostPmpHT=Net total VWAP
ProductUsedForBuild=Auto consumed by production
ProductBuilded=Production completed
ProductsMultiPrice=Product multi-price
ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices)
ProductSellByQuarterHT=Products turnover quarterly VWAP
ServiceSellByQuarterHT=Services turnover quarterly VWAP
Quarter1=1st. Quarter

View File

@ -112,6 +112,7 @@ ReplenishmentOrdersDesc=Ovo je lista svih otvorenih narudžbi dobavljača
Replenishments=Nadopune
NbOfProductBeforePeriod=Količina proizvoda %s u zalihi prije odabranog perioda (%s)
NbOfProductAfterPeriod=Količina proizvoda %s u zalihi poslije odabranog perioda (> %s)
MassMovement=Mass movement
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".
RecordMovement=Zapiši transfer

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