2
0
forked from Wavyzz/dolibarr

Compare commits

...

47 Commits
3.2.3 ... 3.2

Author SHA1 Message Date
Laurent Destailleur
268a4b67e9 Fix: 3.2 was ok with PHP 5.3 only, not 5.4 2013-12-09 02:11:39 +01:00
Laurent Destailleur
206ded3f2b Backport travis script into 3.2 2013-12-09 02:05:52 +01:00
Laurent Destailleur
94c2b504cb Update ignore files 2013-12-09 01:44:00 +01:00
Laurent Destailleur
0e7b861086 Merge pull request #1044 from FHenry/3.2
Fix [ bug #934 ] Impossible de créer une facture prédéfinie (pgsql)
2013-06-13 15:25:28 -07:00
Florian Henry
e4e27a0071 Fix [ bug #934 ] Impossible de créer une facture prédéfinie (pgsql) 2013-06-13 15:03:20 +02:00
Laurent Destailleur
29841f2606 Fix: param lang not provided to price function 2013-06-08 15:20:06 +02:00
Laurent Destailleur
6c5517b757 Fix: CSS 2013-06-05 20:11:07 +02:00
Laurent Destailleur
0cac22376a Merge pull request #981 from FHenry/3.2
Fix search product with multilangue
2013-05-25 01:59:38 -07:00
Florian Henry
cd68538d2d Fix search product with multilangue 2013-05-24 22:43:07 +02:00
Laurent Destailleur
8bd5327d02 Update nl 2013-04-24 13:56:05 +02:00
Laurent Destailleur
9bf77eac4c Fix: Korting 2013-04-22 13:57:16 +02:00
Laurent Destailleur
ffe47141ff Merge pull request #799 from FHenry/3.2
Fix Dutch (nl_NL) translation
2013-04-04 02:34:37 -07:00
fhenry
b0eec3ef3a Fix Dutch (nl_NL) translation 2013-04-03 11:51:40 +02:00
Laurent Destailleur
c74f68d14a Fix: dol_is_dir may not be loaded, so call fails 2013-03-08 01:52:56 +01:00
Laurent Destailleur
970b332bd8 Merge pull request #695 from FHenry/3.2
Fix [ bug #737 ]
2013-02-26 11:03:05 -08:00
fhenry
d7485f5823 Fix [ bug #737 ] 2013-02-26 12:11:34 +01:00
Laurent Destailleur
24b002fbe6 Revert "Fix: only once superadmin and an admin can not delete/modify a superadmin"
This reverts commit 0216bdd311.
2013-02-11 22:52:26 +01:00
Laurent Destailleur
5cd329a320 Merge pull request #643 from FHenry/3.2
Fix bug [ bug #709 ]
2013-02-10 17:42:24 -08:00
fhenry
63c5f3433a Fix bug [ bug #709 ] 2013-02-10 20:49:52 +01:00
Regis Houssin
93dc6b5fc0 Fix: use the users entity 2013-01-23 15:47:26 +01:00
Regis Houssin
0216bdd311 Fix: only once superadmin and an admin can not delete/modify a
superadmin
2013-01-23 15:24:41 +01:00
Regis Houssin
ac6049f0b3 Fix: only once superadmin if no multicompany setup 2013-01-23 14:58:14 +01:00
Regis Houssin
8b129f1af0 Fix: missing files library 2013-01-23 11:23:38 +01:00
Regis Houssin
2cabd97da8 Fix: prepare maintenance release 3.2.4 2013-01-22 22:21:28 +01:00
Regis Houssin
27a1e11ea5 Fix: prepare 3.2.4 2013-01-22 21:33:03 +01:00
Regis Houssin
9ecd566580 Fix: broken features with special_code and externals modules 2013-01-22 21:32:06 +01:00
Laurent Destailleur
ac1cfd3d23 Fix: [ bug #666 ] Fatal error when sending intervention card 2013-01-19 15:12:18 +01:00
Laurent Destailleur
72dbeadc49 Merge branch '3.2' of https://github.com/Dolibarr/dolibarr.git into 3.2 2013-01-17 17:45:41 +01:00
Laurent Destailleur
8fec37d5ad Fix: error set on non object 2013-01-17 14:36:08 +01:00
Laurent Destailleur
b826a6b559 Merge pull request #612 from FHenry/3.2
Fix Bug [ bug #681 ] Can't modify a line a business proposal
2013-01-15 14:13:19 -08:00
fhenry
085dee1ab1 Fix Bug [ bug #692 ] Can't search for suppliers invoice 2013-01-15 23:00:17 +01:00
fhenry
5e9a9a48f3 Fix Bug [ bug #681 ] Can't modify a line a business proposal 2013-01-15 22:45:18 +01:00
Laurent Destailleur
ec17511e01 Fix: not object error with option SERVICE_ARE_ECOMMERCE_200238EC 2013-01-13 18:53:52 +01:00
Laurent Destailleur
99c461b9d1 Merge branch '3.2' of git@github.com:Dolibarr/dolibarr.git into 3.2 2013-01-06 13:17:17 +01:00
Laurent Destailleur
4a2c38a1c1 Fix: Lost button 2013-01-06 13:16:25 +01:00
Laurent Destailleur
585d1b0587 Merge pull request #571 from KreizIT/3.2
Security fix emailing read and unsubscribe
2013-01-04 08:16:11 -08:00
Cedric GROSS
b4ad2887a0 Security fix emailing read and unsubscribe
unsubscribe can lead to email disclosure
2013-01-04 13:01:48 +01:00
Laurent Destailleur
6aebf470f6 Merge pull request #558 from FHenry/3.2
Fix [ bug #658 ] Seacrh on bank do not work for description
2012-12-29 08:32:37 -08:00
fhenry
24721eb3e8 Fix [ bug #658 ] Seacrh on bank do not work for description 2012-12-29 15:59:14 +01:00
Laurent Destailleur
4a74ebc1f9 Fix: [ bug #651 ] FusionPDF created files cannot be deleted 2012-12-27 14:46:50 +01:00
Laurent Destailleur
80bbeaa9b5 Fix: Migration of payment id not complete 2012-12-27 01:22:31 +01:00
Laurent Destailleur
1038e86616 Fix: Correct recipient into rouget template. 2012-12-13 01:21:37 +01:00
Laurent Destailleur
217b4ea15f Fix: Update changelog 2012-12-13 01:20:24 +01:00
Laurent Destailleur
0b0a30d362 Fix: Bad position of field with non A4 pages 2012-12-12 20:59:40 +01:00
Laurent Destailleur
19e0c66efc Fix: Using bad root url. 2012-12-12 14:48:31 +01:00
Laurent Destailleur
48eec88cba Fix: force redirect to https could not work for some environments
Conflicts:
	htdocs/main.inc.php
2012-12-12 02:40:01 +01:00
Laurent Destailleur
f8f3b2dc39 Fix: Bad url forging 2012-12-12 00:54:36 +01:00
45 changed files with 456 additions and 240 deletions

83
.travis.yml Normal file
View File

@@ -0,0 +1,83 @@
# This script is used by Travis CI to run automatically Continuous test integration
# from Dolibarr GitHub repository.
# Command run is phpunit
# For syntax, see http://about.travis-ci.org/docs/user/languages/php/
services:
- memcached # will start memcached
# This will tell travis to run phpunit
language: php
php:
- "5.3"
env:
- DB=mysql
# - DB=postgres
before_script:
- echo Start travis
- echo Current dir is `pwd`
- echo Home dir is `echo ~`
- echo Update composer
# - ~/.phpenv/versions/$(phpenv version-name)/bin/composer.phar self-update
- echo Create dir $(pwd)/htdocs/documents
- sudo mkdir -p $(pwd)/htdocs/documents/admin/temp;
- sudo touch $(pwd)/htdocs/documents/dolibarr.log;
- sudo chmod a+rwx /home; sudo chmod a+rwx /home/travis; sudo chmod -R a+rwx /home/travis/build;
- sudo chmod -R a+rwx $(pwd);
- sudo chown -R www-data:travis $(pwd)/htdocs/documents;
- find $(pwd)/htdocs/documents -type d -exec ls -alt {} \;
- echo Edit php.ini file
- echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- echo "extension = apc.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
# - echo "extension = memcache.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- echo "zend_extension_ts = xdebug.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- cat ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- echo Init database
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS myapp_test;' -U postgres; fi"
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'DROP DATABASE IF EXISTS myapp_test;'; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.2.0.sql; fi"
- echo Create config file htdocs/conf/conf.php
- echo '<?php ' > htdocs/conf/conf.php
- sh -c "if [ '$DB' = 'pgsql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> htdocs/conf/conf.php; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then echo '$'dolibarr_main_db_type=\'mysqli\'';' >> htdocs/conf/conf.php; fi"
- echo '$'dolibarr_main_url_root=\'http://localhost/\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_document_root=\'$(pwd)/htdocs\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_data_root=\'$(pwd)/htdocs/documents\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_db_host=\'localhost\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_db_name=\'myapp_test\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_db_user=\'travis\'';' >> htdocs/conf/conf.php
- echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> htdocs/conf/conf.php
- echo '?>' >> htdocs/conf/conf.php
- echo Show conf.php content
- cat htdocs/conf/conf.php
- echo Install apache server
- sudo apt-get update > /dev/null
- sudo apt-get install -y --force-yes apache2 libapache2-mod-php5 php5-curl php5-mysql php5-pgsql php5-intl
- sudo sed -i -e "s,/var/www,$(pwd)/htdocs,g" /etc/apache2/sites-available/default
- echo Show default virtual host
- sudo cat /etc/apache2/sites-available/default
- sudo /etc/init.d/apache2 restart
- wget http://localhost/
- cat index.html
# Omitting "script:" will default to phpunit
# use the $DB env variable to determine the phpunit.xml to use
#script: phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml --coverage-text test/phpunit/AllTests.php
#script: phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml --coverage-text test/phpunit/BuildDocTest.php
#script: phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/WebservicesOtherTest.php
script:
# - phpcs -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/documents/,/includes/,/test/report/ .
- phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php
after_script:
# - echo Output dolibarr log file; cat $(pwd)/htdocs/documents/dolibarr.log
- echo Output apache log file; sudo cat /var/log/apache2/error.log
- echo End travis

View File

@@ -3,6 +3,24 @@ English Dolibarr ChangeLog
--------------------------------------------------------------
***** ChangeLog for 3.2.3 compared to 3.2.2 *****
- Fix: Some permission into agenda module.
- Fix: Generation of PDF was not using correct font for some languages.
- Fix some translations.
- Fix: [ bug #607 ] Nom de société avec guillemets.
- Fix: Option MAIN_MAIL_SENDMAIL_FORCE_BA and MAIN_FIX_BUGGED_MTA was not
complete.
- Fix: comaptiblity with multicompany module.
- Fix: Bad label when validating/paying an invoice from POS module.
- Fix: Correct recipient into rouget template.
- Fix: A lot of fix into PDF pagebreak management.
- Update VAT for some countries.
- Firstname was missing when sending email from file list.
- Added en_SA language.
***** ChangeLog for 3.2.2 compared to 3.2.1 *****
- Fix: Modify spanish VAT to new rates.

View File

@@ -10,7 +10,7 @@ use Cwd;
$PROJECT="dolibarr";
$MAJOR="3";
$MINOR="2";
$BUILD="3"; # Mettre x pour release, x-dev pour dev, x-beta pour beta, x-rc pour release candidate
$BUILD="4"; # Mettre x pour release, x-dev pour dev, x-beta pour beta, x-rc pour release candidate
$RPMSUBVERSION="auto"; # auto use value found into BUILD
@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages

11
htdocs/.gitignore vendored
View File

@@ -1,2 +1,11 @@
/test.php
/custom*
/custom*
/extensions*
/nltechno*
/bootstrap*
/google*
/multicompany*
/numberingpack*
/ovh*
/pos
/ultimatepdf*

View File

@@ -126,15 +126,22 @@ clearstatcache();
//if ($mesg) print "<br>$mesg<br>";
print "<br>";
// Define $urlwithroot
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
// Show message
$message='';
$urlvcal='<a href="'.DOL_MAIN_URL_ROOT.'/public/agenda/agendaexport.php?format=vcal&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'...').'" target="_blank">'.DOL_MAIN_URL_ROOT.'/public/agenda/agendaexport.php?format=vcal&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'KEYNOTDEFINED').'</a>';
$urlvcal='<a href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=vcal&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'...').'" target="_blank">'.$urlwithroot.'/public/agenda/agendaexport.php?format=vcal&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'KEYNOTDEFINED').'</a>';
$message.=img_picto('','object_globe.png').' '.$langs->trans("WebCalUrlForVCalExport",'vcal',$urlvcal);
$message.='<br>';
$urlical='<a href="'.DOL_MAIN_URL_ROOT.'/public/agenda/agendaexport.php?format=ical&type=event&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'...').'" target="_blank">'.DOL_MAIN_URL_ROOT.'/public/agenda/agendaexport.php?format=ical&type=event&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'KEYNOTDEFINED').'</a>';
$urlical='<a href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=ical&type=event&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'...').'" target="_blank">'.$urlwithroot.'/public/agenda/agendaexport.php?format=ical&type=event&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'KEYNOTDEFINED').'</a>';
$message.=img_picto('','object_globe.png').' '.$langs->trans("WebCalUrlForVCalExport",'ical/ics',$urlical);
$message.='<br>';
$urlrss='<a href="'.DOL_MAIN_URL_ROOT.'/public/agenda/agendaexport.php?format=rss&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'...').'" target="_blank">'.DOL_MAIN_URL_ROOT.'/public/agenda/agendaexport.php?format=rss&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'KEYNOTDEFINED').'</a>';
$urlrss='<a href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=rss&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'...').'" target="_blank">'.$urlwithroot.'/public/agenda/agendaexport.php?format=rss&exportkey='.($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY?urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY):'KEYNOTDEFINED').'</a>';
$message.=img_picto('','object_globe.png').' '.$langs->trans("WebCalUrlForVCalExport",'rss',$urlrss);
$message.='<br>';
$message.='<br>';

View File

@@ -355,7 +355,6 @@ foreach ($dirmodels as $reldir)
// Info
$htmltooltip='';
$htmltooltip.=''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
$facture->type=0;
$nextval=$module->getNextValue($mysoc,$commande);
if ("$nextval" != $langs->trans("NotAvailable")) // Keep " on nextval
{

View File

@@ -878,8 +878,11 @@ class ActionComm extends CommonObject
$event['location']=$obj->location;
$event['transparency']='TRANSPARENT'; // OPAQUE (busy) or TRANSPARENT (not busy)
$event['category']=$obj->libelle; // libelle type action
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',$dolibarr_main_url_root);
$url=$urlwithouturlroot.DOL_URL_ROOT.'/comm/action/fiche.php?id='.$obj->id;
// Define $urlwithroot
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
$url=$urlwithroot.'/comm/action/fiche.php?id='.$obj->id;
$event['url']=$url;
$event['created']=$this->db->jdate($obj->datec);
$event['modified']=$this->db->jdate($obj->datem);

View File

@@ -142,6 +142,7 @@ if ($socid) $param.="&socid=".$socid;
if ($showbirthday) $param.="&showbirthday=1";
if ($pid) $param.="&projectid=".$pid;
if ($_GET["type"]) $param.="&type=".$_REQUEST["type"];
if ($actioncode) $param.="&actioncode=".$actioncode;
$sql = "SELECT s.nom as societe, s.rowid as socid, s.client,";
$sql.= " a.id, a.datep as dp, a.datep2 as dp2,";

View File

@@ -2710,7 +2710,6 @@ class PropaleLigne
}
$sql.= " , marge_tx='".$this->marge_tx."'";
$sql.= " , marque_tx='".$this->marque_tx."'";
$sql.= " , info_bits=".$this->info_bits;
if (strlen($this->special_code)) $sql.= " , special_code=".$this->special_code;
$sql.= " , fk_parent_line=".($this->fk_parent_line>0?$this->fk_parent_line:"null");
if (! empty($this->rang)) $sql.= ", rang=".$this->rang;

View File

@@ -2108,9 +2108,10 @@ class Commande extends CommonObject
* @param int $type Type of line (0=product, 1=service)
* @param int $fk_parent_line Parent line id
* @param int $skip_update_total Skip update of total
* @param int $special_code Special code
* @return int < 0 if KO, > 0 if OK
*/
function updateline($rowid, $desc, $pu, $qty, $remise_percent, $txtva, $txlocaltax1=0,$txlocaltax2=0, $price_base_type='HT', $info_bits=0, $date_start='', $date_end='', $type=0, $fk_parent_line=0, $skip_update_total=0)
function updateline($rowid, $desc, $pu, $qty, $remise_percent, $txtva, $txlocaltax1=0,$txlocaltax2=0, $price_base_type='HT', $info_bits=0, $date_start='', $date_end='', $type=0, $fk_parent_line=0, $skip_update_total=0, $special_code=0)
{
global $conf;
@@ -2129,6 +2130,7 @@ class Commande extends CommonObject
if (empty($txlocaltax2)) $txlocaltax2=0;
if (empty($remise)) $remise=0;
if (empty($remise_percent)) $remise_percent=0;
if (empty($special_code) || $special_code == 3) $special_code=0;
$remise_percent=price2num($remise_percent);
$qty=price2num($qty);
$pu = price2num($pu);
@@ -2181,7 +2183,7 @@ class Commande extends CommonObject
$this->line->remise_percent=$remise_percent;
$this->line->subprice=$subprice;
$this->line->info_bits=$info_bits;
$this->line->special_code=0; // To remove special_code=3 coming from proposals copy
$this->line->special_code=$special_code;
$this->line->total_ht=$total_ht;
$this->line->total_tva=$total_tva;
$this->line->total_localtax1=$total_localtax1;

View File

@@ -117,11 +117,6 @@ if (is_numeric($credit)) {
$si++;
$sqlw[$si] .= " b.amount = " . $credit;
}
// Search criteria description
if ($description) {
$si++;
$sqlw[$si] .= " b.label like '%" . $description . "%'";
}
// Other search criteria
for ($i = 1 ; $i <= $si; $i++) {
$sql .= " AND " . $sqlw[$i];
@@ -195,75 +190,87 @@ if ($resql)
{
$objp = $db->fetch_object($resql);
$var=!$var;
print "<tr $bc[$var]>";
// Ref
print '<td align="left" nowrap="nowrap">';
print "<a href=\"ligne.php?rowid=".$objp->rowid.'">'.img_object($langs->trans("ShowPayment"),"payment").' '.$objp->rowid."</a> &nbsp; ";
print '</td>';
// Date ope
print '<td align="center" nowrap="nowrap">'.dol_print_date($db->jdate($objp->do),"day")."</td>\n";
// Date value
print '<td align="center" nowrap="nowrap">'.dol_print_date($db->jdate($objp->dv),"day")."</td>\n";
// Payment type
print "<td align=\"center\">";
$labeltype=($langs->trans("PaymentTypeShort".$objp->fk_type)!="PaymentTypeShort".$objp->fk_type)?$langs->trans("PaymentTypeShort".$objp->fk_type):$langs->getLabelFromKey($db,$objp->fk_type,'c_paiement','code','libelle');
if ($labeltype == 'SOLD') print '&nbsp;'; //$langs->trans("InitialBankBalance");
else print $labeltype;
print "</td>\n";
// Num
print '<td nowrap>'.($objp->num_chq?$objp->num_chq:"")."</td>\n";
// Description
print "<td>";
print "<a href=\"ligne.php?rowid=".$objp->rowid."&amp;account=".$objp->fk_account."\">";
$reg=array();
preg_match('/\((.+)\)/i',$objp->label,$reg); // Si texte entoure de parenthee on tente recherche de traduction
if ($reg[1] && $langs->trans($reg[1])!=$reg[1]) print $langs->trans($reg[1]);
else print dol_trunc($objp->label,40);
print "</a>&nbsp;";
print '</td>';
// Third party
print "<td>";
if ($objp->url_id)
{
$companystatic->id=$objp->url_id;
$companystatic->nom=$objp->labelurl;
print $companystatic->getNomUrl(1);
$printline=false;
//Search Description
if ($description) {
preg_match('/\((.+)\)/i',$objp->label,$reg); // Si texte entoure de parenthee on tente recherche de traduction
if ($reg[1]) {
if ($langs->transnoentities($reg[1])==$description) {
$printline=true;
}
}elseif ($objp->label==$description) {$printline=true;}
}else {$printline=true;}
if ($printline) {
$var=!$var;
print "<tr $bc[$var]>";
// Ref
print '<td align="left" nowrap="nowrap">';
print "<a href=\"ligne.php?rowid=".$objp->rowid.'">'.img_object($langs->trans("ShowPayment"),"payment").' '.$objp->rowid."</a> &nbsp; ";
print '</td>';
// Date ope
print '<td align="center" nowrap="nowrap">'.dol_print_date($db->jdate($objp->do),"day")."</td>\n";
// Date value
print '<td align="center" nowrap="nowrap">'.dol_print_date($db->jdate($objp->dv),"day")."</td>\n";
// Payment type
print "<td align=\"center\">";
$labeltype=($langs->trans("PaymentTypeShort".$objp->fk_type)!="PaymentTypeShort".$objp->fk_type)?$langs->trans("PaymentTypeShort".$objp->fk_type):$langs->getLabelFromKey($db,$objp->fk_type,'c_paiement','code','libelle');
if ($labeltype == 'SOLD') print '&nbsp;'; //$langs->trans("InitialBankBalance");
else print $labeltype;
print "</td>\n";
// Num
print '<td nowrap>'.($objp->num_chq?$objp->num_chq:"")."</td>\n";
// Description
print "<td>";
print "<a href=\"ligne.php?rowid=".$objp->rowid."&amp;account=".$objp->fk_account."\">";
$reg=array();
preg_match('/\((.+)\)/i',$objp->label,$reg); // Si texte entoure de parenthee on tente recherche de traduction
if ($reg[1] && $langs->trans($reg[1])!=$reg[1]) print $langs->trans($reg[1]);
else print dol_trunc($objp->label,40);
print "</a>&nbsp;";
print '</td>';
// Third party
print "<td>";
if ($objp->url_id)
{
$companystatic->id=$objp->url_id;
$companystatic->nom=$objp->labelurl;
print $companystatic->getNomUrl(1);
}
else
{
print '&nbsp;';
}
print '</td>';
// Debit/Credit
if ($objp->amount < 0)
{
print "<td align=\"right\">".price($objp->amount * -1)."</td><td>&nbsp;</td>\n";
}
else
{
print "<td>&nbsp;</td><td align=\"right\">".price($objp->amount)."</td>\n";
}
// Bank account
print '<td align="left" nowrap="nowrap">';
$bankaccountstatic->id=$objp->bankid;
$bankaccountstatic->label=$objp->bankref;
print $bankaccountstatic->getNomUrl(1);
print "</td>\n";
print "</tr>";
}
else
{
print '&nbsp;';
}
print '</td>';
// Debit/Credit
if ($objp->amount < 0)
{
print "<td align=\"right\">".price($objp->amount * -1)."</td><td>&nbsp;</td>\n";
}
else
{
print "<td>&nbsp;</td><td align=\"right\">".price($objp->amount)."</td>\n";
}
// Bank account
print '<td align="left" nowrap="nowrap">';
$bankaccountstatic->id=$objp->bankid;
$bankaccountstatic->label=$objp->bankref;
print $bankaccountstatic->getNomUrl(1);
print "</td>\n";
print "</tr>";
$i++;
}

View File

@@ -2911,7 +2911,7 @@ else
{
print '<div class="tabsAction">';
// Editer une facture deja validee, sans paiement effectue et pas exporte en compta
// Modify a validated invoice with no payments and not already exported into accountancy
if ($object->statut == 1)
{
// On verifie si les lignes de factures ont ete exportees en compta et/ou ventilees

View File

@@ -126,8 +126,8 @@ class FactureRec extends Facture
$sql.= ", '".$facsrc->socid."'";
$sql.= ", ".$conf->entity;
$sql.= ", ".$this->db->idate(mktime());
$sql.= ", '".$facsrc->amount."'";
$sql.= ", '".$facsrc->remise."'";
$sql.= ", ".(!empty($facsrc->amount)?$facsrc->amount:'0');
$sql.= ", ".(!empty($facsrc->remise)?$this->remise:'0');
$sql.= ", '".$this->db->escape($this->note)."'";
$sql.= ", '".$user->id."'";
$sql.= ", ".($facsrc->fk_project?"'".$facsrc->fk_project."'":"null");

View File

@@ -2033,6 +2033,7 @@ class Facture extends CommonObject
// Clean parameters
if (empty($qty)) $qty=0;
if (empty($fk_parent_line) || $fk_parent_line < 0) $fk_parent_line=0;
if (empty($special_code) || $special_code == 3) $special_code=0;
$remise_percent = price2num($remise_percent);
$qty = price2num($qty);

View File

@@ -128,6 +128,20 @@ if ($action == "builddoc" && $user->rights->facture->lire)
}
}
// Remove file
if ($action == 'remove_file')
{
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$langs->load("other");
$upload_dir = $diroutputpdf;
$file = $upload_dir . '/' . GETPOST('file');
$ret=dol_delete_file($file,0,0,0,'');
if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
$action='';
}
/*

View File

@@ -140,7 +140,7 @@ if ($action == 'setnum' && ! empty($_POST['num_paiement']))
}
}
if ($action == 'setdate' && ! empty($_POST['datepday']))
if ($action == 'setdatep' && ! empty($_POST['datepday']))
{
$object->fetch($id);
$datepaye = dol_mktime(12, 0, 0, $_POST['datepmonth'], $_POST['datepday'], $_POST['datepyear']);

View File

@@ -205,11 +205,14 @@ $dolibarr_main_authentication='dolibarr';
//##################
// dolibarr_main_force_https
// This parameter allows to force the HTTPS mode.
// This parameter allows to force the HTTPS mode.
// 0 = No forced redirect
// 1 = Force redirect to https until SCRIPT_URI start with https
// 2 = Force redirect to https until SERVER["HTTPS"] is 'on'
// Warning: If you enable this parameter, your web server must be configured
// to respond URL with https protocol.
// Default value: 0
// Possible values: 0 or 1
// Possible values: 0, 1 or 2
// Examples:
// $dolibarr_main_force_https='0';
//
@@ -292,4 +295,4 @@ $dolibarr_main_prod='0';
// Examples:
// $multicompany_transverse_mode='1';
?>
?>

View File

@@ -2991,19 +2991,19 @@ class Form
//print "name=$name, selectedrate=$selectedrate, seller=".$societe_vendeuse->country_code." buyer=".$societe_acheteuse->country_code." buyer is company=".$societe_acheteuse->isACompany()." idprod=$idprod, info_bits=$info_bits type=$type";
//exit;
// Get list of all VAT rates to show
// Define list of countries to use to search VAT rates to show
// First we defined code_pays to use to find list
if (is_object($societe_vendeuse))
{
$code_pays="'".$societe_vendeuse->country_code."'";
}
else
{
{
$code_pays="'".$mysoc->country_code."'"; // Pour compatibilite ascendente
}
if (! empty($conf->global->SERVICE_ARE_ECOMMERCE_200238EC)) // If option to have vat for end customer for services is on
{
if (! $societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC() && ! $societe_acheteuse->isACompany())
if (! $societe_vendeuse->isInEEC() && (! is_object($societe_acheteuse) || ($societe_acheteuse->isInEEC() && ! $societe_acheteuse->isACompany())))
{
// We also add the buyer
if (is_numeric($type))

View File

@@ -172,26 +172,30 @@ class Notify
$message.= "\n";
$message.= $texte;
// Add link
$link='';
switch($objet_type)
{
case 'ficheinter':
$link=DOL_URL_ROOT.'/fichinter/fiche.php?id='.$objet_id;
$link='/fichinter/fiche.php?id='.$objet_id;
break;
case 'propal':
$link=DOL_URL_ROOT.'/comm/propal.php?id='.$objet_id;
$link='/comm/propal.php?id='.$objet_id;
break;
case 'facture':
$link=DOL_URL_ROOT.'/compta/facture.php?facid='.$objet_id;
$link='/compta/facture.php?facid='.$objet_id;
break;
case 'order':
$link=DOL_URL_ROOT.'/commande/fiche.php?facid='.$objet_id;
$link='/commande/fiche.php?facid='.$objet_id;
break;
case 'order_supplier':
$link=DOL_URL_ROOT.'/fourn/commande/fiche.php?facid='.$objet_id;
$link='/fourn/commande/fiche.php?facid='.$objet_id;
break;
}
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',$dolibarr_main_url_root);
if ($link) $message.="\n".$urlwithouturlroot.$link;
// Define $urlwithroot
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
if ($link) $message.="\n".$urlwithroot.$link;
$filename = basename($file);

View File

@@ -399,7 +399,7 @@ class Translate
if ($tmparray2[0]==$key) { $str=$tmparray2[1]; break; }
}
}
if (! preg_match('/^Format/',$key)) $str=sprintf($str,$param1,$param2,$param3,$param4); // Replace %s and %d except for FormatXXX strings.
if ($maxsize) $str=dol_trunc($str,$maxsize);
@@ -460,7 +460,7 @@ class Translate
function transnoentitiesnoconv($key, $param1='', $param2='', $param3='', $param4='')
{
global $conf;
if (! empty($this->tab_translate[$key])) // Translation is available
{
$str=$this->tab_translate[$key];
@@ -476,7 +476,7 @@ class Translate
if ($tmparray2[0]==$key) { $str=$tmparray2[1]; break; }
}
}
if (! preg_match('/^Format/',$key)) $str=sprintf($str,$param1,$param2,$param3,$param4); // Replace %s and %d except for FormatXXX strings.
}
else
@@ -616,7 +616,7 @@ class Translate
$newdir=dol_osencode($dir);
// Check if directory exists
if (! dol_is_dir($dir)) continue;
if (! is_dir($newdir)) continue; // We must not use dol_is_dir here, function may not be loaded
$fonc='numberwords';
if (file_exists($newdir.'/functions_'.$fonc.'.lib.php'))

View File

@@ -1069,7 +1069,7 @@ function pdf_getlineupexcltax($object,$i,$outputlangs,$hidedetails=0,$hookmanage
}
else
{
if (empty($hidedetails) || $hidedetails > 1) return price($sign * $object->lines[$i]->subprice);
if (empty($hidedetails) || $hidedetails > 1) return price($sign * $object->lines[$i]->subprice, 0, $outputlangs);
}
}
@@ -1095,7 +1095,7 @@ function pdf_getlineupwithtax($object,$i,$outputlangs,$hidedetails=0)
}
else
{
if (empty($hidedetails) || $hidedetails > 1) return price(($object->lines[$i]->subprice) + ($object->lines[$i]->subprice)*($object->lines[$i]->tva_tx)/100);
if (empty($hidedetails) || $hidedetails > 1) return price(($object->lines[$i]->subprice) + ($object->lines[$i]->subprice)*($object->lines[$i]->tva_tx)/100, 0, $outputlangs);
}
}
@@ -1279,7 +1279,7 @@ function pdf_getlinetotalexcltax($object,$i,$outputlangs,$hidedetails=0,$hookman
}
else
{
if (empty($hidedetails) || $hidedetails > 1) return price($sign * $object->lines[$i]->total_ht);
if (empty($hidedetails) || $hidedetails > 1) return price($sign * $object->lines[$i]->total_ht, 0, $outputlangs);
}
}
}
@@ -1313,7 +1313,7 @@ function pdf_getlinetotalwithtax($object,$i,$outputlangs,$hidedetails=0)
else
{
if (empty($hidedetails) || $hidedetails > 1) return
price(($object->lines[$i]->total_ht) + ($object->lines[$i]->total_ht)*($object->lines[$i]->tva_tx)/100);
price(($object->lines[$i]->total_ht) + ($object->lines[$i]->total_ht)*($object->lines[$i]->tva_tx)/100, 0, $outputlangs);
}
}
}

View File

@@ -322,8 +322,11 @@ function build_rssfile($format,$title,$desc,$events_array,$outputfile,$filter=''
'<lastBuildDate>'.$date.'</lastBuildDate>'."\n".
'<generator>Dolibarr</generator>'."\n";
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',$dolibarr_main_url_root);
$url=$urlwithouturlroot.DOL_URL_ROOT.'/public/agenda/agendaexport.php?format=rss&exportkey='.urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY);
// Define $urlwithroot
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
$url=$urlwithroot.'/public/agenda/agendaexport.php?format=rss&exportkey='.urlencode($conf->global->MAIN_AGENDA_XCAL_EXPORTKEY);
$form.='<link><![CDATA['.$url.']]></link>'."\n";
//print $form;
@@ -517,4 +520,4 @@ function quotedPrintDecode($str)
return trim($out);
}
?>
?>

View File

@@ -62,6 +62,19 @@ class pdf_paiement
$this->line_per_page = 25;
$this->tab_height = 230; //$this->line_height * $this->line_per_page;
$this->posxdate=$this->marge_gauche+2;
$this->posxpaymenttype=42;
$this->posxinvoice=82;
$this->posxinvoiceamount=122;
$this->posxpaymentamount=162;
if ($this->page_largeur < 210) // To work with US executive format
{
$this->posxpaymenttype-=10;
$this->posxinvoice-=0;
$this->posxinvoiceamount-=10;
$this->posxpaymentamount-=20;
}
}
@@ -104,6 +117,7 @@ class pdf_paiement
$file = $dir . "/payments-".$year."-".$month.".pdf";
$pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
if (class_exists('TCPDF'))
{
@@ -143,7 +157,7 @@ class pdf_paiement
$var=!$var;
$lines[$i][0] = $objp->facnumber;
$lines[$i][1] = dol_print_date($this->db->jdate($objp->dp),"%d %B %Y",false,$outputlangs,true);
$lines[$i][1] = dol_print_date($this->db->jdate($objp->dp),"day",false,$outputlangs,true);
$lines[$i][2] = $langs->transnoentities("PaymentTypeShort".$objp->paiement_code);
$lines[$i][3] = $objp->num_paiement;
$lines[$i][4] = price($objp->paiement_amount);
@@ -223,44 +237,46 @@ class pdf_paiement
// Do not add the BACKGROUND as this is a report
//pdf_pagehead($pdf,$outputlangs,$this->page_hauteur);
$default_font_size = pdf_getPDFFontSize($outputlangs);
$title=$outputlangs->transnoentities("ListOfCustomerPayments");
$title.=' - '.dol_print_date(dol_mktime(0,0,0,$this->month,1,$this->year),"%B %Y",false,$outputlangs,true);
$pdf->SetFont('','B',12);
$pdf->SetXY(10,10);
$pdf->MultiCell(200, 2, $title, 0, 'C');
$pdf->SetFont('','B',$default_font_size + 1);
$pdf->SetXY($this->marge_gauche,10);
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->marge_gauche, 2, $title, 0, 'C');
$pdf->SetFont('','',10);
$pdf->SetFont('','',$default_font_size);
$pdf->SetXY(11, 16);
$pdf->SetXY($this->posxdate, 16);
$pdf->MultiCell(80, 2, $outputlangs->transnoentities("DateBuild")." : ".dol_print_date(time(),"day",false,$outputlangs,true), 0, 'L');
$pdf->SetXY(11, 22);
$pdf->SetXY($this->posxdate, 22);
$pdf->MultiCell(80, 2, $outputlangs->transnoentities("Page")." : ".$page, 0, 'L');
// Title line
$pdf->SetXY($this->posxdate, $this->tab_top+2);
$pdf->MultiCell($this->posxpaymenttype - $this->posxdate, 2, 'Date');
$pdf->SetXY(11, $this->tab_top+2);
$pdf->MultiCell(30, 2, 'Date');
$pdf->line($this->posxpaymenttype - 1, $this->tab_top, $this->posxpaymenttype - 1, $this->tab_top + $this->tab_height + 10);
$pdf->SetXY($this->posxpaymenttype, $this->tab_top+2);
$pdf->MultiCell($this->posxinvoice - $this->posxpaymenttype, 2, $outputlangs->transnoentities("PaymentMode"), 0, 'L');
$pdf->line(40, $this->tab_top, 40, $this->tab_top + $this->tab_height + 10);
$pdf->SetXY(42, $this->tab_top+2);
$pdf->MultiCell(40, 2, $outputlangs->transnoentities("PaymentMode"), 0, 'L');
$pdf->line($this->posxinvoice - 1, $this->tab_top, $this->posxinvoice - 1, $this->tab_top + $this->tab_height + 10);
$pdf->SetXY($this->posxinvoice, $this->tab_top+2);
$pdf->MultiCell($this->posxinvoiceamount - $this->posxinvoice, 2, $outputlangs->transnoentities("Invoice"), 0, 'L');
$pdf->line(80, $this->tab_top, 80, $this->tab_top + $this->tab_height + 10);
$pdf->SetXY(82, $this->tab_top+2);
$pdf->MultiCell(40, 2, $outputlangs->transnoentities("Invoice"), 0, 'L');
$pdf->line($this->posxinvoiceamount - 1, $this->tab_top, $this->posxinvoiceamount - 1, $this->tab_top + $this->tab_height + 10);
$pdf->SetXY($this->posxinvoiceamount, $this->tab_top+2);
$pdf->MultiCell($this->posxpaymentamount - $this->posxinvoiceamount - 1, 2, $outputlangs->transnoentities("AmountInvoice"), 0, 'R');
$pdf->line(120, $this->tab_top, 120, $this->tab_top + $this->tab_height + 10);
$pdf->SetXY(122, $this->tab_top+2);
$pdf->MultiCell(40, 2, $outputlangs->transnoentities("AmountInvoice"), 0, 'L');
$pdf->line($this->posxpaymentamount - 1, $this->tab_top, $this->posxpaymentamount - 1, $this->tab_top + $this->tab_height + 10);
$pdf->SetXY($this->posxpaymentamount, $this->tab_top+2);
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount - 1, 2, $outputlangs->transnoentities("AmountPayment"), 0, 'R');
$pdf->line(160, $this->tab_top, 160, $this->tab_top + $this->tab_height + 10);
$pdf->SetXY(162, $this->tab_top+2);
$pdf->MultiCell(40, 2, $outputlangs->transnoentities("AmountPayment"), 0, 'L');
$pdf->line($this->marge_gauche, $this->tab_top + 10, $this->page_largeur - $this->marge_droite, $this->tab_top + 10);
$pdf->line(10, $this->tab_top + 10, 200, $this->tab_top + 10);
$pdf->Rect(9, $this->tab_top, 192, $this->tab_height + 10);
$pdf->Rect($this->marge_gauche, $this->tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $this->tab_height + 10);
}
@@ -275,7 +291,9 @@ class pdf_paiement
*/
function Body(&$pdf, $page, $lines, $outputlangs)
{
$pdf->SetFont('','', 9);
$default_font_size = pdf_getPDFFontSize($outputlangs);
$pdf->SetFont('','', $default_font_size - 1);
$oldprowid = 0;
$pdf->SetFillColor(220,220,220);
$yp = 0;
@@ -290,33 +308,35 @@ class pdf_paiement
$page++;
$pdf->AddPage();
$this->_pagehead($pdf, $page, 0, $outputlangs);
$pdf->SetFont('','', 9);
$pdf->SetFont('','', $default_font_size - 1);
$yp = 0;
}
$pdf->SetXY(10, $this->tab_top + 10 + $yp);
$pdf->MultiCell(30, $this->line_height, $lines[$j][1], 0, 'L', 1);
$pdf->SetXY($this->posxdate - 1, $this->tab_top + 10 + $yp);
$pdf->MultiCell($this->posxpaymenttype - $this->posxdate + 1, $this->line_height, $lines[$j][1], 0, 'L', 1);
$pdf->SetXY(40, $this->tab_top + 10 + $yp);
$pdf->MultiCell(80, $this->line_height, $lines[$j][2].' '.$lines[$j][3], 0, 'L', 1);
$pdf->SetXY($this->posxpaymenttype, $this->tab_top + 10 + $yp);
$pdf->MultiCell($this->posxinvoiceamount - $this->posxpaymenttype, $this->line_height, $lines[$j][2].' '.$lines[$j][3], 0, 'L', 1);
$pdf->SetXY(120, $this->tab_top + 10 + $yp);
$pdf->MultiCell(40, $this->line_height, '', 0, 'R', 1);
$pdf->SetXY($this->posxinvoiceamount, $this->tab_top + 10 + $yp);
$pdf->MultiCell($this->posxpaymentamount- $this->posxinvoiceamount, $this->line_height, '', 0, 'R', 1);
$pdf->SetXY(160, $this->tab_top + 10 + $yp);
$pdf->MultiCell(40, $this->line_height, $lines[$j][4], 0, 'R', 1);
$pdf->SetXY($this->posxpaymentamount, $this->tab_top + 10 + $yp);
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount, $this->line_height, $lines[$j][4], 0, 'R', 1);
$yp = $yp + 5;
}
// Invoice number
$pdf->SetXY(80, $this->tab_top + 10 + $yp);
$pdf->MultiCell(40, $this->line_height, $lines[$j][0], 0, 'L', 0);
$pdf->SetXY($this->posxinvoice, $this->tab_top + 10 + $yp);
$pdf->MultiCell($this->posxinvoiceamount - $this->posxdate, $this->line_height, $lines[$j][0], 0, 'L', 0);
$pdf->SetXY(120, $this->tab_top + 10 + $yp);
$pdf->MultiCell(40, $this->line_height, $lines[$j][5], 0, 'R', 0);
// Invoice amount
$pdf->SetXY($this->posxinvoiceamount, $this->tab_top + 10 + $yp);
$pdf->MultiCell($this->posxpaymentamount- $this->posxinvoiceamount - 1, $this->line_height, $lines[$j][5], 0, 'R', 0);
$pdf->SetXY(160, $this->tab_top + 10 + $yp);
$pdf->MultiCell(40, $this->line_height, $lines[$j][6], 0, 'R', 0);
// Payment amount
$pdf->SetXY($this->posxpaymentamount, $this->tab_top + 10 + $yp);
$pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount, $this->line_height, $lines[$j][6], 0, 'R', 0);
$yp = $yp + 5;
if ($oldprowid <> $lines[$j][7])

View File

@@ -516,8 +516,8 @@ if ($action == 'send' && ! GETPOST('cancel','alpha') && (empty($conf->global->MA
}
else // Id du contact
{
$sendto = $object->client->contact_get_email(GETPOST('receiver','alpha'));
$sendtoid = GETPOST('receiver','alpha');
$sendto = $object->client->contact_get_property(GETPOST('receiver'),'email');
$sendtoid = GETPOST('receiver','alpha');
}
}

View File

@@ -29,7 +29,7 @@
* \brief File that include conf.php file and commons lib like functions.lib.php
*/
if (! defined('DOL_VERSION')) define('DOL_VERSION','3.2.3'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z)
if (! defined('DOL_VERSION')) define('DOL_VERSION','3.2.4'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z)
if (! defined('EURO')) define('EURO',chr(128));
// Define syslog constants
@@ -170,7 +170,7 @@ if (! $found) // If autodetect fails (Ie: when using apache alias that point out
{
$tmp=$dolibarr_main_url_root;
}
else $tmp='http'.((empty($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != 'on')?'':'s').'://'.$_SERVER["SERVER_NAME"].((empty($_SERVER["SERVER_PORT"])||$_SERVER["SERVER_PORT"]==80)?'':':'.$_SERVER["SERVER_PORT"]).($tmp3?(preg_match('/^\//',$tmp3)?'':'/').$tmp3:'');
else $tmp='http'.(((empty($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != 'on') && (empty($_SERVER["SERVER_PORT"])||$_SERVER["SERVER_PORT"]!=443))?'':'s').'://'.$_SERVER["SERVER_NAME"].((empty($_SERVER["SERVER_PORT"])||$_SERVER["SERVER_PORT"]==80||$_SERVER["SERVER_PORT"]==443)?'':':'.$_SERVER["SERVER_PORT"]).($tmp3?(preg_match('/^\//',$tmp3)?'':'/').$tmp3:'');
//print "tmp1=".$tmp1." tmp2=".$tmp2." tmp3=".$tmp3." tmp=".$tmp;
if (! empty($dolibarr_main_force_https)) $tmp=preg_replace('/^http:/i','https:',$tmp);

View File

@@ -35,6 +35,7 @@ require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php";
require_once DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.product.class.php";
require_once DOL_DOCUMENT_ROOT."/core/lib/fourn.lib.php";
require_once(DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php");
require_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php');
if ($conf->produit->enabled) require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php";
if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/projet/class/project.class.php');
@@ -551,7 +552,7 @@ else if ($action == 'builddoc' && $user->rights->fournisseur->commande->creer) /
// Sauvegarde le dernier module choisi pour generer un document
$object->fetch($id);
$object->fetch_thirdparty();
if ($_REQUEST['model'])
{
$object->setDocModel($user, $_REQUEST['model']);
@@ -584,7 +585,7 @@ else if ($action == 'remove_file' && $user->rights->fournisseur->commande->creer
if ($object->fetch($id))
{
$object->fetch_thirdparty();
$langs->load("other");
$upload_dir = $conf->fournisseur->commande->dir_output;
$file = $upload_dir . '/' . GETPOST('file');

View File

@@ -3,7 +3,7 @@
* Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Christophe Combelles <ccomb@free.fr>
* Copyright (C) 2005 Marc Barilley <marc@ocebo.fr>
* Copyright (C) 2005-2012 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2005-2013 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
*
* This program is free software; you can redistribute it and/or modify
@@ -33,6 +33,7 @@ require_once(DOL_DOCUMENT_ROOT.'/core/modules/supplier_invoice/modules_facturefo
require_once(DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php');
require_once(DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php');
require_once(DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php');
require_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php');
require_once(DOL_DOCUMENT_ROOT.'/product/class/product.class.php');
if ($conf->projet->enabled) require_once(DOL_DOCUMENT_ROOT.'/projet/class/project.class.php');
@@ -581,6 +582,8 @@ elseif ($action == 'edit' && $user->rights->fournisseur->facture->creer)
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
}
//if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) supplier_invoice_pdf_create($db, $object->id, $object->modelpdf, $outputlangs);
$action='';
}
}
@@ -1749,7 +1752,7 @@ else
$form->select_produits_fournisseurs($object->socid,'','idprodfournprice','',$filtre);
if (empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) print '<br>';
if (is_object($hookmanager))
{
$parameters=array('filtre'=>$filtre,'htmlname'=>'idprodfournprice');
@@ -1760,7 +1763,7 @@ else
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" name="qty" value="1" size="1"></td>';
print '<td>&nbsp;</td>';
@@ -1777,14 +1780,19 @@ else
if ($action != 'presend')
{
/*
* Boutons actions
*/
*/
print '<div class="tabsAction">';
// Reopen a standard paid invoice
// Modify a validated invoice with no payments
if ($object->statut == 1 && $action != 'edit' && $object->getSommePaiement() == 0 && $user->rights->fournisseur->facture->creer)
{
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=edit">'.$langs->trans('Modify').'</a>';
}
// Reopen a standard paid invoice
if (($object->type == 0 || $object->type == 1) && ($object->statut == 2 || $object->statut == 3)) // A paid invoice (partially or completely)
{
if (! $facidnext && $object->close_code != 'replaced') // Not replaced by another invoice

View File

@@ -126,7 +126,7 @@ if ($_GET["filtre"])
if (GETPOST("search_ref"))
{
$sql .= " AND fac.rowid like '%".$db->escape(GETPOST("search_ref"))."%'";
$sql .= " AND fac.rowid = ".$db->escape(GETPOST("search_ref"));
}
if (GETPOST("search_ref_supplier"))
{

View File

@@ -24,7 +24,7 @@
* \brief File that define environment for support pages
*/
define('DOL_VERSION','3.2.3'); // Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z)
define('DOL_VERSION','3.2.4'); // Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z)
// Define DOL_DOCUMENT_ROOT an ADODB_PATH used for install/upgrade process
if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '..');

View File

@@ -3304,15 +3304,21 @@ function migrate_mode_reglement($db,$langs,$conf)
$db->begin();
$sqla = "UPDATE ".MAIN_DB_PREFIX."paiement SET ";
$sqla.= "fk_paiement = ".$elements['new_id'][$key];
$sqla.= " WHERE fk_paiement = ".$old_id;
$sqla.= " AND fk_paiement IN (SELECT id FROM ".MAIN_DB_PREFIX."c_paiement WHERE id = ".$old_id." AND code = '".$elements['code'][$key]."')";
$resqla = $db->query($sqla);
$sql = "UPDATE ".MAIN_DB_PREFIX."c_paiement SET ";
$sql.= "id = ".$elements['new_id'][$key];
$sql.= " WHERE id = ".$old_id;
$sql.= " AND code = '".$elements['code'][$key]."'";
$resql = $db->query($sql);
if ($resql)
if ($resqla && $resql)
{
foreach($elements['tables'] as $table)
foreach($elements['tables'] as $table) // FIXME We must not update tables if oldid is not renamed
{
$sql = "UPDATE ".MAIN_DB_PREFIX.$table." SET ";
$sql.= "fk_mode_reglement = ".$elements['new_id'][$key];
@@ -3681,4 +3687,4 @@ update llx_facture set paye=1, fk_statut=2 where close_code is null
and rowid in (...)
*/
?>
?>

View File

@@ -259,8 +259,8 @@ LastStableVersion = Laatste stabiele versie
GenericMaskCodes = U kunt elk gewenst maskernummer invoeren. In dit masker, kunnen de volgende tags worden gebruikt:<br><b>{000000}</b> correspondeert met een nummer welke vermeerderd zal worden op elke %s. Voer zoveel nullen in als de gewenste lengte van de teller. De teller wordt aangevuld met nullen vanaf links zodat er zoveel nullen zijn als in het masker.<br><b>{000000+000}</b> hetzelfde als voorgaand maar een offset corresponderend met het nummer aan de rechterkant van het + teken is toegevoegd startend op de eerste %s. <br><b>{000000@x}</b> hetzelfde als voorgaande maar de teller wordt gereset naar nul, wanneer maand x is bereikt (x tussen 1 en 12). Als deze optie is gebruikt en x is 2 of hoger, dan is de volgorde {yy}{mm} of {yyyy}{mm} ook vereist. <br><b>{dd}</b> dag (01 t/m 31).<br><b>{mm}</b> maand (01 t/m 12).<br><b>{yy}</b>, <b>{yyyy}</b> of <b>{y}</b> jaat over 2, 4 of 1 nummer(s). <br>
GenericMaskCodes2 = <b>{cccc}</b> de afnermerscode<br><b>{cccc000}</b> de afnermerscode en n karakters wordt opgevolgd door een afnermersreferentieteller zonder offset en gereset met de globale teller.<br><b>{tttt}</b> De code van bedrijfstype op n karakters (Zie het menu 'constantent' voor de bedrijfstypes<br>
GenericMaskCodes3 = Alle andere karakters in het masker zullen intact blijven.<br>Spaties zijn niet toegestaan.<br>
GenericMaskCodes4a = <u>Voorbeeld van de 99e %s van de derde partij 'HetBedrijf' gedaan op 2007-01-31:</u><br>
GenericMaskCodes4b = <u>Voorbeeld van een derde partij gecreëerd op 2007-03-01:</u><br>
GenericMaskCodes4a = <u>Voorbeeld van de 99e %s van de Klant 'HetBedrijf' gedaan op 2007-01-31:</u><br>
GenericMaskCodes4b = <u>Voorbeeld van een Klant gecreëerd op 2007-03-01:</u><br>
GenericMaskCodes5 = <b>ABC{jj}{mm}-{000000}</b> zal <b>ABC0701-000099</b> geven<br><b>{0000+100}-ZZZ/{dd}/XXX</b> zal <b>0199-ZZZ/31/XXX</b> geven
GenericNumRefModelDesc = Geeft een aanpasbaar nummer volgens een gedefinieerd masker.
ServerAvailableOnIPOrPort = Server is beschikbaar op het IP-adres <b>%s</b> met poort <b>%s</b>
@@ -296,7 +296,7 @@ TestSubmitForm = Invoer testformulier
Module0Name = Gebruikers & groepen
Module0Desc = Beheer gebruikers en groepen
Module1Name = Beheer derde partijen
Module1Desc = Beheer van derde partijen (afnemers, leveranciers en contactpersonen). Ook kunt u hier sjabloondocumenten uploaden.
Module1Desc = Beheer van derde partijen (klanten, leveranciers en contactpersonen). Ook kunt u hier sjabloondocumenten uploaden.
Module2Name = Commercieel
Module2Desc = Commercieel beheer
Module10Name = Boekhouding
@@ -307,10 +307,10 @@ Module22Name = EMailings
Module22Desc = Administratie en verzending van bulk-e-mails
Module23Name = Energie
Module23Desc = Monitoring van het verbruik van energie
Module25Name = Afnemersopdrachten
Module25Desc = Verkoopopdrachten
Module25Name = Bestellingen klanten
Module25Desc = Beheer van de bestellingen door klanten
Module30Name = Facturen
Module30Desc = Factuur- en creditnotabeheer voor afnemers. Factuurbeheer voor leveranciers
Module30Desc = Factuur- en creditnotabeheer voor klanten. Factuurbeheer voor leveranciers
Module40Name = Leveranciers
Module40Desc = Leveranciersbeheer (inkoopopdrachten en -facturen)
Module42Name = Syslog
@@ -341,7 +341,7 @@ Module70Name = Interventies
Module70Desc = Interventiesbeheer
Module75Name = Reisnotities en -kosten
Module75Desc = Beheer van reisnotities en -kosten
Module80Name = Expedities
Module80Name = Verzendingen
Module80Desc = Beheer afnemersverzending en -ontvangst
Module85Name = Bank en Contant
Module85Desc = Beheer van bank- en / of kasrekeningen
@@ -529,7 +529,7 @@ PermissionAdvanced253 = Creëer / wijzig de rechten van internet / externe gebru
Permission254 = Verwijderen of uitschakelen van andere gebruikers
Permission255 = Creëren / wijzigen eigen gebruikersgegevens
Permission256 = Wijzigen eigen wachtwoord
Permission262 = Uitbreiden van de toegang tot iedereen die verbonden is aan de derde partij (niet alleen die welke verband houden met de gebruiker). Niet functioneel voor externe gebruikers (altijd beperkt tot zichzelf).
Permission262 = Uitbreiden van de toegang tot iedereen die verbonden is aan de Klant (niet alleen die welke verband houden met de gebruiker). Niet functioneel voor externe gebruikers (altijd beperkt tot zichzelf).
Permission271 = Lees CA
Permission272 = Facturen inzien
Permission273 = Facturen uitgeven
@@ -836,7 +836,7 @@ UserMailRequired = E-mail verplicht om een nieuwe gebruiker creëren
CompanySetup = Derde partijenmoduleinstellingen
CompanyCodeChecker = Module voor de generatie en toetsing van codes voor derde partijen (afnemer of leverancier)
AccountCodeManager = Module voor de generatie van boekhoudkundige codes (afnemer of leverancier)
ModuleCompanyCodeAquarium = Geef een boekhoudkundige code terug opgebouwd uit "401", gevolgd door de de leverancierscode(Wanneer het een leverancier betreft) of een afnemerscode van de derde partij (Wanneer het een afnemer betreft).
ModuleCompanyCodeAquarium = Geef een boekhoudkundige code terug opgebouwd uit "401", gevolgd door de de leverancierscode(Wanneer het een leverancier betreft) of een afnemerscode van de Klant (Wanneer het een afnemer betreft).
ModuleCompanyCodePanicum = Geef een lege boekhoudkundige code terug.
ModuleCompanyCodeDigitaria = Boekhoudkundige-code is afhankelijk van derden code. De code bestaat uit het teken "C" in de eerste positie, gevolgd door de eerste 5 tekens van de derden code.
UseNotifications = Gebruik kennisgevingen
@@ -1201,7 +1201,7 @@ ClickToDialDesc = Deze module maakt het mogelijk om een icoontje te tonen achter
##### Point Of Sales (CashDesk) ##### =
CashDesk = Verkooppunten
CashDeskSetup = Verkooppuntenmoduleinstellingen
CashDeskThirdPartyForSell = Algemene derde partij te gebruiken bij verkopen
CashDeskThirdPartyForSell = Algemene Klant te gebruiken bij verkopen
CashDeskBankAccountForSell = Te gebruiken rekening voor ontvangst van contacte betalingen
CashDeskBankAccountForCheque = Te gebruiken rekening voor ontvangst van betalingen per cheque
CashDeskBankAccountForCB = Te gebruiken rekening voor ontvangst van betalingen per CreditCard

View File

@@ -223,9 +223,9 @@ ExportDataset_invoice_1 = Afnemersfacturen en factuurregels
ExportDataset_invoice_2 = Afnemersfacturen en -betalingen
ProformaBill = Proforma factuur:
Reduction = Vermindering
ReductionShort = Minder
ReductionShort = Korting
Reductions = Verminderingen
ReductionsShort = Minder
ReductionsShort = Korting
Discount = Korting
Discounts = Kortingen
ShowDiscount = Toon korting

View File

@@ -46,9 +46,9 @@ WasAddedSuccessfully = <b>%s</b> is succesvol toegevoegd.
ObjectAlreadyLinkedToCategory = Element is al gekoppeld aan deze categorie.
CategorySuccessfullyCreated = De categorie %s is met succes toegevoegd.
ProductIsInCategories = Product / dienst is eigenaar van de volgende categorieën
SupplierIsInCategories = Derde partij is eigenaar van de volgende leverancierscategorieën
CompanyIsInCustomersCategories = Deze derde partij is eigenaar van de volgende afnemers- / prospectencategorieën
CompanyIsInSuppliersCategories = Deze derde partij is eigenaar van de volgende leverancierscategorieën
SupplierIsInCategories = Klant is eigenaar van de volgende leverancierscategorieën
CompanyIsInCustomersCategories = Deze Klant is eigenaar van de volgende afnemers- / prospectencategorieën
CompanyIsInSuppliersCategories = Deze Klant is eigenaar van de volgende leverancierscategorieën
MemberIsInCategories = Dit lid is eigenaar van de volgende ledencategorieën
ProductHasNoCategory = Dit product / dienst behoort tot geen enkele categorie
SupplierHasNoCategory = Deze leverancier behoort tot geen enkele categorie

View File

@@ -4,8 +4,8 @@ Commercial = Commercieel
CommercialArea = Commerciële gedeelte
CommercialCard = Commerciele details
CustomerArea = Afnemersdetails
Customer = Afnemer
Customers = Afnemers
Customer = Klant
Customers = Klanten
Prospect = Prospect
Prospects = Prospecten
DeleteAction = Verwijder een actie

View File

@@ -3,11 +3,11 @@ CHARSET = UTF-8
ErrorCompanyNameAlreadyExists = De bedrijfsnaam %s bestaat al. kies een andere.
ErrorPrefixAlreadyExists = De prefix %s bestaat al. kies een andere.
ErrorSetACountryFirst = Stel eerst het land in
DeleteThirdParty = Verwijder een derde partij
DeleteThirdParty = Verwijder een Klant
ConfirmDeleteCompany = Weet u zeker dat u dit bedrijf en alle geërfde gegevens wilt verwijderen?
DeleteContact = Contactpersoon verwijderen
ConfirmDeleteContact = Weet u zeker dat u deze contactpersoon en alle geërfde gegevens wilt verwijderen ?
MenuNewThirdParty = Nieuwe derde partij
MenuNewThirdParty = Nieuwe Klant
MenuNewCompany = Nieuwe onderneming
MenuNewCustomer = Nieuwe afnemer
MenuNewProspect = Nieuw prospect
@@ -15,33 +15,33 @@ MenuNewSupplier = Nieuwe leverancier
MenuNewPrivateIndividual = Nieuwe particulier
MenuSocGroup = Groepen
NewCompany = Nieuwe bedrijf (prospect, afnemer, leverancier)
NewThirdParty = Nieuwe derde partij (prospect, afnemer, leverancier)
NewThirdParty = Nieuwe Klant (prospect, afnemer, leverancier)
NewSocGroup = Nieuwe bedrijfsgroep
NewPrivateIndividual = Nieuwe particulier (prospect, afnemer, leverancier)
ProspectionArea = Prospectenoverzicht
SocGroup = Bedrijfsgroep
IdThirdParty = ID derde partij
IdThirdParty = ID Klant
IdCompany = ID bedrijf
IdContact = ID contactpersoon
Contacts = Contactpersonen
ContactsAddresses = Contacpersonen / adressen
ThirdPartyContacts = Contacten van derde partij
ThirdPartyContact = Contactpersoon van derde partij
ThirdPartyContacts = Contacten van Klant
ThirdPartyContact = Contactpersoon van Klant
StatusContactValidated = Status van contactpersoon
CustomerContact = Afnemerscontactpersoon
Company = Bedrijf
CompanyName = Bedrijfsnaam
Companies = Bedrijven
CountryIsInEEC = Lidstaat van de Europese Unie
ThirdPartyName = Naam van derde partij
ThirdParty = Derde partij
ThirdParties = Derde partij
ThirdPartyAll = Derde partijen (alle)
ThirdPartyName = Naam van Klant
ThirdParty = Klant
ThirdParties = Klant
ThirdPartyAll = Klanten (alle)
ThirdPartyProspects = Prospecten
ThirdPartyCustomers = Afnemers
ThirdPartyCustomersWithIdProf12 = Afnemers met %s of %s
ThirdPartySuppliers = Leveranciers
ThirdPartyType = Type derde partij
ThirdPartyType = Type Klant
Company/Fundation = Bedrijf / stichting
Individual = Particulier
ToCreateContactWithSameName = Maakt automatisch een contactpersoon met dezelfde informatie
@@ -173,10 +173,10 @@ Supplier = Leverancier
CompanyList = Bedrijvenoverzicht
AddContact = Contactpersoon toevoegen
Contact = Contactpersoon
NoContactDefined = Geen contactpersoon ingesteld voor deze derde partij
NoContactDefined = Geen contactpersoon ingesteld voor deze Klant
DefaultContact = Standaard contactpersoon
AddCompany = Bedrijf toevoegen
AddThirdParty = Derde partij toevoegen
AddThirdParty = Klant toevoegen
DeleteACompany = Bedrijf verwijderen
PersonalInformations = Persoonlijke gegevens
AccountancyCode = Boekhoudkundige code
@@ -186,8 +186,8 @@ CustomerAccount = Afnemersrekening
SupplierAccount = Leveranciersrekening
CustomerCodeDesc = Afnemerscode, uniek voor alle afnemers
SupplierCodeDesc = Leverancierscode, uniek voor alle leveranciers
RequiredIfCustomer = Vereist als derde partij een afnemer of prospect is
RequiredIfSupplier = Vereist als derde partij een leverancier is
RequiredIfCustomer = Vereist als Klant een afnemer of prospect is
RequiredIfSupplier = Vereist als Klant een leverancier is
ValidityControledByModule = Geldigheid gecontroleerd door module
ThisIsModuleRules = Dit zijn de regels voor deze module
LastProspect = Laatste prospect
@@ -234,7 +234,7 @@ ProspectLevel = Prospectpotentieel
ContactPrivate = Privé
ContactPublic = Gedeeld
ContactVisibility = Zichtbaarheid
OthersNotLinkedToThirdParty = Anderen, niet gebonden aan een derde partij
OthersNotLinkedToThirdParty = Anderen, niet gebonden aan een Klant
ProspectStatus = Prospectstatus
PL_NONE = Geen
PL_UNKNOWN = Onbekend
@@ -269,7 +269,7 @@ NoRIB = Geen bank ingesteld
NoParentCompany = Geen
ExportImport = Import - Export
ExportCardToFormat = Export details naar formaat
ContactNotLinkedToCompany = Contact niet gekoppeld aan enige derde partij
ContactNotLinkedToCompany = Contact niet gekoppeld aan enige Klant
DolibarrLogin = Dolibarr login
NoDolibarrAccess = Geen Dolibarr toegang
ExportDataset_company_1 = Bedrijven / instellingen en eigenschappen
@@ -292,12 +292,12 @@ DeleteFile = Bestand verwijderen
ConfirmDeleteFile = Weet u zeker dat u dit bestand wilt verwijderen?
AllocateCommercial = Toewijzing
SelectCountry = Selecteer een land
SelectCompany = Selecteer een derde partij
SelectCompany = Selecteer een Klant
Organization = Organisatie
AutomaticallyGenerated = Automatisch gegenereerd
FiscalYearInformation = Informatie over het fiscale jaar
FiscalMonthStart = Startmaand van het fiscale jaar
YouMustCreateContactFirst = U dient voor de derde partij eerst contactpersonen met een e-mailadres instellen, voordat u kennisgevingen per e-mail kunt sturen.
YouMustCreateContactFirst = U dient voor de Klant eerst contactpersonen met een e-mailadres instellen, voordat u kennisgevingen per e-mail kunt sturen.
ListSuppliersShort = Leveranciersoverzicht
ListProspectsShort = Prospectenoverzicht
ListCustomersShort = Afnemersoverzicht

View File

@@ -74,7 +74,7 @@ OtherPropals = Andere offertes
CopyPropalFrom = Maak offerte door het kopiëren van een bestaande offerte
CreateEmptyPropal = Creëer een lege offerte of uit de lijst van producten / diensten
DefaultProposalDurationValidity = Standaardgeldigheid offerte (in dagen)
UseCustomerContactAsPropalRecipientIfExist = Gebruik, indien ingesteld, het afnemerscontactadres als offerteontvangstadres in plaats van het adres van de derde partij
UseCustomerContactAsPropalRecipientIfExist = Gebruik, indien ingesteld, het afnemerscontactadres als offerteontvangstadres in plaats van het adres van de Klant
ClonePropal = Kloon offerte
ConfirmClonePropal = Weet u zeker dat u deze offerte <b>%s</b> wilt klonen?
ProposalsAndProposalsLines = Offertes en offerteregels

View File

@@ -195,9 +195,9 @@ if (isset($_SERVER["HTTP_USER_AGENT"]))
if (! empty($conf->file->main_force_https))
{
$newurl='';
if ($conf->file->main_force_https == '1')
if (is_numeric($conf->file->main_force_https))
{
if (! empty($_SERVER["SCRIPT_URI"])) // If SCRIPT_URI supported by server
if ($conf->file->main_force_https == '1' && ! empty($_SERVER["SCRIPT_URI"])) // If SCRIPT_URI supported by server
{
if (preg_match('/^http:/i',$_SERVER["SCRIPT_URI"]) && ! preg_match('/^https:/i',$_SERVER["SCRIPT_URI"])) // If link is http
{
@@ -215,7 +215,12 @@ if (! empty($conf->file->main_force_https))
}
else
{
$newurl=$conf->file->main_force_https.$_SERVER["REQUEST_URI"];
// Check HTTPS environment variable (Apache/mod_ssl only)
// $_SERVER["HTTPS"] is 'on' when link is https, otherwise $_SERVER["HTTPS"] is empty or 'off'
if (empty($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != 'on') // If link is http
{
$newurl=$conf->file->main_force_https.$_SERVER["REQUEST_URI"];
}
}
// Start redirect
if ($newurl)

View File

@@ -134,9 +134,22 @@ else
$sql.= MAIN_DB_PREFIX.'product as p';
$sql.= ') ';
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product";
// multilang
if ($conf->global->MAIN_MULTILANGS) // si l'option est active
{
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_lang as pl ON pl.fk_product = p.rowid AND pl.lang = '".$langs->getDefaultLang() ."'";
}
$sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')';
if ($search_categ) $sql.= " AND p.rowid = cp.fk_product"; // Join for the needed table to filter by categ
if ($sall) $sql.= " AND (p.ref LIKE '%".$db->escape($sall)."%' OR p.label LIKE '%".$db->escape($sall)."%' OR p.description LIKE '%".$db->escape($sall)."%' OR p.note LIKE '%".$db->escape($sall)."%')";
if ($sall)
{
// multilang
if ($conf->global->MAIN_MULTILANGS) // si l'option est active
{
$sql.= " AND (p.ref LIKE '%".$db->escape($sall)."%' OR p.label LIKE '%".$db->escape($sall)."%' OR p.description LIKE '%".$db->escape($sall)."%' OR p.note LIKE '%".$db->escape($sall)."%' OR pl.label LIKE '%".$db->escape($sall)."%' OR pl.description LIKE '%".$db->escape($sall)."%' OR pl.note LIKE '%".$db->escape($sall)."%' )";
}
else $sql.= " AND (p.ref LIKE '%".$db->escape($sall)."%' OR p.label LIKE '%".$db->escape($sall)."%' OR p.description LIKE '%".$db->escape($sall)."%' OR p.note LIKE '%".$db->escape($sall)."%')";
}
// if the type is not 1, we show all products (type = 0,2,3)
if (dol_strlen($type))
{
@@ -145,7 +158,15 @@ else
}
if ($sref) $sql.= " AND p.ref LIKE '%".$sref."%'";
if ($sbarcode) $sql.= " AND p.barcode LIKE '%".$sbarcode."%'";
if ($snom) $sql.= " AND p.label LIKE '%".$db->escape($snom)."%'";
if ($snom)
{
// multilang
if ($conf->global->MAIN_MULTILANGS) // si l'option est active
{
$sql.= " AND (p.label LIKE '%".$db->escape($snom)."%' OR (pl.label IS NOT null AND pl.label LIKE '%".$db->escape($snom)."%'))";
}
else $sql.= " AND p.label LIKE '%".$db->escape($snom)."%'";
}
if (isset($tosell) && dol_strlen($tosell) > 0) $sql.= " AND p.tosell = ".$db->escape($tosell);
if (isset($tobuy) && dol_strlen($tobuy) > 0) $sql.= " AND p.tobuy = ".$db->escape($tobuy);
if (dol_strlen($canvas) > 0) $sql.= " AND p.canvas = '".$db->escape($canvas)."'";

View File

@@ -41,6 +41,9 @@ if (empty($conf->global->MAILING_EMAIL_UNSUBSCRIBE)) accessforbidden('Option not
if ($id!='')
{
//escape id avoiding SQL Injection
$id=$db->escape($id);
$statut='2';
$sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles SET statut=".$statut." WHERE tag='".$id."'";
dol_syslog("public/emailing/mailing-read.php : Mail read : ".$sql, LOG_DEBUG);

View File

@@ -29,7 +29,7 @@ define("NOLOGIN",1); // This means this output page does not require to be logg
define("NOCSRFCHECK",1); // We accept to go on this page from external web site.
require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/company.lib.php");
global $user, $conf, $langs;
@@ -48,6 +48,9 @@ if (empty($conf->global->MAILING_EMAIL_UNSUBSCRIBE)) accessforbidden('Option not
if (($id!='') && ($unsuscrib=='1'))
{
//escape id avoiding SQL Injection
$id=$db->escape($id);
//Udate status of mail in Destinaries maling list
$statut='3';
$sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles SET statut=".$statut." WHERE tag='".$id."'";

View File

@@ -75,9 +75,13 @@ if (! GETPOST("action"))
}
}
// Define $urlwithroot
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
$urlok=$urlwithouturlroot.DOL_URL_ROOT.'/public/paybox/paymentok.php?';
$urlko=$urlwithouturlroot.DOL_URL_ROOT.'/public/paybox/paymentko.php?';
$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
$urlok=$urlwithroot.'/public/paybox/paymentok.php?';
$urlko=$urlwithroot.'/public/paybox/paymentko.php?';
// Complete urls
$SOURCE=GETPOST("source",'alpha');

View File

@@ -84,9 +84,13 @@ if (! GETPOST("action"))
}
}
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
$urlok=$urlwithouturlroot.DOL_URL_ROOT.'/public/paypal/paymentok.php?';
$urlko=$urlwithouturlroot.DOL_URL_ROOT.'/public/paypal/paymentko.php?';
// Define $urlwithroot
//$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
//$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
$urlok=$urlwithroot.'/public/paypal/paymentok.php?';
$urlko=$urlwithroot.'/public/paypal/paymentko.php?';
// Complete urls for post treatment
$SOURCE=GETPOST("source",'alpha');

View File

@@ -182,6 +182,9 @@ form {
padding: 0em 0em 0em 0em;
margin: 0em 0em 0em 0em;
}
.dolibarrcombobox {
height: 22px;
}
/* ============================================================================== */
/* Styles to hide objects */

View File

@@ -1410,17 +1410,10 @@ class User extends CommonObject
$outputlangs=$langs;
}
// Define urlwithouturlroot
if (! empty($_SERVER["HTTP_HOST"])) // Autodetect main url root
{
$urlwithouturlroot='http://'.preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',$_SERVER["HTTP_HOST"]);
}
else
{
$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',$dolibarr_main_url_root);
}
if (! empty($dolibarr_main_force_https)
|| (! empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on')) $urlwithouturlroot=preg_replace('/http:/i','https:',$urlwithouturlroot);
// Define $urlwithroot
//$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
//$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
// TODO Use outputlangs to translate messages
if (! $changelater)
@@ -1430,7 +1423,7 @@ class User extends CommonObject
$mesg.= $langs->trans("Login")." : $this->login\n";
$mesg.= $langs->trans("Password")." : $password\n\n";
$mesg.= "\n";
$url = $urlwithouturlroot.DOL_URL_ROOT;
$url = $urlwithroot;
$mesg.= 'Click here to go to Dolibarr: '.$url."\n\n";
$mesg.= "--\n";
$mesg.= $user->getFullName($langs); // Username that make then sending
@@ -1443,7 +1436,7 @@ class User extends CommonObject
$mesg.= $langs->trans("Password")." : $password\n\n";
$mesg.= "\n";
$mesg.= "You must click on the folowing link to validate its change.\n";
$url = $urlwithouturlroot.DOL_URL_ROOT.'/user/passwordforgotten.php?action=validatenewpassword&username='.$this->login."&passwordmd5=".dol_hash($password);
$url = $urlwithroot.'/user/passwordforgotten.php?action=validatenewpassword&username='.$this->login."&passwordmd5=".dol_hash($password);
$mesg.= $url."\n\n";
$mesg.= "If you didn't ask anything, just forget this email\n\n";
dol_syslog(get_class($this)."::send_password url=".$url);

View File

@@ -219,10 +219,6 @@ if ($action == 'add' && $canadduser)
$edituser->entity = (empty($_POST["entity"]) ? 0 : $_POST["entity"]);
}
}
else if (! empty($_POST["admin"]))
{
$edituser->entity=0;
}
else
{
$edituser->entity = (empty($_POST["entity"]) ? 0 : $_POST["entity"]);
@@ -337,10 +333,6 @@ if ($action == 'update' && ! $_POST["cancel"])
$edituser->entity = (empty($_POST["entity"]) ? 0 : $_POST["entity"]);
}
}
else if(! empty($_POST["admin"]))
{
$edituser->entity=0;
}
else
{
$edituser->entity = (empty($_POST["entity"]) ? 0 : $_POST["entity"]);
@@ -1445,7 +1437,7 @@ else
print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$fuser->id.'" method="POST" name="updateuser" enctype="multipart/form-data">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="update">';
print '<input type="hidden" name="entity" value="'.$conf->entity.'">';
print '<input type="hidden" name="entity" value="'.$fuser->entity.'">';
print '<table width="100%" class="border">';
$rowspan=12;