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:
commit
df9f153142
18
ChangeLog
18
ChangeLog
@ -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:
|
||||
|
||||
@ -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) ]
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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";
|
||||
|
||||
@ -500,7 +500,7 @@ print "</tr>\n";
|
||||
clearstatcache();
|
||||
|
||||
$var=true;
|
||||
foreach ($dirmodels as $reldir)
|
||||
foreach ($def as $reldir)
|
||||
{
|
||||
foreach (array('','/doc') as $valdir)
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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'))
|
||||
{
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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>';
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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"> </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">';
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>";
|
||||
|
||||
@ -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">';
|
||||
|
||||
@ -784,8 +784,8 @@ if ($id > 0 || ! empty($ref))
|
||||
print '<tr class="liste_total"><td align="left" colspan="8">';
|
||||
if ($sep > 0) print ' '; // 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> </td>';
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
@ -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"> </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> </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>";
|
||||
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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>';
|
||||
}
|
||||
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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.' -->';
|
||||
|
||||
@ -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.'&file='.urlencode($relativepath).'"';
|
||||
$out.= '<a data-ajax="false" href="'.$documenturl.'?modulepart='.$modulepart.'&file='.urlencode($relativepath).'"';
|
||||
$mime=dol_mimetype($relativepath,'',0);
|
||||
if (preg_match('/text/',$mime)) $out.= ' target="_blank"';
|
||||
$out.= ' target="_blank">';
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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">';
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"> </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"> </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>';
|
||||
|
||||
|
||||
@ -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').")";
|
||||
}
|
||||
|
||||
@ -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"> </td>';
|
||||
print '<td align="right"> </td>';
|
||||
print '<td> </td>';
|
||||
print '<td> </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> </td>';
|
||||
print '<td> </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> </td>';
|
||||
print '<td colspan="4"> </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> </td>';
|
||||
print '<td> </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>';
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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']);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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) #####
|
||||
|
||||
@ -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=ممثل مبيعات توقيع العقد
|
||||
|
||||
@ -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=معلومات عن الهدف الحقول
|
||||
|
||||
@ -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=نهاية التاريخ
|
||||
|
||||
@ -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=اليابانية
|
||||
|
||||
@ -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
|
||||
|
||||
@ -551,6 +551,7 @@ MailSentBy=البريد الإلكتروني التي بعث بها
|
||||
TextUsedInTheMessageBody=هيئة البريد الإلكتروني
|
||||
SendAcknowledgementByMail=ارسال Ack. عن طريق البريد الإلكتروني
|
||||
NoEMail=أي بريد إلكتروني
|
||||
NoMobilePhone=No mobile phone
|
||||
Owner=مالك
|
||||
DetectedVersion=اكتشاف نسخة
|
||||
FollowingConstantsWillBeSubstituted=الثوابت التالية ستكون بديلا المقابلة القيمة.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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=Връзка към "%s" сървър на "%s" база данни с успешен потребителски %s.
|
||||
WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful.
|
||||
WebCalTestKo1=Свързване към сървър "%s успее, но база данни" %s "не може да бъде постигнато.
|
||||
WebCalTestKo2=Връзка към сървъра "%s" с потребителя %s "се провали.
|
||||
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) #####
|
||||
|
||||
@ -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=Търговски представител подписване на договора
|
||||
|
||||
@ -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>"%s",</b> за да започне симулация на процеса на импортиране (няма данни ще се промени във вашата база данни, това е само симулация за момента) ...
|
||||
RunSimulateImportFile=Стартиране на симулация внос
|
||||
FieldNeedSource=Това Полета в базата данни изискват данни от файла източник
|
||||
FieldNeedSource=This field requires data from the source file
|
||||
SomeMandatoryFieldHaveNoSource=Някои от задължителните полета не са източник от файл с данни
|
||||
InformationOnSourceFile=Информация за файла източник
|
||||
InformationOnTargetTables=Информация за целевите области
|
||||
|
||||
@ -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=Крайна дата
|
||||
|
||||
@ -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=Японски
|
||||
|
||||
@ -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
|
||||
|
||||
@ -551,6 +551,7 @@ MailSentBy=E-mail, изпратен от
|
||||
TextUsedInTheMessageBody=Email body
|
||||
SendAcknowledgementByMail=Изпращане на уведомление по имейл
|
||||
NoEMail=Няма имейл
|
||||
NoMobilePhone=No mobile phone
|
||||
Owner=Собственик
|
||||
DetectedVersion=Открита версия
|
||||
FollowingConstantsWillBeSubstituted=Следните константи ще бъдат заменени със съответната стойност.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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) #####
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
Loading…
Reference in New Issue
Block a user