Merge remote branch 'upstream/develop' into printipp

This commit is contained in:
frederic34 2014-12-08 20:33:50 +01:00
commit 295fe115ab
126 changed files with 1091 additions and 787 deletions

View File

@ -38,6 +38,7 @@ before_script:
- pyrus install pear/PHP_CodeSniffer
- phpenv rehash
- which phpcs
- phpcs --version
- phpcs -i
- echo Create dir $(pwd)/htdocs/documents
- sudo mkdir -p $(pwd)/htdocs/documents/admin/temp;
@ -106,10 +107,10 @@ script:
# - cat upgrade2.log
- cd ../..
- date
- php -d zend.enable_gc=0 /usr/bin/phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php
- phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php
- date
# - phpcs -p --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php 2>&1
- php -d zend.enable_gc=0 /usr/bin/phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1
- phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/htdocs/conf/conf.php,/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1
- date
after_script:

View File

@ -3,6 +3,18 @@ English Dolibarr ChangeLog
--------------------------------------------------------------
***** ChangeLog for 3.8 compared to 3.7.* *****
For users:
- New:
For translators:
- Update language files.
- New: When a translation is not available we always jump to en_US and only en_US.
For developers:
- New: Function yn can show a visual checkbox
***** ChangeLog for 3.7 compared to 3.6.* *****
For users:
- New: Match other auth system: Login can be done entering login or user
@ -103,6 +115,7 @@ For users:
- Fix: [ bug #1469 ] Triggers CONTACT_MODIFY and CONTACT_DELETE duplicates error message
- Fix: [ bug #1537 ] Difference between societe.nom and adherent.societe.
- Fix: [ bug #1535 ] Supplier invoice Extrafields are not shown
- Fix: datepicker first day of week can be monday by setting into display setup
For users, new experimental module (need to set feature level of instance to experimental to see them):
- New: Module Accounting Expert to manage accountancy
@ -322,6 +335,14 @@ removed. You must now use the 6 parameters way. See file modMyModule.class.php f
***** ChangeLog for 3.5.6 compared to 3.5.5 *****
Fix: Avoid missing class error for fetch_thirdparty method #1973
Fix: Can't update phone_pro from web service
Fix: Some security holes.
Fix: copy extrafields when creating order from proposal.
Fix: report on action was not filtering by environment.
Fix: Avoid missing class error.
Fix: Add function dolEscapeXML.
Fix: Bad days and month reported by function.
Fix: Bad margin calculation.
***** ChangeLog for 3.5.5 compared to 3.5.4 *****
Fix: Holiday module was broken. Initializaion of amount of holidays failed.

View File

@ -108,13 +108,31 @@ http://bugs.debian.org/package
severity 123 xxx
##### Update but tracker system
To set status of a bug to "pending"
> bts tag 999999 +pending
or replay to email 999999@bugs.debian.org + submitter of bug
With a message starting with:
Control: tag -1 +pending
Thanks. Fixed into git.
or replay to email control@bugs.debian.org
With only message
tag 729538 +pending
##### Testing a package into unstable env
Check you have a mysql server available from another interface than localhost
Check you have a mysql server available from another interface than "localhost".
Comment line in /etc/mysql/my.cnf if required and restart mysql
#bind-address = 127.0.0.1
Create a chroot called "unstable-amd64-sbuild"
Create a chroot called "unstable-amd64-sbuild".
Chroot env is stored into /srv/chroot directory.
> sudo sbuild-createchroot --keyring= unstable /srv/chroot/unstable http://ftp.uk.debian.org/debian
Pour lister les env chroot
@ -122,6 +140,7 @@ Pour lister les env chroot
Puis pour se connecter et préparer l'environnement
> schroot -c name_of_chroot
> cat /etc/debian_chroot to check which debian branch we are into
> vi /usr/sbin/policy-rc.d and replace return code 101 (not allowed) into 0 (ok)
> apt-get install links mysql-client
@ -135,7 +154,10 @@ Pour tester un package
> dpkg -i dolibarr*.deb ou pour avoir des traces: dpkg -D77777 -i dolibarr*.deb
> apt-get install -f
Puis http://localhost/dolibarr/ (cela peut etre appeler depuis le hote).
If there is a problem launching apache, because port is already used, change it into your chroot install with
> vi /etc/apache2/ports.conf
Then restart.
Then you can call/test dolibarr with http://localhost:port/dolibarr/ (It can be also called from host).
@ -202,23 +224,6 @@ http://packages.qa.debian.org/t/tcpdf.html
* Package will be into release when test will be moved as stable.
##### Update but tracker system
To set status of a bug to pending
> bts tag 999999 +pending
or replay to email 999999@bugs.debian.org + submitter of bug
With a message starting with:
Control: tag -1 +pending
and then a text like:
Thanks. Fixed into git.
or replay to email control@bugs.debian.org
With only message
tag 729538 +pending
##### Create/Maintain dolibarr package
To update dolibarr debian package
@ -257,7 +262,7 @@ x.y.z+dfsgw
Note: If there was errors solved manually after get-orig-sources.sh, you may need to make a git commit
* Add an entry into debian/changelog
> dch -v x.y.z+dfsg-w "My comment" will add entry.
> dch -v x.y.z+dfsgw-v "My comment" will add entry.
For example: dch -v x.y.z+dfsgw-1 "New upstream release." for a new version (x.y.z = version, w start from 1 and increaed for each new import)
Then modify changelog to replace "version" or "unstable" with "UNRELEASED".
Then check/modify also the user/date signature:

View File

@ -3,81 +3,4 @@ dolibarr (3.7.0-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 21 Oct 2014 12:00:00 +0100
dolibarr (3.6.1-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 23 Sep 2014 12:00:00 +0100
dolibarr (3.6.0-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 15 July 2014 12:00:00 +0100
dolibarr (3.5.5-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 8 July 2014 12:00:00 +0100
dolibarr (3.5.4-3) UNRELEASED; 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) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Fri, 2 May 2014 12:00:00 +0100
dolibarr (3.5.2-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Fri, 14 March 2014 12:00:00 +0100
dolibarr (3.5.1-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Fri, 7 Feb 2014 12:00:00 +0100
dolibarr (3.5.0-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Fri, 31 Jan 2014 12:00:00 +0100
dolibarr (3.4.2-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* Maintenance release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 30 Dec 2013 12:00:00 +0100
dolibarr (3.4.1-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* Maintenance release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 27 Apr 2013 12:00:00 +0100
dolibarr (3.4.0-3) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* Maintenance release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Mon, 22 Apr 2013 12:00:00 +0100
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 21 Oct 2014 12:00:00 +0100

View File

@ -14,7 +14,7 @@ https://build.opensuse.org
Packaging rules: http://en.opensuse.org/Portal:Packaging
Add attributes:
OBS:Screenshots URL of screenshot
OBS:Screenshots URL of screenshot http://www.dolibarr.org/images/dolibarr_screenshot1.png
OBS:QualityCategory Development|Testing|Stable|Private
OBS:Maintained 1
@ -29,12 +29,18 @@ To submit a snapshot for building, we should have a service file with content
</services>
How to have such a service file created automatically ?
Click on "Add file", then select mode "Upload From: Remote URL"
Enter the Remote URL that should looks like this: http://www.dolibarr.org/files/stable/package_rpm_generic/dolibarr-x.y.v-3.src.rpm
Then add into advanded - attributes
Go into project you want to update. It mught be:
- openSUSE Build Service > Projects > Application:ERP:Dolibarr > dolibarr
- or your private project
Once logged, click on "Add file" in section "Source Files", then select mode "Upload From: Remote URL"
Keep empty for "Filename", choose "Remote URL" and enter into last field, URL that should looks like this:
http://www.dolibarr.org/files/stable/package_rpm_generic/dolibarr-x.y.v-0.3.src.rpm
Then add into Advanded - Attributes
OBS:Screenshots http://www.dolibarr.org/images/dolibarr_screenshot1.png
OBS:QualityCategory Testing
OBS:QualityCategory Stable|Testing|Development|Private
# Move project into official directory

View File

@ -340,21 +340,3 @@ fi
* Wed Jul 15 2014 Laurent Destailleur 3.6.0-0.3
- Upstream release
* Tue Jul 8 2014 Laurent Destailleur 3.5.5-0.3
- Upstream release
* Tue Jul 1 2014 Laurent Destailleur 3.5.4-0.3
- Upstream release
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
- Upstream release
* Fri Feb 14 2014 Laurent Destailleur 3.5.2-0.3
- Upstream release
* Fri Feb 7 2014 Laurent Destailleur 3.5.1-0.3
- Upstream release
* Mon Dec 30 2013 Laurent Destailleur 3.5.0-0.3
- Initial version (#723326)

View File

@ -577,20 +577,3 @@ fi
* Wed Jul 15 2014 Laurent Destailleur 3.6.0-0.3
- Upstream release
* Tue Jul 8 2014 Laurent Destailleur 3.5.5-0.3
- Upstream release
* Tue Jul 1 2014 Laurent Destailleur 3.5.4-0.3
- Upstream release
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
- Upstream release
* Fri Feb 14 2014 Laurent Destailleur 3.5.2-0.3
- Upstream release
* Fri Feb 7 2014 Laurent Destailleur 3.5.1-0.3
- Upstream release
* Mon Dec 30 2013 Laurent Destailleur 3.5.0-0.3
- Initial version (#723326)

View File

@ -346,20 +346,3 @@ fi
* Wed Jul 15 2014 Laurent Destailleur 3.6.0-0.3
- Upstream release
* Tue Jul 8 2014 Laurent Destailleur 3.5.5-0.3
- Upstream release
* Tue Jul 1 2014 Laurent Destailleur 3.5.4-0.3
- Upstream release
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
- Upstream release
* Fri Feb 14 2014 Laurent Destailleur 3.5.2-0.3
- Upstream release
* Fri Feb 7 2014 Laurent Destailleur 3.5.1-0.3
- Upstream release
* Mon Dec 30 2013 Laurent Destailleur 3.5.0-0.3
- Initial version (#723326)

View File

@ -357,20 +357,3 @@ fi
* Wed Jul 15 2014 Laurent Destailleur 3.6.0-0.3
- Upstream release
* Tue Jul 8 2014 Laurent Destailleur 3.5.5-0.3
- Upstream release
* Tue Jul 1 2014 Laurent Destailleur 3.5.4-0.3
- Upstream release
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
- Upstream release
* Fri Feb 14 2014 Laurent Destailleur 3.5.2-0.3
- Upstream release
* Fri Feb 7 2014 Laurent Destailleur 3.5.1-0.3
- Upstream release
* Mon Dec 30 2013 Laurent Destailleur 3.5.0-0.3
- Initial version (#723326)

View File

@ -1,9 +1,12 @@
README (English)
--------------------------------
This directory contains ruleset files to use to
develop Dolibarr EPR & CRM with Eclipse.
This directory contains ruleset files to use to develop Dolibarr EPR & CRM.
Note: You must setup the PTI plugin of Eclipse into PHPCodeSniffer menu with:
To install/upgrade phpcs:
> sudo pear upgrade PHP_CodeSniffer
Note with Eclipse: You must setup the PTI plugin of Eclipse into PHPCodeSniffer menu with:
* tab value to 4
* path of code sniffer standard to dev/codesniffer
* path of code sniffer standard to dev/codesniffer

View File

@ -6,6 +6,7 @@
<exclude-pattern>*/conf.php</exclude-pattern>
<exclude-pattern>*/includes/*</exclude-pattern>
<exclude-pattern>*/documents/*</exclude-pattern>
<exclude-pattern>*/dev/vagrant/*</exclude-pattern>
<exclude-pattern>*/custom/*</exclude-pattern>
<exclude-pattern>*/nltechno*</exclude-pattern>
@ -169,6 +170,40 @@
<rule ref="PEAR.Commenting.ClassComment.MissingTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@authorTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@categoryTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@licenseTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@linkTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.ClassComment.Missing@packageTag">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName">
<severity>0</severity>
</rule>
<!-- TODO Remove this and fix reported errors -->
<rule ref="PEAR.Commenting.ClassComment.Missing">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.MissingReturn">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.ReturnNotRequired">
<severity>0</severity>
</rule>
<rule ref="PEAR.Commenting.FunctionComment.Missing">
<severity>0</severity>
</rule>
<!--
<rule ref="PEAR.Commenting.FileComment" />
@ -226,6 +261,24 @@
<rule ref="PEAR.Functions.FunctionCallSignature.Indent">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceBeforeOpenBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterCloseBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.ValidDefaultValue" />

View File

@ -155,8 +155,8 @@ foreach ( $list as $key ) {
print '</td></tr>';
}
print '</form>';
print "</table>\n";
print '</form>';
print '<br /><div style="text-align:center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="button"></div>';

View File

@ -120,6 +120,9 @@ if ($result) {
$i = 0;
print_barre_liste($langs->trans("ImportAccount"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num_lines);
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n";
print '<input type="hidden" name="action" value="import">';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td>' . $langs->trans("accountingaccount") . '</td>';
print '<td>' . $langs->trans("label") . '</td>';
@ -132,9 +135,6 @@ if ($result) {
$form = new Form($db);
$htmlacc = new FormVentilation($db);
print '<form action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n";
print '<input type="hidden" name="action" value="import">';
$var = true;
while ( $i < min($num_lines, $limit) ) {
$objp = $db->fetch_object($result);

View File

@ -181,7 +181,6 @@ print '<td colspan="2">'.nl2br($langs->trans('OptionModeTrueDesc'));
print "</td></tr>\n";
print '<tr '.$bc[true].'><td width="200"><input type="radio" name="accounting_mode" value="CREANCES-DETTES"'.($accounting_mode == 'CREANCES-DETTES' ? ' checked' : '').'> '.$langs->trans('OptionModeVirtual').'</td>';
print '<td colspan="2">'.nl2br($langs->trans('OptionModeVirtualDesc'))."</td></tr>\n";
print '</form>';
print "</table>\n";
@ -285,10 +284,10 @@ if (! empty($conf->global->ACCOUNTING_LIST_SORT_VENTILATION_DONE)) {
}
print '</tr>';
print '</form>';
print "</table>\n";
print '<br /><br /><div style="text-align:center"><input type="submit" class="button" value="'.$langs->trans('Modify').'" name="button"></div>';
print '</form>';
llxFooter();
$db->close();

View File

@ -112,10 +112,10 @@ foreach ( $list as $key ) {
print '</td></tr>';
}
print '</form>';
print "</table>\n";
print '<br /><div style="text-align:center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="button"></div>';
print '</form>';
print '<br />';

View File

@ -358,7 +358,8 @@ else
print '<td><input type="submit" class="button" value="' . $langs->trans("Save") . '"></td>';
print '</tr>';
}
print "</table>";
print '</table>';
print '</form>';
}
}
}

View File

@ -27,7 +27,7 @@
/**
* Class to manage accountancy book keeping
*/
class BookKeeping
class BookKeeping extends CommonObject
{
var $db;
var $error;

View File

@ -48,7 +48,6 @@ class AdherentStats extends Stats
* @param DoliDB $db Database handler
* @param int $socid Id third party
* @param int $userid Id user for filter
* @return AdherentStats
*/
function __construct($db, $socid=0, $userid=0)
{

View File

@ -23,6 +23,7 @@
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/member.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
$graphwidth=DolGraph::getDefaultGraphSizeForStats('width',700);
@ -69,7 +70,7 @@ dol_mkdir($dir);
if ($mode)
{
// Define sql
// Define sql
if ($mode == 'memberbycountry')
{
$label=$langs->trans("Country");

View File

@ -53,29 +53,30 @@ $searchformmodule=array('Module1Name','Module1Name','Module50Name','Module50Name
if ($action == 'update')
{
dolibarr_set_const($db, "MAIN_LANG_DEFAULT", $_POST["main_lang_default"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_MULTILANGS", $_POST["main_multilangs"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", $_POST["main_size_liste_limit"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", $_POST["main_disable_javascript"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_BUTTON_HIDE_UNAUTHORIZED", $_POST["MAIN_BUTTON_HIDE_UNAUTHORIZED"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_START_WEEK", $_POST["MAIN_START_WEEK"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_DAYS", $_POST["MAIN_DEFAULT_WORKING_DAYS"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", $_POST["MAIN_DEFAULT_WORKING_HOURS"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SHOW_LOGO", $_POST["MAIN_SHOW_LOGO"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", $_POST["MAIN_FIRSTNAME_NAME_POSITION"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_LANG_DEFAULT", $_POST["main_lang_default"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_MULTILANGS", $_POST["main_multilangs"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", $_POST["main_size_liste_limit"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", $_POST["main_disable_javascript"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_BUTTON_HIDE_UNAUTHORIZED", $_POST["MAIN_BUTTON_HIDE_UNAUTHORIZED"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_START_WEEK", $_POST["MAIN_START_WEEK"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_DAYS", $_POST["MAIN_DEFAULT_WORKING_DAYS"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", $_POST["MAIN_DEFAULT_WORKING_HOURS"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SHOW_LOGO", $_POST["MAIN_SHOW_LOGO"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_ACTIVATE_HTML5", $_POST["MAIN_ACTIVATE_HTML5"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", $_POST["MAIN_FIRSTNAME_NAME_POSITION"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_THEME", $_POST["main_theme"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_THEME", $_POST["main_theme"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_CONTACT", $_POST["MAIN_SEARCHFORM_CONTACT"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_SOCIETE", $_POST["MAIN_SEARCHFORM_SOCIETE"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_PRODUITSERVICE",$_POST["MAIN_SEARCHFORM_PRODUITSERVICE"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_CONTACT", $_POST["MAIN_SEARCHFORM_CONTACT"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_SOCIETE", $_POST["MAIN_SEARCHFORM_SOCIETE"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_PRODUITSERVICE", $_POST["MAIN_SEARCHFORM_PRODUITSERVICE"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER",$_POST["MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_ADHERENT",$_POST["MAIN_SEARCHFORM_ADHERENT"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SEARCHFORM_ADHERENT", $_POST["MAIN_SEARCHFORM_ADHERENT"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_HELPCENTER_DISABLELINK", $_POST["MAIN_HELPCENTER_DISABLELINK"],'chaine',0,'',0); // Param for all entities
dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr($_POST["main_motd"]),'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr($_POST["main_home"]),'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", $_POST["MAIN_HELP_DISABLELINK"],'chaine',0,'',0); // Param for all entities
dolibarr_set_const($db, "MAIN_HELPCENTER_DISABLELINK", $_POST["MAIN_HELPCENTER_DISABLELINK"],'chaine',0,'',0); // Param for all entities
dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr($_POST["main_motd"]),'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr($_POST["main_home"]),'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", $_POST["MAIN_HELP_DISABLELINK"],'chaine',0,'',0); // Param for all entities
// This one is not always defined
if (isset($_POST["MAIN_USE_PREVIEW_TABS"])) dolibarr_set_const($db, "MAIN_USE_PREVIEW_TABS", $_POST["MAIN_USE_PREVIEW_TABS"],'chaine',0,'',$conf->entity);
@ -119,7 +120,7 @@ if ($action == 'edit') // Edit
print_fiche_titre($langs->trans("Language"),'','').'<br>';
print '<table summary="edit" class="noborder" width="100%">';
print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td>';
print '<tr class="liste_titre"><td>'.$langs->trans("Parameters").'</td><td>'.$langs->trans("Value").'</td>';
print '<td width="20">&nbsp;</td>';
print '</tr>';
@ -161,7 +162,7 @@ if ($action == 'edit') // Edit
// Other
print '<table summary="edit" class="noborder" width="100%">';
print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td>';
print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Parameters").'</td><td>'.$langs->trans("Value").'</td>';
print '<td width="20">&nbsp;</td>';
print '</tr>';
@ -172,6 +173,17 @@ if ($action == 'edit') // Edit
print '</td>';
print '<td width="20">&nbsp;</td>';
print '</tr>';
// Activate Html5 - Developement - Only available on Eldy template
if ($conf->global->MAIN_FEATURES_LEVEL == 2 || ! empty($conf->global->MAIN_ACTIVATE_HTML5))
{
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("EnableHtml5").'</td><td>';
print $form->selectyesno('MAIN_ACTIVATE_HTML5',$conf->global->MAIN_ACTIVATE_HTML5,1);
print '</td>';
print '<td width="20">&nbsp;</td>';
print '</tr>';
}
// Max size of lists
$var=!$var;
@ -301,7 +313,7 @@ else // Show
// Language
print_fiche_titre($langs->trans("Language"),'','').'<br>';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td>'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td><td>&nbsp;</td></tr>';
print '<tr class="liste_titre"><td>'.$langs->trans("Parameters").'</td><td>'.$langs->trans("Value").'</td><td>&nbsp;</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("DefaultLanguage").'</td><td>';
@ -345,12 +357,21 @@ else // Show
// Other
$var=true;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Parameter").'</td><td colspan="2">'.$langs->trans("Value").'</td></tr>';
print '<tr class="liste_titre"><td width="35%">'.$langs->trans("Parameters").'</td><td colspan="2">'.$langs->trans("Value").'</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("EnableShowLogo").'</td><td>' . yn($conf->global->MAIN_SHOW_LOGO) . '</td>';
print '<td width="20">&nbsp;</td>';
print "</tr>";
// Activate Html5 - Developement - Only available on Eldy template
if ($conf->global->MAIN_FEATURES_LEVEL == 2 || ! empty($conf->global->MAIN_ACTIVATE_HTML5))
{
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("EnableHtml5").'</td><td>' . yn($conf->global->MAIN_ACTIVATE_HTML5) . '</td>';
print '<td width="20">&nbsp;</td>';
print "</tr>";
}
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td>' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '</td>';

View File

@ -113,35 +113,20 @@ $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToM
print_fiche_titre($langs->trans("StockSetup"),$linkback,'setup');
$form=new Form($db);
$var=true;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print " <td>".$langs->trans("Parameters")."</td>\n";
print " <td align=\"right\" width=\"160\">&nbsp;</td>\n";
print '</tr>'."\n";
/*
* Formulaire parametres divers
*/
$disabled='';
if (! empty($conf->productbatch->enabled))
{
$langs->load("productbatch");
$disabled=' disabled="disabled"';
print info_admin($langs->trans("WhenProductBatchModuleOnOptionAreForced"));
}
$var=!$var;
print "<tr ".$bc[$var].">";
print '<td width="60%">'.$langs->trans("UserWarehouseAutoCreate").'</td>';
print '<td width="160" align="right">';
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_USERSTOCK_AUTOCREATE\">";
print $form->selectyesno("STOCK_USERSTOCK_AUTOCREATE",$conf->global->STOCK_USERSTOCK_AUTOCREATE,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print "</td>\n";
print "</tr>\n";
print '<br>';
print '</table>';
print '<br>';
//if (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER) || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT))
//{
print info_admin($langs->trans("IfYouUsePointOfSaleCheckModule"));
//}
// Title rule for stock decrease
print '<table class="noborder" width="100%">';
@ -160,8 +145,8 @@ if (! empty($conf->facture->enabled))
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_CALCULATE_ON_BILL\">";
print $form->selectyesno("STOCK_CALCULATE_ON_BILL",$conf->global->STOCK_CALCULATE_ON_BILL,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print $form->selectyesno("STOCK_CALCULATE_ON_BILL",$conf->global->STOCK_CALCULATE_ON_BILL,1,$disabled);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'"'.$disabled.'>';
print "</form>\n</td>\n</tr>\n";
}
@ -174,8 +159,8 @@ if (! empty($conf->commande->enabled))
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_CALCULATE_ON_VALIDATE_ORDER\">";
print $form->selectyesno("STOCK_CALCULATE_ON_VALIDATE_ORDER",$conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print $form->selectyesno("STOCK_CALCULATE_ON_VALIDATE_ORDER",$conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER,1,$disabled);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'"'.$disabled.'>';
print "</form>\n</td>\n</tr>\n";
}
@ -188,16 +173,12 @@ if (! empty($conf->expedition->enabled))
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_CALCULATE_ON_SHIPMENT\">";
print $form->selectyesno("STOCK_CALCULATE_ON_SHIPMENT",$conf->global->STOCK_CALCULATE_ON_SHIPMENT,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print $form->selectyesno("STOCK_CALCULATE_ON_SHIPMENT",$conf->global->STOCK_CALCULATE_ON_SHIPMENT,1,$disabled);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'"'.$disabled.'>';
print "</form>\n</td>\n</tr>\n";
}
print '</table>';
//if (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER) || ! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT))
//{
print info_admin($langs->trans("IfYouUsePointOfSaleCheckModule"));
//}
print '<br>';
// Title rule for stock increase
@ -217,8 +198,8 @@ if (! empty($conf->fournisseur->enabled))
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_CALCULATE_ON_SUPPLIER_BILL\">";
print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_BILL",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_BILL",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL,1,$disabled);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'"'.$disabled.'>';
print "</form>\n</td>\n</tr>\n";
}
@ -231,8 +212,8 @@ if (! empty($conf->fournisseur->enabled))
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER\">";
print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER,1,$disabled);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'"'.$disabled.'>';
print "</form>\n</td>\n</tr>\n";
}
if (! empty($conf->fournisseur->enabled))
@ -244,8 +225,8 @@ if (! empty($conf->fournisseur->enabled))
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER\">";
print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER,1,$disabled);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'"'.$disabled.'>';
print "</form>\n</td>\n</tr>\n";
}
@ -334,6 +315,34 @@ if ($virtualdiffersfromphysical)
print '</table>';
}
$var=true;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print " <td>".$langs->trans("Other")."</td>\n";
print " <td align=\"right\" width=\"160\">&nbsp;</td>\n";
print '</tr>'."\n";
$var=!$var;
print "<tr ".$bc[$var].">";
print '<td width="60%">'.$langs->trans("UserWarehouseAutoCreate").'</td>';
print '<td width="160" align="right">';
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_USERSTOCK_AUTOCREATE\">";
print $form->selectyesno("STOCK_USERSTOCK_AUTOCREATE",$conf->global->STOCK_USERSTOCK_AUTOCREATE,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print "</td>\n";
print "</tr>\n";
print '<br>';
print '</table>';
print '<br>';
llxFooter();
$db->close();

View File

@ -16,7 +16,7 @@
*/
// Instanciation et initialisation de l'objet xmlhttprequest
function file (fichier) {
function file(fichier) {
// Instanciation de l'objet pour Mozilla, Konqueror, Opera, Safari, etc ...
if (window.XMLHttpRequest) {
@ -51,7 +51,7 @@ function file (fichier) {
// Affichage des donnees aTexte dans le bloc identifie par aId
function afficheDonnees (aId, aTexte) {
function afficheDonnees(aId, aTexte) {
document.getElementById(aId).innerHTML = aTexte;
@ -59,7 +59,7 @@ function afficheDonnees (aId, aTexte) {
// aCible : id du bloc de destination; aCode : argument a passer a la page php chargee du traitement et de l'affichage
function verifResultat (aCible, aCode) {
function verifResultat(aCible, aCode) {
if (aCode != '') {
if (texte = file ('facturation_dhtml.php?code='+escape(aCode))) {
@ -76,21 +76,9 @@ function verifResultat (aCible, aCode) {
// Change dynamiquement la classe de l'element ayant l'id aIdElement pour aClasse
function setStyle (aIdElement, aClasse) {
function setStyle(aIdElement, aClasse) {
aIdElement.className = aClasse;
}

View File

@ -16,7 +16,7 @@
*/
// Calcul et affichage en temps reel des informations sur le produit en cours
function modif () {
function modif() {
var prix_unit = parseFloat ( document.getElementById('frmQte').txtPrixUnit.value );
var qte = parseFloat ( document.getElementById('frmQte').txtQte.value );
@ -71,7 +71,7 @@ function modif () {
}
// Affecte la source de la requete (liste deroulante ou champ texte 'ref') au champ cache
function setSource (aSrc) {
function setSource(aSrc) {
document.getElementById('frmFacturation').hdnSource.value = aSrc;
document.getElementById('frmFacturation').submit();
@ -79,7 +79,7 @@ function setSource (aSrc) {
}
// Verification de la coherence des informations saisies dans le formulaire de choix du nombre d'articles
function verifSaisie () {
function verifSaisie() {
if ( document.getElementById('frmQte').txtQte.value ) {
@ -95,17 +95,17 @@ function verifSaisie () {
}
// Verification de la coherence des informations saisies dans le formulaire de calcul de la difference
function verifDifference () {
function verifDifference() {
var du = parseFloat ( document.getElementById('frmDifference').txtDu.value );
var encaisse = parseFloat ( document.getElementById('frmDifference').txtEncaisse.value );
if ( encaisse > du ) {
if (encaisse > du) {
resultat = Math.round ( (encaisse - du) * 100 ) / 100;
document.getElementById('frmDifference').txtRendu.value = resultat.toFixed(2);
} else if ( encaisse == du ) {
} else if (encaisse == du) {
document.getElementById('frmDifference').txtRendu.value = '0';
@ -118,14 +118,14 @@ function verifDifference () {
}
// Affecte le moyen de paiement (ESP, CB ou CHQ) au champ cache en fonction du bouton clique
function verifClic (aChoix) {
function verifClic(aChoix) {
document.getElementById('frmDifference').hdnChoix.value = aChoix;
}
// Determination du moyen de paiement, et validation du formulaire si les donnees sont coherentes
function verifReglement () {
function verifReglement() {
var choix = document.getElementById('frmDifference').hdnChoix.value;
var du = parseFloat (document.getElementById('frmDifference').txtDu.value);
@ -172,5 +172,4 @@ function verifReglement () {
return false;
}
}

View File

@ -1045,7 +1045,7 @@ if ($id > 0)
print '<tr><td>'.$langs->trans("Title").'</td><td colspan="3">'.$object->label.'</td></tr>';
// Full day event
print '<tr><td>'.$langs->trans("EventOnFullDay").'</td><td colspan="3">'.yn($object->fulldayevent).'</td></tr>';
print '<tr><td>'.$langs->trans("EventOnFullDay").'</td><td colspan="3">'.yn($object->fulldayevent, 3).'</td></tr>';
$rowspan=4;
if (empty($conf->global->AGENDA_DISABLE_LOCATION)) $rowspan++;

View File

@ -57,7 +57,7 @@ class ActionComm extends CommonObject
var $datef; // Date action end (datep2)
var $durationp = -1; // -1=Unkown duration // deprecated
var $fulldayevent = 0; // 1=Event on full day
var $punctual = 1; // Milestone // TODO Not sure we need this. Milestone is already event with end date = start date
var $punctual = 1; // Milestone // deprecated. Milestone is already event with end date = start date
var $percentage; // Percentage
var $location; // Location
@ -1142,7 +1142,7 @@ class ActionComm extends CommonObject
*/
function initAsSpecimen()
{
global $user,$langs,$conf;
global $user,$langs,$conf,$user;
$now=dol_now();
@ -1166,6 +1166,9 @@ class ActionComm extends CommonObject
$this->transparency=1; // 1 means opaque
$this->priority=1;
$this->note = 'Note';
$this->userownerid=$user->id;
$this->userassigned[$user->id]=array('id'=>$user->id, 'transparency'=> 1);
}
}

View File

@ -180,7 +180,7 @@ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as ut ON a.fk_user_action = ut.rowid";
if ($usergroup > 0) $sql.= ", ".MAIN_DB_PREFIX."usergroup_user as ugu";
$sql.= " WHERE c.id = a.fk_action";
$sql.= ' AND a.fk_user_author = u.rowid';
$sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')'; // To limit to entity
$sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')';
if ($actioncode) $sql.=" AND c.code='".$db->escape($actioncode)."'";
if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid);
if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND (a.fk_soc IS NULL OR sc.fk_user = " .$user->id . ")";

View File

@ -610,7 +610,7 @@ else
$sql = "SELECT u.rowid, u.lastname as lastname, u.firstname, u.statut, u.login, u.admin, u.entity";
$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ug ON u.rowid = ug.fk_user";
$sql.= " WHERE u.entity IN (".getEntity('user').")";
$sql.= " WHERE u.entity IN (".getEntity('user',1).")";
if ($usergroup > 0) $sql.= " AND ug.fk_usergroup = ".$usergroup;
if (GETPOST("usertodo","int",3) > 0) $sql.=" AND u.rowid = ".GETPOST("usertodo","int",3);
//print $sql;

View File

@ -1,7 +1,7 @@
<?php
/* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Eric Seigne <erics@rycks.com>
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
*
* This program is free software; you can redistribute it and/or modify
@ -55,6 +55,7 @@ $result = restrictedArea($user, 'agenda', $socid, '', 'myactions');
/*
* Actions
*/
if ($action == 'builddoc')
{
$cat = new CommActionRapport($db, $month, $year);
@ -79,7 +80,7 @@ $sql.= " date_format(a.datep, '%Y') as year";
$sql.= " FROM ".MAIN_DB_PREFIX."actioncomm as a,";
$sql.= " ".MAIN_DB_PREFIX."user as u";
$sql.= " WHERE a.fk_user_author = u.rowid";
$sql.= " AND a.entity = ".$conf->entity;
$sql.= ' AND a.entity IN ('.getEntity('agenda', 1).')';
//$sql.= " AND percent = 100";
$sql.= " GROUP BY year, month, df";
$sql.= " ORDER BY year DESC, month DESC, df DESC";

View File

@ -530,6 +530,7 @@ if ($id > 0)
while ($i < $num && $i < $MAXLIST)
{
$objp = $db->fetch_object($resql);
$var=!$var;
print "<tr ".$bc[$var].">";
print '<td class="nowrap"><a href="propal.php?id='.$objp->propalid.'">'.img_object($langs->trans("ShowPropal"),"propal").' '.$objp->ref.'</a>'."\n";
if ( ($db->jdate($objp->dp) < ($now - $conf->propal->cloture->warning_delay)) && $objp->fk_statut == 1 )
@ -539,7 +540,6 @@ if ($id > 0)
print '</td><td align="right" width="80">'.dol_print_date($db->jdate($objp->dp),'day')."</td>\n";
print '<td align="right" style="min-width: 60px">'.price($objp->total_ht).'</td>';
print '<td align="right" style="min-width: 60px" class="nowrap">'.$propal_static->LibStatut($objp->fk_statut,5).'</td></tr>';
$var=!$var;
$i++;
}
$db->free($resql);

View File

@ -1151,6 +1151,7 @@ if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->propal->
}
}
/*
* View
*/
@ -1236,12 +1237,13 @@ if ($action == 'create')
print '<form name="addprop" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
print '<input type="hidden" name="action" value="add">';
if ($origin != 'project' && $originid) {
print '<input type="hidden" name="origin" value="' . $origin . '">';
print '<input type="hidden" name="originid" value="' . $originid . '">';
}
dol_fiche_head();
print '<table class="border" width="100%">';
// Reference
@ -1435,16 +1437,13 @@ if ($action == 'create')
print "</table>\n";
print '<br>';
/*
* Combobox pour la fonction de copie
*/
if (empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE)) print '<input type="hidden" name="createmode" value="empty">';
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) || ! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) print '<br><table>';
if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE))
{
// For backward compatibility
@ -1514,9 +1513,10 @@ if ($action == 'create')
}
print '</td></tr>';
}
if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE) || ! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) print '</table><br>';
if (! empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE) || ! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) print '</table>';
dol_fiche_end();
$langs->load("bills");
print '<div class="center">';
print '<input type="submit" class="button" value="' . $langs->trans("CreateDraft") . '">';

View File

@ -50,7 +50,7 @@ echo $this->control->tpl['ajax_selectcountry']; ?>
</tr>
<tr>
<td><?php echo $langs->trans("Company"); ?></td>
<td><?php echo $langs->trans("ThirdParty"); ?></td>
<td colspan="3"><?php echo $this->control->tpl['company']; ?></td>
</tr>

View File

@ -59,7 +59,7 @@ echo $this->control->tpl['ajax_selectcountry'];
</tr>
<tr>
<td><?php echo $langs->trans("Company"); ?></td>
<td><?php echo $langs->trans("ThirdParty"); ?></td>
<td colspan="3"><?php echo $this->control->tpl['company']; ?></td>
</tr>

View File

@ -44,7 +44,7 @@ dol_htmloutput_errors($this->control->tpl['error'],$this->control->tpl['errors']
</tr>
<tr>
<td><?php echo $langs->trans("Company"); ?></td>
<td><?php echo $langs->trans("ThirdParty"); ?></td>
<td colspan="3"><?php echo $this->control->tpl['company']; ?></td>
</tr>

View File

@ -456,7 +456,7 @@ else
{
if ($socid > 0)
{
print '<tr><td><label for="socid">'.$langs->trans("Company").'</label></td>';
print '<tr><td><label for="socid">'.$langs->trans("ThirdParty").'</label></td>';
print '<td colspan="3" class="maxwidthonsmartphone">';
print $objsoc->getNomUrl(1);
print '</td>';
@ -464,7 +464,7 @@ else
print '</td></tr>';
}
else {
print '<tr><td><label for="socid">'.$langs->trans("Company").'</label></td><td colspan="3" class="maxwidthonsmartphone">';
print '<tr><td><label for="socid">'.$langs->trans("ThirdParty").'</label></td><td colspan="3" class="maxwidthonsmartphone">';
print $form->select_company($socid,'socid','',1);
print '</td></tr>';
}
@ -690,7 +690,7 @@ else
// Company
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS))
{
print '<tr><td><label for="socid">'.$langs->trans("Company").'</label></td>';
print '<tr><td><label for="socid">'.$langs->trans("ThirdParty").'</label></td>';
print '<td colspan="3" class="maxwidthonsmartphone">';
print $form->select_company(GETPOST('socid','int')?GETPOST('socid','int'):($object->socid?$object->socid:-1),'socid','',1);
print '</td>';
@ -924,7 +924,7 @@ else
// Company
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS))
{
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="3">';
print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="3">';
if ($object->socid > 0)
{
$objsoc->fetch($object->socid);

View File

@ -77,11 +77,11 @@ if (empty($conf->global->SOCIETE_DISABLE_CONTACTS))
$objsoc = new Societe($db);
$objsoc->fetch($contact->socid);
print '<tr><td width="15%">'.$langs->trans("Company").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
print '<tr><td width="15%">'.$langs->trans("ThirdParty").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
}
else
{
print '<tr><td width="15%">'.$langs->trans("Company").'</td><td colspan="3">';
print '<tr><td width="15%">'.$langs->trans("ThirdParty").'</td><td colspan="3">';
print $langs->trans("ContactNotLinkedToCompany");
print '</td></tr>';
}

View File

@ -105,11 +105,11 @@ if ($contact->socid > 0)
$objsoc = new Societe($db);
$objsoc->fetch($contact->socid);
print '<tr><td width="20%">'.$langs->trans("Company").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
print '<tr><td width="20%">'.$langs->trans("ThirdParty").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
}
else
{
print '<tr><td width="20%">'.$langs->trans("Company").'</td><td colspan="3">';
print '<tr><td width="20%">'.$langs->trans("ThirdParty").'</td><td colspan="3">';
print $langs->trans("ContactNotLinkedToCompany");
print '</td></tr>';
}

View File

@ -300,7 +300,7 @@ if ($result)
print_liste_field_titre($langs->trans("Lastname"),$_SERVER["PHP_SELF"],"p.lastname", $begin, $param, '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("Firstname"),$_SERVER["PHP_SELF"],"p.firstname", $begin, $param, '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("PostOrFunction"),$_SERVER["PHP_SELF"],"p.poste", $begin, $param, '', $sortfield,$sortorder);
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom", $begin, $param, '', $sortfield,$sortorder);
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom", $begin, $param, '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("Phone"),$_SERVER["PHP_SELF"],"p.phone", $begin, $param, '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("PhoneMobile"),$_SERVER["PHP_SELF"],"p.phone_mobile", $begin, $param, '', $sortfield,$sortorder);
print_liste_field_titre($langs->trans("Fax"),$_SERVER["PHP_SELF"],"p.fax", $begin, $param, '', $sortfield,$sortorder);

View File

@ -98,12 +98,12 @@ if ($id > 0)
$objsoc = new Societe($db);
$objsoc->fetch($object->socid);
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
}
else
{
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="3">';
print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="3">';
print $langs->trans("ContactNotLinkedToCompany");
print '</td></tr>';
}

View File

@ -111,11 +111,11 @@ if ($action == 'edit')
$objsoc = new Societe($db);
$objsoc->fetch($object->socid);
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td>';
print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td>';
}
else
{
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="3">';
print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="3">';
print $langs->trans("ContactNotLinkedToCompany");
print '</td></tr>';
}
@ -179,12 +179,12 @@ else
$objsoc = new Societe($db);
$objsoc->fetch($object->socid);
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="3">'.$objsoc->getNomUrl(1).'</td></tr>';
}
else
{
print '<tr><td>'.$langs->trans("Company").'</td><td colspan="3">';
print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="3">';
print $langs->trans("ContactNotLinkedToCompany");
print '</td></tr>';
}

View File

@ -40,10 +40,8 @@ class box_task extends ModeleBoxes
var $info_box_contents = array();
/**
* \brief Constructeur de la classe
*
* @return void
*/
* Constructor
*/
function box_task()
{
global $langs;
@ -126,7 +124,7 @@ class box_task extends ModeleBoxes
$this->info_box_contents[$i][3] = array('td' => 'align="right" ', 'text' => ConvertSecondToTime($totalplannedtot,'all',25200,5));
$this->info_box_contents[$i][4] = array('td' => 'align="right" ', 'text' => ConvertSecondToTime($totaldurationtot,'all',25200,5));
$this->info_box_contents[$i][5] = array('td' => '', 'text' => "");
}
/**

View File

@ -54,7 +54,6 @@ class CSMSFile
* @param int $deferred Deferred or not
* @param int $priority Priority
* @param int $class Class
* @return int
*/
function __construct($to,$from,$msg,$deliveryreceipt=0,$deferred=0,$priority=3,$class=1)
{

View File

@ -40,7 +40,6 @@ class AntiVir
* Constructor
*
* @param DoliDB $db Database handler
* @return AntiVir
*/
function __construct($db)
{

View File

@ -72,8 +72,6 @@ class Conf
/**
* Constructor
*
* @return Conf
*/
function __construct()
{
@ -367,6 +365,26 @@ class Conf
unset($this->global->PROJECT_USE_SEARCH_TO_SELECT);
}
if (! empty($conf->productbatch->enabled))
{
$this->global->STOCK_CALCULATE_ON_BILL=0;
$this->global->STOCK_CALCULATE_ON_VALIDATE_ORDER=0;
$this->global->STOCK_CALCULATE_ON_SHIPMENT=1;
$this->global->STOCK_CALCULATE_ON_SUPPLIER_BILL=0;
$this->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER=0;
$this->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER=1;
}
if (! empty($conf->productbatch->enabled))
{
$this->global->STOCK_CALCULATE_ON_BILL=0;
$this->global->STOCK_CALCULATE_ON_VALIDATE_ORDER=0;
$this->global->STOCK_CALCULATE_ON_SHIPMENT=1;
$this->global->STOCK_CALCULATE_ON_SUPPLIER_BILL=0;
$this->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER=0;
$this->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER=1;
}
// conf->currency
if (empty($this->global->MAIN_MONNAIE)) $this->global->MAIN_MONNAIE='EUR';
$this->currency=$this->global->MAIN_MONNAIE;
@ -376,7 +394,7 @@ class Conf
// By default, suppliers ojbects can be linked to all projects
$conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS = 1;
// conf->liste_limit = constante de taille maximale des listes
if (empty($this->global->MAIN_SIZE_LISTE_LIMIT)) $this->global->MAIN_SIZE_LISTE_LIMIT=25;
$this->liste_limit=$this->global->MAIN_SIZE_LISTE_LIMIT;
@ -432,6 +450,9 @@ class Conf
// Define list of limited modules
if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,facture,categorie,commande,fournisseur,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda,adherent'; // '' means 'all'. Note that contact is added here as it should be a module later.
// Enable select2
if (empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)) $conf->global->MAIN_USE_JQUERY_MULTISELECT='select2';
// Timeouts
if (empty($this->global->MAIN_USE_CONNECT_TIMEOUT)) $this->global->MAIN_USE_CONNECT_TIMEOUT=10;
if (empty($this->global->MAIN_USE_RESPONSE_TIMEOUT)) $this->global->MAIN_USE_RESPONSE_TIMEOUT=30;

View File

@ -40,7 +40,6 @@ class DolGeoIP
*
* @param string $type 'country' or 'city'
* @param string $datfile Data file
* @return GeoIP
*/
function __construct($type,$datfile)
{

View File

@ -45,7 +45,6 @@ class dolprintIPP
* @param string $userid userid
* @param string $user user
* @param string $password password
* @return printIPP
*/
function __construct($db,$host,$port,$userid,$user,$password)
{
@ -90,7 +89,7 @@ class dolprintIPP
global $conf,$db;
include_once DOL_DOCUMENT_ROOT.'/includes/printipp/CupsPrintIPP.php';
$ipp = new CupsPrintIPP();
$ipp->setLog(DOL_DATA_ROOT.'/dolibarr_printipp.log','file',3); // logging very verbose
$ipp->setHost($this->host);
@ -121,12 +120,12 @@ class dolprintIPP
}
}
}
// Set number of copy
$ipp->setCopies($obj->copy);
$ipp->setData(DOL_DATA_ROOT.'/'.$module.'/'.$file);
$ipp->printJob();
return '';
}

View File

@ -36,7 +36,6 @@ class GoogleAPI
*
* @param DoliDB $db Database handler
* @param string $key Google key
* @return GoogleAPI
*/
function __construct($db,$key)
{

View File

@ -825,9 +825,22 @@ class Form
}
else
{
if (! $forcecombo)
{
$out.='
<script type="text/javascript">
$(document).ready(function () {
$(\'#'.$htmlname.'\').select2({
width: \'resolve\',
minimumInputLength: 0,
});
});
</script>';
}
if (count($events)) // Add management of event
{
print '<script type="text/javascript">
$out.='<script type="text/javascript">
$(document).ready(function() {
jQuery("#'.$htmlname.'").change(function () {
var obj = '.json_encode($events).';
@ -1077,7 +1090,7 @@ class Form
{
$num=$this->db->num_rows($resql);
if ($conf->use_javascript_ajax && $conf->global->CONTACT_USE_SEARCH_TO_SELECT && ! $forcecombo && ! $options_only)
if ($conf->use_javascript_ajax && ! $forcecombo && ! $options_only)
{
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$out.= ajax_combobox($htmlname, $events, $conf->global->CONTACT_USE_SEARCH_TO_SELECT);
@ -1338,10 +1351,20 @@ class Form
}
else
{
$out.= '<select class="flat" name="'.$htmlname.'" disabled="disabled">';
$out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'" disabled="disabled">';
$out.= '<option value="">'.$langs->trans("None").'</option>';
}
$out.= '</select>';
$out.= '<script type="text/javascript">
$(document).ready(function() {
$(\'#'.$htmlname.'\').select2({
width: \'resolve\',
minimumInputLength: 0
});
})
</script>';
}
else
{
@ -4119,10 +4142,11 @@ class Form
* @param int $disabled Html select box is disabled
* @param int $sort 'ASC' or 'DESC' = Sort on label, '' or 'NONE' = Do not sort
* @param string $morecss Add more class to css styles
* @param int $addjscombo Add js combo
* @return string HTML select string.
* @see multiselectarray
*/
static function selectarray($htmlname, $array, $id='', $show_empty=0, $key_in_label=0, $value_as_key=0, $moreparam='', $translate=0, $maxlen=0, $disabled=0, $sort='', $morecss='')
static function selectarray($htmlname, $array, $id='', $show_empty=0, $key_in_label=0, $value_as_key=0, $moreparam='', $translate=0, $maxlen=0, $disabled=0, $sort='', $morecss='', $addjscombo=0)
{
global $conf, $langs;
@ -4131,13 +4155,15 @@ class Form
$out='';
// Add code for jquery to use multiselect
if (empty($conf->dol_use_jmobile) && (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')))
if ($addjscombo && empty($conf->dol_use_jmobile) && (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')))
{
$tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT'):$conf->global->MAIN_USE_JQUERY_MULTISELECT;
$out='<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' -->
$out.='<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' -->
<script type="text/javascript">
$(document).ready(function () {
$(\'#'.$htmlname.'\').'.$tmpplugin.'({
width: \'off\',
minimumInputLength: 0
});
});
</script>';

View File

@ -520,118 +520,105 @@ class FormCompany
* @param string $htmlname Name of HTML form
* @param array $limitto Disable answers that are not id in this array list
* @param int $forceid This is to force another object id than object->id
* @param array $events More js events option. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
* @param string $moreparam String with more param to add into url when noajax search is used.
* @return int The selected third party ID
*/
function selectCompaniesForNewContact($object, $var_id, $selected='', $htmlname='newcompany', $limitto='', $forceid=0, $events=array(), $moreparam='')
function selectCompaniesForNewContact($object, $var_id, $selected='', $htmlname='newcompany', $limitto='', $forceid=0, $moreparam='')
{
global $conf, $langs;
// On recherche les societes
$sql = "SELECT s.rowid, s.nom as name FROM";
$sql.= " ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE s.entity IN (".getEntity('societe', 1).")";
if ($selected && $conf->use_javascript_ajax && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT)) $sql.= " AND s.rowid = ".$selected;
if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT))
{
// Use Ajax search
$minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2);
$socid=0; $name='';
if ($selected > 0)
{
$tmpthirdparty=new Societe($this->db);
$result = $tmpthirdparty->fetch($selected);
if ($result > 0)
{
$socid = $selected;
$name = $tmpthirdparty->name;
}
}
// Refresh contacts list on thirdparty list change
$htmloption='';
$events=array();
$events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled'));
if (count($events)) // If there is some ajax events to run once selection is done, we add code here to run events
{
print '<script type="text/javascript">
jQuery(document).ready(function() {
$("#search_'.$htmlname.'").change(function() {
var obj = '.json_encode($events).';
$.each(obj, function(key,values) {
if (values.method.length) {
runJsCodeForEvent'.$htmlname.'(values);
}
});
/* Clean contact */
$("div#s2id_contactid>a>span").html(\'\');
});
// Function used to execute events when search_htmlname change
function runJsCodeForEvent'.$htmlname.'(obj) {
var id = $("#'.$htmlname.'").val();
var method = obj.method;
var url = obj.url;
var htmlname = obj.htmlname;
$.getJSON(url,
{
action: method,
id: id,
htmlname: htmlname
},
function(response) {
if (response != null)
{
$.each(obj.params, function(key,action) {
if (key.length) {
var num = response.num;
if (num > 0) {
$("#" + key).removeAttr(action);
} else {
$("#" + key).attr(action, action);
}
}
});
$("select#" + htmlname).html(response.value);
}
}
);
};
});
</script>';
}
print "\n".'<!-- Input text for third party with Ajax.Autocompleter (selectCompaniesForNewContact) -->'."\n";
print '<input type="text" size="30" id="search_'.$htmlname.'" name="search_'.$htmlname.'" value="'.$name.'" '.$htmloption.' />';
print ajax_autocompleter(($socid?$socid:-1),$htmlname,DOL_URL_ROOT.'/societe/ajaxcompanies.php','',$minLength);
return $socid;
}
else
{
// Search to list thirdparties
$sql = "SELECT s.rowid, s.nom as name FROM";
$sql.= " ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE s.entity IN (".getEntity('societe', 1).")";
// For ajax search we limit here. For combo list, we limit later
if ($conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT
&& is_array($limitto) && count($limitto))
if (is_array($limitto) && count($limitto))
{
$sql.= " AND s.rowid IN (".join(',',$limitto).")";
}
}
$sql.= " ORDER BY s.nom ASC";
$sql.= " ORDER BY s.nom ASC";
$resql = $this->db->query($sql);
if ($resql)
{
if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT))
$resql = $this->db->query($sql);
if ($resql)
{
// Use Ajax search
$minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2);
$socid=0;
if ($selected)
{
$obj = $this->db->fetch_object($resql);
$socid = $obj->rowid?$obj->rowid:'';
}
// We recall a page after a small delay when a new input has been selected
$htmloption='';
//$javaScript = "window.location=\'".$_SERVER['PHP_SELF']."?".$var_id."=".($forceid>0?$forceid:$object->id)."&amp;".$htmlname."=\' + document.getElementById(\'".$htmlname."\').value;";
//$htmloption.= 'onChange="ac_delay(\''.$javaScript.'\',\'500\');"'; // When we select with mouse
//$htmloption.= 'onKeyUp="if (event.keyCode== 13) { ac_delay(\''.$javaScript.'\',\'500\'); }"'; // When we select with keyboard
if (count($events)) // If there is some ajax events to run once selection is done, we add code here to run events
{
print '<script type="text/javascript">
jQuery(document).ready(function() {
$("#search_'.$htmlname.'").change(function() {
var obj = '.json_encode($events).';
$.each(obj, function(key,values) {
if (values.method.length) {
runJsCodeForEvent'.$htmlname.'(values);
}
});
});
// Function used to execute events when search_htmlname change
function runJsCodeForEvent'.$htmlname.'(obj) {
var id = $("#'.$htmlname.'").val();
var method = obj.method;
var url = obj.url;
var htmlname = obj.htmlname;
$.getJSON(url,
{
action: method,
id: id,
htmlname: htmlname
},
function(response) {
if (response != null)
{
$.each(obj.params, function(key,action) {
if (key.length) {
var num = response.num;
if (num > 0) {
$("#" + key).removeAttr(action);
} else {
$("#" + key).attr(action, action);
}
}
});
$("select#" + htmlname).html(response.value);
}
});
};
});
</script>';
}
print "\n".'<!-- Input text for third party with Ajax.Autocompleter (selectCompaniesForNewContact) -->'."\n";
//print '<table class="nobordernopadding"><tr class="nobordernopadding">';
//print '<td class="nobordernopadding">';
if ($obj->rowid == 0)
{
print '<input type="text" size="30" id="search_'.$htmlname.'" name="search_'.$htmlname.'" value="" '.$htmloption.' />';
}
else
{
print '<input type="text" size="30" id="search_'.$htmlname.'" name="search_'.$htmlname.'" value="'.$obj->name.'" '.$htmloption.' />';
}
print ajax_autocompleter(($socid?$socid:-1),$htmlname,DOL_URL_ROOT.'/societe/ajaxcompanies.php','',$minLength);
//print '</td>';
//print '</tr>';
//print '</table>';
//print "\n";
return $socid;
}
else
{
// No Ajax search
print '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"';
if ($conf->use_javascript_ajax)
{
@ -668,10 +655,11 @@ class FormCompany
print "</select>\n";
return $firstCompany;
}
}
else
{
dol_print_error($this->db);
else
{
dol_print_error($this->db);
print 'Error sql';
}
}
}

View File

@ -133,9 +133,10 @@ class FormFile
if ($perm)
{
$langs->load('other');
$out .= ' ('.$langs->trans("MaxSize").': '.$max.' '.$langs->trans("Kb");
$out .= ' '.info_admin($langs->trans("ThisLimitIsDefinedInSetup",$max,$maxphp),1);
$out .= ')';
//$out .= ' ('.$langs->trans("MaxSize").': '.$max.' '.$langs->trans("Kb");
$out .= ' ';
$out.=info_admin($langs->trans("ThisLimitIsDefinedInSetup",$max,$maxphp),1);
//$out .= ')';
}
}
else
@ -270,13 +271,13 @@ class FormFile
if (! empty($iconPDF)) {
return $this->getDocumentsLink($modulepart, $modulesubdir, $filedir);
}
$printer=0;
if (in_array($modulepart,array('facture','propal','proposal','order','commande','expedition'))) // This feature is implemented only for such elements
{
$printer = (!empty($user->rights->printing->read) && !empty($conf->printing->enabled))?true:false;
}
$hookmanager->initHooks(array('formfile'));
$forname='builddoc';
$out='';
@ -779,7 +780,7 @@ class FormFile
if ($nboffiles > 0) include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
$var=false;
$var=true;
foreach($filearray as $key => $file) // filearray must be only files here
{
if ($file['name'] != '.'
@ -1100,6 +1101,8 @@ class FormFile
global $bc;
global $sortfield, $sortorder;
$langs->load("link");
require_once DOL_DOCUMENT_ROOT . '/core/class/link.class.php';
$link = new Link($this->db);
$links = array();
@ -1161,7 +1164,7 @@ class FormFile
$nboflinks = count($links);
if ($nboflinks > 0) include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
$var = false;
$var = true;
foreach ($links as $link)
{
$var =! $var;

View File

@ -560,13 +560,13 @@ class FormOther
*
* @param string $set_color Pre-selected color
* @param string $prefix Name of HTML field
* @param string $form_name Name of form
* @param string $form_name Deprecated. Not used.
* @param int $showcolorbox 1=Show color code and color box, 0=Show only color code
* @param array $arrayofcolors Array of colors. Example: array('29527A','5229A3','A32929','7A367A','B1365F','0D7813')
* @return void
* @deprecated
*/
function select_color($set_color='', $prefix='f_color', $form_name='objForm', $showcolorbox=1, $arrayofcolors='')
function select_color($set_color='', $prefix='f_color', $form_name='', $showcolorbox=1, $arrayofcolors='')
{
print $this->selectColor($set_color, $prefix, $form_name, $showcolorbox, $arrayofcolors);
}
@ -576,13 +576,13 @@ class FormOther
*
* @param string $set_color Pre-selected color
* @param string $prefix Name of HTML field
* @param string $form_name Name of form
* @param string $form_name Deprecated. Not used.
* @param int $showcolorbox 1=Show color code and color box, 0=Show only color code
* @param array $arrayofcolors Array of colors. Example: array('29527A','5229A3','A32929','7A367A','B1365F','0D7813')
* @param string $morecss Add css style into input field
* @return void
*/
function selectColor($set_color='', $prefix='f_color', $form_name='objForm', $showcolorbox=1, $arrayofcolors='', $morecss='')
function selectColor($set_color='', $prefix='f_color', $form_name='', $showcolorbox=1, $arrayofcolors='', $morecss='')
{
global $langs,$conf;

View File

@ -637,6 +637,11 @@ class MobileDetect
return null;
}
/**
* getMobileHeaders
*
* @return string mobile Headers
*/
public function getMobileHeaders()
{
return self::$mobileHeaders;

View File

@ -247,6 +247,12 @@ class SimpleOpenID
}
}
/**
* array2url
*
* @param array $arr An array
* @return boolean|string false if KO, string of url if OK
*/
function array2url($arr)
{ // converts associated array to URL Query String
if (!is_array($arr)){
@ -259,6 +265,14 @@ class SimpleOpenID
return $query;
}
/**
* FSOCK_Request
*
* @param string $url URL
* @param string $method Method
* @param string $params Params
* @return boolean|unknown
*/
function FSOCK_Request($url, $method="GET", $params = "")
{
$fp = fsockopen("ssl://www.myopenid.com", 443, $errno, $errstr, 3); // Connection timeout is 3 seconds
@ -283,6 +297,14 @@ class SimpleOpenID
}
}
/**
* CURL_Request
*
* @param string $url URL
* @param string $method Method
* @param string $params Params
* @return boolean|unknown
*/
function CURL_Request($url, $method="GET", $params = "")
{ // Remember, SSL MUST BE SUPPORTED
if (is_array($params)) $params = $this->array2url($params);
@ -305,6 +327,12 @@ class SimpleOpenID
return $response;
}
/**
* HTML2OpenIDServer
*
* @param string $content Content
* @return array Array of servers
*/
function HTML2OpenIDServer($content)
{
$get = array();

View File

@ -2,6 +2,7 @@
/* Copyright (C) phpBSM
* Copyright (C) 2005-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2007 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
*
* This file is a modified version of datepicker.php from phpBSM to fix some
* bugs, to add new features and to dramatically increase speed.
@ -39,6 +40,7 @@ require_once '../main.inc.php';
if (GETPOST('lang')) $langs->setDefaultLang(GETPOST('lang')); // If language was forced on URL by the main.inc.php
$langs->load("main");
$langs->load("agenda");
$right=($langs->trans("DIRECTION")=='rtl'?'left':'right');
$left=($langs->trans("DIRECTION")=='rtl'?'right':'left');
@ -57,7 +59,7 @@ if (GETPOST('mode') && GETPOST('mode') == 'test')
}
else
{
print '<title>Calendar</title>';
print '<title>'.$langs->trans("Calendar").'</title>';
}
// Define tradMonths javascript array (we define this in datapicker AND in parent page to avoid errors with IE8)
@ -183,6 +185,19 @@ function displayBox($selectedDate,$month,$year)
onClick="loadMonth('<?php echo DOL_URL_ROOT.'/core/' ?>','<?php echo $month?>','<?php echo $year+1?>','<?php echo $xyz ?>','<?php echo $langs->defaultlang ?>')">&gt;&gt;</td>
</tr>
<tr class="dpDayNames">
<?php
$startday=isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1;
if($startday==1)
{?>
<td width="14%"><?php echo $langs->trans("ShortMonday") ?></td>
<td width="15%"><?php echo $langs->trans("ShortTuesday") ?></td>
<td width="14%"><?php echo $langs->trans("ShortWednesday") ?></td>
<td width="15%"><?php echo $langs->trans("ShortThursday") ?></td>
<td width="14%"><?php echo $langs->trans("ShortFriday") ?></td>
<td width="14%"><?php echo $langs->trans("ShortSaturday") ?></td>
<td width="14%"><?php echo $langs->trans("ShortSunday") ?></td>
<?php
}else {?>
<td width="14%"><?php echo $langs->trans("ShortSunday") ?></td>
<td width="14%"><?php echo $langs->trans("ShortMonday") ?></td>
<td width="15%"><?php echo $langs->trans("ShortTuesday") ?></td>
@ -190,6 +205,8 @@ function displayBox($selectedDate,$month,$year)
<td width="15%"><?php echo $langs->trans("ShortThursday") ?></td>
<td width="14%"><?php echo $langs->trans("ShortFriday") ?></td>
<td width="14%"><?php echo $langs->trans("ShortSaturday") ?></td>
<?php
}?>
</tr>
<?php
//print "x ".$thedate." y";

View File

@ -53,7 +53,6 @@ class DoliDBMssql extends DoliDB
* @param string $pass Mot de passe
* @param string $name Nom de la database
* @param int $port Port of database server
* @return int 1 if OK, 0 if not
*/
function __construct($type, $host, $user, $pass, $name='', $port=0)
{

View File

@ -50,7 +50,6 @@ class DoliDBMysql extends DoliDB
* @param string $pass Mot de passe
* @param string $name Nom de la database
* @param int $port Port of database server
* @return int 1 if OK, 0 if not
*/
function __construct($type, $host, $user, $pass, $name='', $port=0)
{

View File

@ -50,7 +50,6 @@ class DoliDBMysqli extends DoliDB
* @param string $pass Mot de passe
* @param string $name Nom de la database
* @param int $port Port of database server
* @return int 1 if OK, 0 if not
*/
function __construct($type, $host, $user, $pass, $name='', $port=0)
{
@ -357,7 +356,6 @@ class DoliDBMysqli extends DoliDB
* @return int Nombre de lignes
* @see num_rows
*/
function affected_rows($resultset)
{
// If resultset not provided, we take the last used by connexion

View File

@ -60,7 +60,6 @@ class DoliDBPgsql extends DoliDB
* @param string $pass Mot de passe
* @param string $name Nom de la database
* @param int $port Port of database server
* @return int 1 if OK, 0 if not
*/
function __construct($type, $host, $user, $pass, $name='', $port=0)
{

View File

@ -50,7 +50,6 @@ class DoliDBSqlite extends DoliDB
* @param string $pass Mot de passe
* @param string $name Nom de la database
* @param int $port Port of database server
* @return int 1 if OK, 0 if not
*/
function __construct($type, $host, $user, $pass, $name='', $port=0)
{

View File

@ -47,6 +47,14 @@ function SetXmlHeaders()
header('Content-Type: text/xml; charset=utf-8');
}
/**
* CreateXmlHeader
*
* @param string $command Command
* @param string $resourceType Resource type
* @param string $currentFolder Current folder
* @return void
*/
function CreateXmlHeader( $command, $resourceType, $currentFolder )
{
SetXmlHeaders();
@ -63,6 +71,11 @@ function CreateXmlHeader( $command, $resourceType, $currentFolder )
$GLOBALS['HeaderSent'] = true ;
}
/**
* CreateXmlFooter
*
* @return void
*/
function CreateXmlFooter()
{
echo '</Connector>' ;

View File

@ -53,6 +53,13 @@ function GetFolders( $resourceType, $currentFolder )
echo "</Folders>" ;
}
/**
* GetFoldersAndFiles
*
* @param string $resourceType Resource type
* @param string $currentFolder Current folder
* @return void
*/
function GetFoldersAndFiles( $resourceType, $currentFolder )
{
// Map the virtual path to the local server path.

View File

@ -35,13 +35,18 @@ if ( !$Config['Enabled'] )
DoResponse();
/**
* DoResponse
*
* @return void
*/
function DoResponse()
{
if (!isset($_GET)) {
global $_GET;
}
if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) )
return ;
return;
// Get the main request informaiton.
$sCommand = $_GET['Command'] ;
@ -60,7 +65,7 @@ function DoResponse()
if ( $sCommand == 'FileUpload' )
{
FileUpload($sResourceType, $sCurrentFolder, $sCommand);
return ;
return;
}
CreateXmlHeader($sCommand, $sResourceType, $sCurrentFolder);
@ -70,16 +75,16 @@ function DoResponse()
{
case 'GetFolders' :
GetFolders($sResourceType, $sCurrentFolder);
break ;
break;
case 'GetFoldersAndFiles' :
GetFoldersAndFiles($sResourceType, $sCurrentFolder);
break ;
break;
case 'CreateFolder' :
CreateFolder($sResourceType, $sCurrentFolder);
break ;
break;
}
CreateXmlFooter();
exit ;
exit;
}

View File

@ -115,11 +115,18 @@ function ServerMapFolder($resourceType, $folderPath, $sCommand)
return CombinePaths($sResourceTypePath, $folderPath);
}
function GetParentFolder( $folderPath )
/**
* GetParentFolder
*
* @param string $folderPath Folder path
* @return string Parent folder
*/
function GetParentFolder($folderPath)
{
$sPattern = "-[/\\\\][^/\\\\]+[/\\\\]?$-" ;
return preg_replace($sPattern, '', $folderPath);
}
/**
* CreateServerFolder
*

View File

@ -27,7 +27,14 @@ require 'util.php';
require 'io.php';
require 'commands.php';
function SendError( $number, $text )
/**
* SendError
*
* @param string $number Number
* @param string $text Text
* @return void
*/
function SendError($number, $text)
{
SendUploadResults($number, '', '', $text);
}

View File

@ -323,34 +323,23 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0)
if (! empty($conf->browser->phone)) return ''; // combobox disabled for smartphones (does not works)
if (! empty($conf->global->MAIN_DISABLE_AJAX_COMBOX)) return '';
/* Some properties for combobox:
minLengthToAutocomplete: 2,
comboboxContainerClass: "comboboxContainer",
comboboxValueContainerClass: "comboboxValueContainer",
comboboxValueContentClass: "comboboxValueContent",
comboboxDropDownClass: "comboboxDropDownContainer",
comboboxDropDownButtonClass: "comboboxDropDownButton",
comboboxDropDownItemClass: "comboboxItem",
comboboxDropDownItemHoverClass: "comboboxItemHover",
comboboxDropDownGroupItemHeaderClass: "comboboxGroupItemHeader",
comboboxDropDownGroupItemContainerClass: "comboboxGroupItemContainer",
animationType: "slide",
width: "500px" */
$msg = '<script type="text/javascript">
$(document).ready(function() {
$("#'.$htmlname.'").combobox({
minLengthToAutocomplete : '.$minLengthToAutocomplete.',
selected : function(event,ui) {
var obj = '.json_encode($events).';
$.each(obj, function(key,values) {
$(\'#'.$htmlname.'\').select2({
width: \'resolve\',
minimumInputLength: '.$minLengthToAutocomplete.',
});
jQuery("#'.$htmlname.'").change(function () {
var obj = '.json_encode($events).';
$.each(obj, function(key,values) {
if (values.method.length) {
runJsCodeForEvent'.$htmlname.'(values);
}
});
}
});
function runJsCodeForEvent'.$htmlname.'(obj) {
var id = $("#'.$htmlname.'").val();
var method = obj.method;

View File

@ -1028,6 +1028,8 @@ function dol_print_date($time,$format='',$tzoutput='tzserver',$outputlangs='',$e
*/
function dol_getdate($timestamp,$fast=false)
{
global $conf;
$usealternatemethod=false;
if ($timestamp <= 0) $usealternatemethod=true; // <= 1970
if ($timestamp >= 2145913200) $usealternatemethod=true; // >= 2038
@ -1039,6 +1041,19 @@ function dol_getdate($timestamp,$fast=false)
else
{
$arrayinfo=getdate($timestamp);
$startday=isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1;
if($startday==1)
{
if ($arrayinfo["wday"]==0)
{
$arrayinfo["wday"]=6;
}
else
{
$arrayinfo["wday"]=$arrayinfo["wday"]-1;
}
}
}
return $arrayinfo;
@ -1101,11 +1116,11 @@ function dol_mktime($hour,$minute,$second,$month,$day,$year,$gm=false,$check=1)
$default_timezone=@date_default_timezone_get();
}
}
if (empty($localtz)) {
$localtz = new DateTimeZone('UTC');
}
$dt = new DateTime(null,$localtz);
$dt->setDate($year,$month,$day);
$dt->setTime((int) $hour, (int) $minute, (int) $second);
@ -3580,7 +3595,7 @@ function get_default_localtax($thirdparty_seller, $thirdparty_buyer, $local, $id
* Return yes or no in current language
*
* @param string $yesno Value to test (1, 'yes', 'true' or 0, 'no', 'false')
* @param string $case 1=Yes/No, 0=yes/no
* @param string $case 1=Yes/No, 0=yes/no, 2=Disabled checkbox, 3=Disabled checkbox + Yes/No
* @param int $color 0=texte only, 1=Text is formated with a color font style ('ok' or 'error'), 2=Text is formated with 'ok' color.
* @return string HTML string
*/
@ -3590,12 +3605,20 @@ function yn($yesno, $case=1, $color=0)
$result='unknown';
if ($yesno == 1 || strtolower($yesno) == 'yes' || strtolower($yesno) == 'true') // A mettre avant test sur no a cause du == 0
{
$result=($case?$langs->trans("Yes"):$langs->trans("yes"));
$result=$langs->trans('yes');
if ($case == 1 || $case == 3) $result=$langs->trans("Yes");
if ($case == 2) $result='<input type="checkbox" value="1" checked="checked" disabled="disabled">';
if ($case == 3) $result='<input type="checkbox" value="1" checked="checked" disabled="disabled"> '.$result;
$classname='ok';
}
elseif ($yesno == 0 || strtolower($yesno) == 'no' || strtolower($yesno) == 'false')
{
$result=($case?$langs->trans("No"):$langs->trans("no"));
$result=$langs->trans("no");
if ($case == 1 || $case == 3) $result=$langs->trans("No");
if ($case == 2) $result='<input type="checkbox" value="0" disabled="disabled">';
if ($case == 3) $result='<input type="checkbox" value="0" disabled="disabled"> '.$result;
if ($color == 2) $classname='ok';
else $classname='error';
}
@ -4820,19 +4843,6 @@ function dolExplodeIntoArray($string, $delimiter = ';', $kv = '=')
}
/**
* Convert an array with RGB value into hex RGB value
*
* @param array $arraycolor Array
* @param string $colorifnotfound Color code to return if entry not defined
* @return string RGB hex value (without # before). For example: FF00FF
*/
function colorArrayToHex($arraycolor,$colorifnotfound='888888')
{
if (! is_array($arraycolor)) return $colorifnotfound;
return dechex($arraycolor[0]).dechex($arraycolor[1]).dechex($arraycolor[2]);
}
/**
* Set focus onto field with selector
*

View File

@ -1836,3 +1836,42 @@ function fetchObjectByElement($element_id,$element_type) {
}
return 0;
}
/**
* Convert an array with RGB value into hex RGB value
*
* @param array $arraycolor Array
* @param string $colorifnotfound Color code to return if entry not defined
* @return string RGB hex value (without # before). For example: FF00FF
* @see Make the opposite of colorStringToArray
*/
function colorArrayToHex($arraycolor,$colorifnotfound='888888')
{
if (! is_array($arraycolor)) return $colorifnotfound;
return dechex($arraycolor[0]).dechex($arraycolor[1]).dechex($arraycolor[2]);
}
/**
* Convert a string RGB value ('FFFFFF', '255,255,255') into an array RGB array(255,255,255)
*
* @param string $stringcolor String with hex (FFFFFF) or comma RGB ('255,255,255')
* @param string $colorifnotfound Color code to return if entry not defined
* @return string RGB hex value (without # before). For example: FF00FF
* @see Make the opposite of colorArrayToHex
*/
function colorStringToArray($stringcolor,$colorifnotfound=array(88,88,88))
{
if (is_array($stringcolor)) return $stringcolor; // If already into correct output format, we return as is
$tmp=preg_match('/^([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])$/',$stringcolor,$reg);
if (! $tmp)
{
$tmp=explode(',',$stringcolor);
if (count($tmp) < 3) return $colorifnotfound;
return $tmp;
}
return array(hexdec($reg[1]),hexdec($reg[2]),hexdec($reg[3]));
}

View File

@ -900,7 +900,7 @@ function pdf_writeLinkedObjects(&$pdf,$object,$outputlangs,$posx,$posy,$w,$h,$al
if (! empty($linkedobject["date_title"]) && ! empty($linkedobject["date_value"]))
{
$posy+=3;
$posy+=7;
$pdf->SetXY($posx,$posy);
$pdf->MultiCell($w, $h, $linkedobject["date_title"].' : '.$linkedobject["date_value"], '', $align);
}

View File

@ -126,7 +126,12 @@ function user_prepare_head($object)
return $head;
}
/**
* Prepare array with list of tabs
*
* @param Group $object Object group
* @return array Array of tabs
*/
function group_prepare_head($object)
{
global $langs, $conf, $user;

View File

@ -67,7 +67,7 @@ class modProductBatch extends DolibarrModules
$this->config_page_url = array();
// Dependencies
$this->depends = array("modProduct","modStock"); // List of modules id that must be enabled if this module is enabled
$this->depends = array("modProduct","modStock","modExpedition","modSupplier"); // List of modules id that must be enabled if this module is enabled. modExpedition is required to manage batch exit (by manual stock decrease on shipment), modSupplier to manage batch entry (after supplier order).
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(5,0); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module

View File

@ -20,12 +20,8 @@
* $withproject (if we are on task contact)
*/
if (! class_exists('Contact')) {
require DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
}
if (! class_exists('FormCompany')) {
require DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
}
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
$module = $object->element;
@ -96,13 +92,9 @@ $userstatic=new User($db);
<input type="hidden" name="source" value="external" />
<?php if ($withproject) print '<input type="hidden" name="withproject" value="'.$withproject.'">'; ?>
<div class="tagtd nowrap"><?php echo img_object('','contact').' '.$langs->trans("ThirdPartyContacts"); ?></div>
<?php
$events=array();
$events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled'));
?>
<div class="tagtd nowrap maxwidthonsmartphone">
<?php $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$object->socid; ?>
<?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany', '', 0, $events); ?>
<?php $selectedCompany = $formcompany->selectCompaniesForNewContact($object, 'id', $selectedCompany, 'newcompany', '', 0); ?>
</div>
<div class="tagtd maxwidthonsmartphone">
<?php $nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid'); ?>

View File

@ -46,9 +46,10 @@ $(document).ready(function () {
</script>
<?php } ?>
<div align="center">
<center>
<div class="login_vertical_align">
<form id="login" name="login" method="post" action="<?php echo $php_self; ?>">
<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>" />
<input type="hidden" name="loginfunction" value="loginfunction" />
@ -66,7 +67,7 @@ $(document).ready(function () {
<input type="hidden" name="dol_no_mouse_hover" id="dol_no_mouse_hover" value="<?php echo $dol_no_mouse_hover; ?>" />
<input type="hidden" name="dol_use_jmobile" id="dol_use_jmobile" value="<?php echo $dol_use_jmobile; ?>" />
<table align="center" class="login_table_title" summary="<?php echo dol_escape_htmltag($title); ?>">
<table class="login_table_title center" summary="<?php echo dol_escape_htmltag($title); ?>">
<tr class="vmenu"><td align="center"><?php echo dol_escape_htmltag($title); ?></td></tr>
</table>
<br>
@ -77,21 +78,28 @@ $(document).ready(function () {
<div id="login_left">
<table class="left" summary="Login pass">
<img alt="Logo" title="" src="<?php echo $urllogo; ?>" id="img_logo" />
</div>
<div id="login_right">
<table class="left centpercent" summary="Login pass">
<!-- Login -->
<tr>
<td valign="middle" class="loginfield"><strong><label for="username"><?php echo $langs->trans('Login'); ?></label></strong></td>
<td valign="middle" class="nowrap">
<span class="span-icon-user">
<input type="text" id="username" name="username" class="flat input-icon-user" size="15" maxlength="40" value="<?php echo dol_escape_htmltag($login); ?>" tabindex="1" autofocus="autofocus" />
<input type="text" id="username" placeholder="<?php echo $langs->trans("Login"); ?>" name="username" class="flat input-icon-user" size="15" value="<?php echo dol_escape_htmltag($login); ?>" tabindex="1" autofocus="autofocus" />
</span>
</td>
</tr>
<!-- Password -->
<tr><td valign="middle" class="loginfield nowrap"><strong><label for="password"><?php echo $langs->trans('Password'); ?></label></strong></td>
<tr>
<td valign="middle" class="nowrap">
<span class="span-icon-password">
<input id="password" name="password" class="flat input-icon-password" type="password" size="15" maxlength="30" value="<?php echo dol_escape_htmltag($password); ?>" tabindex="2" autocomplete="off" />
<input id="password" placeholder="<?php echo $langs->trans("Password"); ?>" name="password" class="flat input-icon-password" type="password" size="15" value="<?php echo dol_escape_htmltag($password); ?>" tabindex="2" autocomplete="off" />
</span>
</td></tr>
<?php
@ -109,18 +117,18 @@ if (! empty($hookmanager->resArray['options'])) {
if ($captcha) {
// TODO: provide accessible captha variants
?>
<!-- Captcha -->
<tr><td valign="middle" class="loginfield nowrap"><label for="securitycode"><b><?php echo $langs->trans('SecurityCode'); ?></b></label></td>
<!-- Captcha -->
<tr>
<td valign="top" class="nowrap none" align="left">
<table class="login_table_securitycode" style="width: 100px;"><tr>
<td>
<span class="span-icon-security">
<input id="securitycode" class="flat input-icon-security" type="text" size="6" maxlength="5" name="code" tabindex="4" />
<input id="securitycode" placeholder="<?php echo $langs->trans("SecurityCode"); ?>" class="flat input-icon-security" type="text" size="12" maxlength="5" name="code" tabindex="3" />
</span>
</td>
<td><img src="<?php echo DOL_URL_ROOT ?>/core/antispamimage.php" border="0" width="80" height="32" id="img_securitycode" /></td>
<td><a href="<?php echo $php_self; ?>"><?php echo $captcha_refresh; ?></a></td>
<td><a href="<?php echo $php_self; ?>" tabindex="4"><?php echo $captcha_refresh; ?></a></td>
</tr></table>
</td></tr>
@ -129,9 +137,9 @@ if (! empty($hookmanager->resArray['options'])) {
</div> <!-- end div left -->
<div id="login_right">
<img alt="Logo" title="" src="<?php echo $urllogo; ?>" id="img_logo" />
</div>
@ -150,7 +158,7 @@ if ($forgetpasslink || $helpcenterlink)
if ($dol_use_jmobile) $moreparam.=(strpos($moreparam,'?')===false?'?':'&').'dol_use_jmobile='.$dol_use_jmobile;
echo '<br>';
echo '<div class="center" style="margin-top: 4px;">';
echo '<div align="center" style="margin-top: 4px;">';
if ($forgetpasslink) {
echo '<a class="alogin" href="'.DOL_URL_ROOT.'/user/passwordforgotten.php'.$moreparam.'">(';
echo $langs->trans('PasswordForgotten');
@ -177,7 +185,7 @@ if (isset($conf->file->main_authentication) && preg_match('/openid/',$conf->file
//if (! empty($conf->global->MAIN_OPENIDURL_PERUSER)) $url=
echo '<br>';
echo '<div class="center" style="margin-top: 4px;">';
echo '<div align="center" style="margin-top: 4px;">';
$url=$conf->global->MAIN_AUTHENTICATION_OPENID_URL;
if (! empty($url)) print '<a class="alogin" href="'.$url.'">'.$langs->trans("LoginUsingOpenID").'</a>';
@ -190,14 +198,18 @@ if (isset($conf->file->main_authentication) && preg_match('/openid/',$conf->file
echo '</div>';
}
?>
</div>
</div>
</div>
</form>
<?php if (! empty($_SESSION['dol_loginmesg']))
{
?>
@ -211,17 +223,21 @@ if (isset($conf->file->main_authentication) && preg_match('/openid/',$conf->file
<?php if ($main_home)
{
?>
<!-- main_home message -->
<div class="login_main_home center" style="max-width: 80%"><?php echo $main_home; ?></div>
<br>
<div class="center" class="login_main_home" style="max-width: 80%">
<?php echo $main_home; ?>
</div><br>
<?php
}
?>
<!-- authentication mode = <?php echo $main_authentication ?> -->
<!-- cookie name used for this session = <?php echo $session_name ?> -->
<!-- urlfrom in this session = <?php echo isset($_SESSION["urlfrom"])?$_SESSION["urlfrom"]:''; ?> -->
<!-- Common footer is not used for login page, this is same than footer but inside login tpl -->
<?php if (! empty($conf->global->MAIN_HTML_FOOTER)) print $conf->global->MAIN_HTML_FOOTER; ?>
<?php
// Google Analytics (need Google module)
if (! empty($conf->google->enabled) && ! empty($conf->global->MAIN_GOOGLE_AN_ID))
@ -251,7 +267,7 @@ if (! empty($conf->google->enabled) && ! empty($conf->global->MAIN_GOOGLE_AD_CLI
if (empty($conf->dol_use_jmobile))
{
?>
<div class="center"><br>
<div align="center"><br>
<script type="text/javascript"><!--
google_ad_client = "<?php echo $conf->global->MAIN_GOOGLE_AD_CLIENT ?>";
google_ad_slot = "<?php echo $conf->global->MAIN_GOOGLE_AD_SLOT ?>";
@ -267,8 +283,11 @@ if (! empty($conf->google->enabled) && ! empty($conf->global->MAIN_GOOGLE_AD_CLI
}
}
?>
</div>
</div>
</center> <!-- end of center -->
</body>
</html>

View File

@ -108,10 +108,10 @@ else {
echo '> ';
// Show type selector
echo $langs->trans("FreeLineOfType");
echo ' ';
echo '</label>';
echo ' ';
}
else
else
{
echo '<input type="hidden" id="prod_entry_mode_free" name="prod_entry_mode" value="free">';
// Show type selector

View File

@ -44,7 +44,8 @@ $(document).ready(function () {
<?php } ?>
<div align="center" class="login_vertical_align">
<center>
<div class="login_vertical_align">
<form id="login" name="login" method="post" action="<?php echo $php_self; ?>">
@ -52,7 +53,7 @@ $(document).ready(function () {
<input type="hidden" name="action" value="buildnewpassword">
<table class="login_table_title center" summary="<?php echo dol_escape_htmltag($title); ?>">
<tr class="vmenu"><td class="center"><?php echo $title; ?></td></tr>
<tr class="vmenu"><td align="center"><?php echo $title; ?></td></tr>
</table>
<br>
@ -60,16 +61,23 @@ $(document).ready(function () {
<div id="login_line1">
<div id="login_left">
<img alt="Logo" title="" src="<?php echo $urllogo; ?>" id="img_logo" />
</div>
<div id="login_right">
<table class="left" summary="Login pass">
<!-- Login -->
<tr>
<td valign="bottom" class="loginfield nowrap"><strong><label for="username"><?php echo $langs->trans('Login'); ?></label></strong></td>
<td valign="bottom" class="nowrap">
<span class="span-icon-user">
<input type="text" <?php echo $disabled; ?> id="username" name="username" class="flat input-icon-user" size="15" maxlength="40" value="<?php echo dol_escape_htmltag($login); ?>" tabindex="1" />
<input type="text" placeholder="<?php echo $langs->trans("Login"); ?>" <?php echo $disabled; ?> id="username" name="username" class="flat input-icon-user" size="15" value="<?php echo dol_escape_htmltag($login); ?>" tabindex="1" />
</span>
</td>
</tr>
@ -88,17 +96,17 @@ if (! empty($hookmanager->resArray['options'])) {
<?php if ($captcha) { ?>
<!-- Captcha -->
<tr><td valign="middle" class="loginfield nowrap"><strong><label for="securitycode"><?php echo $langs->trans('SecurityCode'); ?></label></strong></td>
<tr>
<td valign="top" class="nowrap none" align="left">
<table class="login_table_securitycode" style="width: 100px;"><tr>
<td>
<span class="span-icon-security">
<input id="securitycode" class="flat input-icon-security" type="text" size="6" maxlength="5" name="code" tabindex="4" />
<input id="securitycode" placeholder="<?php echo $langs->trans("SecurityCode"); ?>" class="flat input-icon-security" type="text" size="12" maxlength="5" name="code" tabindex="3" />
</span>
</td>
<td><img src="<?php echo DOL_URL_ROOT ?>/core/antispamimage.php" border="0" width="80" height="32" id="img_securitycode" /></td>
<td><a href="<?php echo $php_self; ?>"><?php echo $captcha_refresh; ?></a></td>
<td><a href="<?php echo $php_self; ?>" tabindex="4"><?php echo $captcha_refresh; ?></a></td>
</tr></table>
</td></tr>
@ -108,11 +116,9 @@ if (! empty($hookmanager->resArray['options'])) {
</div> <!-- end div left -->
<div id="login_right">
<img alt="Logo" title="" src="<?php echo $urllogo; ?>" id="img_logo" />
</div>
</div>
<div id="login_line2" style="clear: both">
@ -121,7 +127,7 @@ if (! empty($hookmanager->resArray['options'])) {
<br><input id="password" type="submit" <?php echo $disabled; ?> class="button" name="password" value="<?php echo $langs->trans('SendNewPassword'); ?>" tabindex="4" />
<br>
<div class="center" style="margin-top: 4px;">
<div align="center" style="margin-top: 4px;">
<?php
$moreparam='';
if (! empty($conf->dol_hide_topmenu)) $moreparam.=(strpos($moreparam,'?')===false?'?':'&').'dol_hide_topmenu='.$conf->dol_hide_topmenu;
@ -146,7 +152,7 @@ if (! empty($hookmanager->resArray['options'])) {
<?php echo $langs->trans('SendNewPasswordDesc'); ?>
</font>
<?php }else{ ?>
<div class="warning center">
<div class="warning" align="center">
<?php echo $langs->trans('AuthenticationDoesNotAllowSendNewPassword', $mode); ?>
</div>
<?php } ?>
@ -163,8 +169,9 @@ if (! empty($hookmanager->resArray['options'])) {
</div>
</center> <!-- end of center -->
</body>
</html>
<!-- END PHP TEMPLATE -->
<!-- END PHP TEMPLATE -->

View File

@ -84,9 +84,24 @@ if ($id > 0 || ! empty($ref))
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('expeditioncard','globalcard'));
/*
* Actions
*/
$warehousecanbeselectedlater=1;
if (! empty($conf->productbatch->enabled))
{
if (! (GETPOST('entrepot_id','int') > 0))
{
$langs->load("errors");
setEventMessage($langs->trans("WarhouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn"),'errors');
header("Location: ".DOL_URL_ROOT.'/expedition/shipment.php?id='.$id);
exit;
}
}
$parameters=array();
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
@ -595,7 +610,7 @@ if ($action == 'create')
print_fiche_titre($langs->trans("CreateASending"));
if (! $origin)
{
$mesg='<div class="error">'.$langs->trans("ErrorBadParameters").'</div>';
setEventMessage($langs->trans("ErrorBadParameters"),'errors');
}
dol_htmloutput_mesg($mesg);
@ -773,10 +788,13 @@ if ($action == 'create')
print '</td>';
if (! empty($conf->stock->enabled))
{
if (empty($conf->productbatch->enabled)) {
print '<td align="left">'.$langs->trans("Warehouse").' / '.$langs->trans("Stock").'</td>';
} else {
print '<td align="left">'.$langs->trans("Warehouse").' / '.$langs->trans("Batch").' / '.$langs->trans("Stock").'</td>';
if (empty($conf->productbatch->enabled))
{
print '<td align="left">'.$langs->trans("Warehouse").' ('.$langs->trans("Stock").')</td>';
}
else
{
print '<td align="left">'.$langs->trans("Warehouse").' / '.$langs->trans("Batch").' ('.$langs->trans("Stock").')</td>';
}
}
print "</tr>\n";
@ -830,7 +848,7 @@ if ($action == 'create')
print '</td>';
}
else
{
{
print "<td>";
if ($type==1) $text = img_object($langs->trans('Service'),'service');
else $text = img_object($langs->trans('Product'),'product');
@ -863,17 +881,19 @@ if ($action == 'create')
$quantityAsked = $line->qty;
$quantityToBeDelivered = $quantityAsked - $quantityDelivered;
$warehouse_id = GETPOST('entrepot_id','int');
$defaultqty=0;
if (GETPOST('entrepot_id','int') > 0)
if ($warehouse_id > 0)
{
//var_dump($product);
$stock = $product->stock_warehouse[GETPOST('entrepot_id','int')]->real;
$stock = $product->stock_warehouse[$warehouse_id]->real;
$stock+=0; // Convertit en numerique
$defaultqty=min($quantityToBeDelivered, $stock);
if (($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) || $defaultqty < 0) $defaultqty=0;
}
if (empty($conf->productbatch->enabled) || ! ($product->hasbatch() and is_object($product->stock_warehouse[GETPOST('entrepot_id','int')])))
if (empty($conf->productbatch->enabled) || ! ($product->hasbatch() and is_object($product->stock_warehouse[$warehouse_id])))
{
// Quantity to send
print '<td align="center">';
@ -894,14 +914,14 @@ if ($action == 'create')
// Show warehouse combo list
$ent = "entl".$indiceAsked;
$idl = "idl".$indiceAsked;
$tmpentrepot_id = is_numeric(GETPOST($ent,'int'))?GETPOST($ent,'int'):GETPOST('entrepot_id','int');
$tmpentrepot_id = is_numeric(GETPOST($ent,'int'))?GETPOST($ent,'int'):$warehouse_id;
print $formproduct->selectWarehouses($tmpentrepot_id,'entl'.$indiceAsked,'',1,0,$line->fk_product);
if ($tmpentrepot_id > 0 && $tmpentrepot_id == GETPOST('entrepot_id','int'))
if ($tmpentrepot_id > 0 && $tmpentrepot_id == $warehouse_id)
{
//print $stock.' '.$quantityToBeDelivered;
if ($stock < $quantityToBeDelivered)
{
print ' '.img_warning($langs->trans("StockTooLow")); // Stock too low for entrepot_id but we may have change warehouse
print ' '.img_warning($langs->trans("StockTooLow")); // Stock too low for this $warehouse_id but you can change warehouse
}
}
}
@ -936,11 +956,14 @@ if ($action == 'create')
}
}
}
} else {
}
else
{
print '<td></td><td></td></tr>';
$subj=0;
print '<input name="idl'.$indiceAsked.'" type="hidden" value="'.$line->id.'">';
foreach ($product->stock_warehouse[GETPOST('entrepot_id','int')]->detail_batch as $dbatch) {
foreach ($product->stock_warehouse[$warehouse_id]->detail_batch as $dbatch)
{
//var_dump($dbatch);
$substock=$dbatch->qty +0 ;
print '<tr><td colspan="3" ></td><td align="center">';
@ -948,8 +971,13 @@ if ($action == 'create')
print '</td>';
print '<td align="left">';
$staticwarehouse=new Entrepot($db);
$staticwarehouse->fetch($warehouse_id);
print $staticwarehouse->getNomUrl(0).' / ';
print '<input name="batchl'.$indiceAsked.'_'.$subj.'" type="hidden" value="'.$dbatch->id.'">';
print $langs->trans("DetailBatchFormat", dol_print_date($dbatch->eatby,"day"), dol_print_date($dbatch->sellby,"day"), $dbatch->batch, $dbatch->qty);
print $langs->trans("DetailBatchFormat", $dbatch->batch, dol_print_date($dbatch->eatby,"day"), dol_print_date($dbatch->sellby,"day"), $dbatch->qty);
if ($defaultqty<=0) {
$defaultqty=0;
} else {
@ -1453,12 +1481,14 @@ else if ($id || $ref)
}
// Batch number managment
if (! empty($conf->productbatch->enabled)) {
if (isset($lines[$i]->detail_batch) ) {
print '<td align="center">';
if (! empty($conf->productbatch->enabled))
{
if (isset($lines[$i]->detail_batch))
{
print '<td>';
$detail = '';
foreach ($lines[$i]->detail_batch as $dbatch) {
$detail.= $langs->trans("DetailBatchFormat",dol_print_date($dbatch->eatby,"day"),dol_print_date($dbatch->sellby,"day"),$dbatch->batch,$dbatch->dluo_qty).'<br/>';
$detail.= $langs->trans("DetailBatchFormat",$dbatch->batch,dol_print_date($dbatch->eatby,"day"),dol_print_date($dbatch->sellby,"day"),$dbatch->dluo_qty).'<br/>';
}
print $form->textwithtooltip($langs->trans("DetailBatchNumber"),$detail);
print '</td>';

View File

@ -114,7 +114,7 @@ if ($resql)
/*
* Commandes a traiter
*/
$sql = "SELECT c.rowid, c.ref, s.nom as name, s.rowid as socid";
$sql = "SELECT c.rowid, c.ref, c.fk_statut, s.nom as name, s.rowid as socid";
$sql.= " FROM ".MAIN_DB_PREFIX."commande as c";
$sql.= ", ".MAIN_DB_PREFIX."societe as s";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -136,7 +136,7 @@ if ($resql)
$i = 0;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td colspan="2">'.$langs->trans("OrdersToProcess").'</td></tr>';
print '<td colspan="3">'.$langs->trans("OrdersToProcess").'</td></tr>';
$var = True;
while ($i < $num)
{
@ -146,13 +146,19 @@ if ($resql)
print '<td class="nowrap">';
$orderstatic->id=$obj->rowid;
$orderstatic->ref=$obj->ref;
$orderstatic->statut=$obj->fk_statut;
$orderstatic->facturee=0;
print $orderstatic->getNomUrl(1);
print '</td>';
print '<td>';
$companystatic->name=$obj->name;
$companystatic->id=$obj->socid;
print $companystatic->getNomUrl(1,'customer',32);
print '</td></tr>';
print '</td>';
print '<td align="right">';
print $orderstatic->getLibStatut(3);
print '</td>';
print '</tr>';
$i++;
}
print "</table><br>";

View File

@ -643,7 +643,10 @@ if ($id > 0 || ! empty($ref))
if (! empty($conf->stock->enabled))
{
print '<td>'.$langs->trans("WarehouseSource").'</td>';
$warehousecanbeselectedlater=1;
if (! empty($conf->productbatch->enabled)) $warehousecanbeselectedlater=0;
print '<td'.($warehousecanbeselectedlater?'':' class="fieldrequired"').'>'.$langs->trans("WarehouseSource").'</td>';
print '<td>';
print $formproduct->selectWarehouses(-1,'entrepot_id','',1);
if (count($formproduct->cache_warehouses) <= 0)

View File

@ -1912,7 +1912,7 @@ the specific language governing permissions and limitations under the Apache Lic
if (this.opts.width === "off") {
return null;
} else if (this.opts.width === "element"){
return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';
return this.opts.element.outerWidth(false) === 0 ? 'auto' : 20+this.opts.element.outerWidth(false) + 'px';
} else if (this.opts.width === "copy" || this.opts.width === "resolve") {
// check if there is inline style on the element that contains width
style = this.opts.element.attr('style');
@ -1933,7 +1933,7 @@ the specific language governing permissions and limitations under the Apache Lic
if (style.indexOf("%") > 0) return style;
// finally, fallback on the calculated width of the element
return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');
return (this.opts.element.outerWidth(false) === 0 ? 'auto' : 20+this.opts.element.outerWidth(false) + 'px');
}
return null;

View File

@ -71,12 +71,12 @@ if (! empty($useragent))
// Check PHP version
if (versioncompare(versionphparray(),array(4,3,10)) < 0) // Minimum to use (error if lower)
if (versioncompare(versionphparray(),array(5,2,3)) < 0) // Minimum to use (error if lower)
{
print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ErrorPHPVersionTooLow",'4.3.10');
print '<img src="../theme/eldy/img/error.png" alt="Error"> '.$langs->trans("ErrorPHPVersionTooLow",'5.2.3');
$checksok=0; // 0=error, 1=warning
}
else if (versioncompare(versionphparray(),array(5,3,0)) < 0) // Minimum supported (error if lower)
else if (versioncompare(versionphparray(),array(5,3,0)) < 0) // Minimum supported (warning if lower)
{
print '<img src="../theme/eldy/img/warning.png" alt="Error"> '.$langs->trans("ErrorPHPVersionTooLow",'5.3.0');
$checksok=0; // 0=error, 1=warning

View File

@ -1140,6 +1140,8 @@ ALTER TABLE llx_facture_rec ADD COLUMN revenuestamp double(24,8) DEFAULT 0;
ALTER TABLE llx_facturedet_rec MODIFY COLUMN tva_tx double(6,3);
ALTER TABLE llx_facturedet_rec ADD COLUMN fk_contract_line integer NULL;
ALTER TABLE llx_resource MODIFY COLUMN entity integer DEFAULT 1 NOT NULL;
-- This request make mysql drop (mysql bug, so we add it at end):
--ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_barcode_type) REFERENCES llx_c_barcode_type(rowid);

View File

@ -51,10 +51,10 @@ create table llx_actioncomm
priority smallint,
fulldayevent smallint NOT NULL default 0,
punctual smallint NOT NULL default 1,
punctual smallint NOT NULL default 1, -- deprecated. milestone is event with date start = date end
percent smallint NOT NULL default 0,
location varchar(128),
durationp real, -- duree planifiee
durationp real, -- planed duration
durationa real, -- deprecated
note text,

View File

@ -17,7 +17,7 @@
CREATE TABLE llx_resource
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
entity integer,
entity integer DEFAULT 1 NOT NULL,
ref varchar(255),
description text,
fk_code_type_resource varchar(32),

View File

@ -56,6 +56,8 @@ UseSearchToSelectCompany=Use autocompletion fields to choose third parties inste
ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it
UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).
DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties)
DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact)
SearchFilter=Search filters options
NumberOfKeyToSearch=Nbr of characters to trigger search: %s
ViewFullDateActions=Show full dates events in the third sheet
@ -783,6 +785,7 @@ DictionaryOrderMethods=Ordering methods
DictionarySource=Origin of proposals/orders
DictionaryAccountancyplan=Chart of accounts
DictionaryAccountancysystem=Models for chart of accounts
DictionaryEMailTemplates=Emails templates
SetupSaved=Setup saved
BackToModuleList=Back to modules list
BackToDictionaryList=Back to dictionaries list
@ -891,7 +894,8 @@ MessageLogin=Login page message
PermanentLeftSearchForm=Permanent search form on left menu
DefaultLanguage=Default language to use (language code)
EnableMultilangInterface=Enable multilingual interface
EnableShowLogo=Show logo on left menu
EnableShowLogo=Show logo on left menu
EnableHtml5=Enable Html5 (Developement - Only available on Eldy template)
SystemSuccessfulyUpdated=Your system has been updated successfully
CompanyInfo=Company/foundation information
CompanyIds=Company/foundation identities

View File

@ -10,10 +10,11 @@ batch_number=Batch/Serial number
l_eatby=Eat-by date
l_sellby=Sell-by date
DetailBatchNumber=Batch/Serial details
DetailBatchFormat=E:%s S: %s BATCH: %s (Qty : %d)
DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d)
printBatch=Batch: %s
printEatby=Eat-by: %s
printSellby=Sell-by: %s
printQty=Qty: %d
AddDispatchBatchLine=Add a line for Shelf Life dispatching
BatchDefaultNumber=Undefined
BatchDefaultNumber=Undefined
WhenProductBatchModuleOnOptionAreForced=When module Batch/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want.

View File

@ -31,6 +31,4 @@ ConfirmDeleteResource=Confirm to delete this resource
RessourceSuccessfullyDeleted=Resource successfully deleted
DictionaryResourceType=Type of resources
DictionaryEMailTemplates=Modèles d'Emails
SelectResource=Select resource

View File

@ -25,12 +25,12 @@ Selectchartofaccounts=Seleccione un plan contable
Validate=Validar
Addanaccount=Añadir una cuenta contable
AccountAccounting=Cuenta contable
Ventilation=Breakdown
Ventilation=Contabilizar
ToDispatch=A realizar
Dispatched=Realizadas
CustomersVentilation=Breakdown customers
SuppliersVentilation=Breakdown suppliers
CustomersVentilation=Contabilizar clientes
SuppliersVentilation=Contabilizar proveedores
TradeMargin=Margen de beneficio
Reports=Informes
ByCustomerInvoice=Por facturas a clientes
@ -45,9 +45,9 @@ WriteBookKeeping=Registrar los asientos en el libro mayor
Bookkeeping=Libro Mayor
AccountBalanceByMonth=Saldo mensual
AccountingVentilation=Breakdown accounting
AccountingVentilationSupplier=Breakdown accounting supplier
AccountingVentilationCustomer=Breakdown accounting customer
AccountingVentilation=Descuadre contabilidad
AccountingVentilationSupplier=Contablilización compras
AccountingVentilationCustomer=Contabilización ventas
Line=Línea
CAHTF=Total (base imponible) compras a proveedor
@ -56,7 +56,7 @@ InvoiceLinesDone=Líneas de facturas contabilizadas
IntoAccount=En la cuenta
Ventilate=Contabilizar
VentilationAuto=Automatic breakdown
VentilationAuto=Contabilización automática
Processing=Tratamiento
EndProcessing=Final del tratamiento
@ -68,9 +68,9 @@ NotVentilatedinAccount=Cuenta sin contabilización en la contabilidad
ACCOUNTING_SEPARATORCSV=Separador CSV
ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50)
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements
ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements
ACCOUNTING_LIMIT_LIST_VENTILATION=Número de elementos a contabilizar que se muestran por página (máximo recomendado: 50)
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Ordenar las páginas de contabilización "A contabilizar" por los elementos más recientes
ACCOUNTING_LIST_SORT_VENTILATION_DONE=Ordenar las páginas de contabilización "Contabilizadas" por los elementos más recientes
AccountLength=Longitud de las cuentas contables mostradas en Dolibarr
AccountLengthDesc=Función para simular una longitud de cuenta contable sustituyendo los espacios por cero. Esta función sólo afecta a la pantalla, no cambia las cuentas contables registradas en Dolibarr. Esta función es necesaria para la exportación, para ser compatible con algunos programas.
@ -140,14 +140,14 @@ Active=Estado
NewFiscalYear=Nuevo año fiscal
DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers
DescVentilCustomer=Consulte aquí la contabilización anual de sus facturas a clientes
TotalVente=Total ventas (base imponible)
TotalMarge=Total margen ventas
DescVentilDoneCustomer=Consulte aquí las líneas de facturas a clientes y sus cuentas contables
DescVentilTodoCustomer=Contabilice sus líneas de facturas a clientes con una cuenta contable
ChangeAccount=Cambie la cuenta para las líneas seleccionadas a la cuenta:
Vide=-
DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers
DescVentilSupplier=Consulte aquí la contabilidad anual de sus facturas de proveedores
DescVentilTodoSupplier=Contabilize sus líneas de facturas de proveedores
DescVentilDoneSupplier=Consulte aquí la lista de facturas de proveedores y sus cuentas contables
@ -155,4 +155,4 @@ ValidateHistory=Validar automáticamente
ErrorAccountancyCodeIsAlreadyUse=Error, no puede eliminar esta cuenta ya que está siendo usada
FicheVentilation=Breakdown card
FicheVentilation=Ficha contable

View File

@ -437,8 +437,8 @@ Module52Name=Stocks de productos
Module52Desc=Gestión de stocks de productos
Module53Name=Servicios
Module53Desc=Gestión de servicios
Module54Name=Contracts/Subscriptions
Module54Desc=Management of contracts (services or reccuring subscriptions)
Module54Name=Contratos/Suscripciones
Module54Desc=Gestión de contratos (servicios o suscripciones recurrentes)
Module55Name=Códigos de barras
Module55Desc=Gestión de los códigos de barras
Module56Name=Telefonía
@ -475,8 +475,8 @@ Module320Name=Hilos RSS
Module320Desc=Adición de hilos de información RSS en las pantallas Dolibarr
Module330Name=Marcadores
Module330Desc=Gestión de marcadores
Module400Name=Projects/Opportunity
Module400Desc=Management of projects or opportunity. You can then assign all other elements (invoice, order, proposal, intervention, ...) to this projects
Module400Name=Proyectos/Oportunidades
Module400Desc=Gestión de proyectos o oportunidades. Puede asignar otros elementos (facturas, pedidos, presupuestos, intervenciones, etc.) a los proyectos
Module410Name=Webcalendar
Module410Desc=Interfaz con el calendario Webcalendar
Module500Name=Gastos especiales (impuestos, gastos sociales, dividendos)
@ -495,6 +495,8 @@ Module1780Name=Categorías
Module1780Desc=Gestión de categorías (productos, proveedores y clientes)
Module2000Name=Editor WYSIWYG
Module2000Desc=Permite la edición de ciertas zonas de texto mediante un editor avanzado
Module2200Name=Precios dinámicos
Module2200Desc=Activar el uso de expresiones matemáticas para precios
Module2300Name=Programador
Module2300Desc=Tareas programadas
Module2400Name=Agenda
@ -503,6 +505,8 @@ Module2500Name=Gestión Electrónica de Documentos
Module2500Desc=Permite administrar una base de documentos
Module2600Name=WebServices
Module2600Desc=Activa los servicios de servidor web services de Dolibarr
Module2650Name=WebServices (cliente)
Module2650Desc=Habilitar los servicios web cliente de Dolibarr (puede ser utilizado para grabar datos/solicitudes de servidores externos. De momento solo se soporta pedidos a proveedor)
Module2700Name=Gravatar
Module2700Desc=Utiliza el servicio en línea de Gravatar (www.gravatar.com) para mostrar fotos de los usuarios/miembros (que se encuentran en sus mensajes de correo electrónico). Necesita un acceso a Internet
Module2800Desc=Cliente FTP
@ -517,7 +521,7 @@ Module6000Desc=Gestión del flujo de trabajo
Module20000Name=Gestión de días libres retribuidos
Module20000Desc=Gestión de los días libres retribuidos de los empleados
Module39000Name=Lotes de productos
Module39000Desc=Gestión de lotes y fechas de caducidad y venta de los productos
Module39000Desc=Gestión de lotes o series, fechas de caducidad y venta de los productos
Module50000Name=PayBox
Module50000Desc=Módulo para proporcionar un pago en línea con tarjeta de crédito mediante Paybox
Module50100Name=TPV
@ -606,11 +610,11 @@ Permission151=Consultar domiciliaciones
Permission152=Crear/modificar domiciliaciones
Permission153=Enviar domiciliaciones
Permission154=Abonar/devolver domiciliaciones
Permission161=Read contracts/subscriptions
Permission162=Create/modify contracts/subscriptions
Permission163=Activate a service/subscription of a contract
Permission164=Disable a service/subscription of a contract
Permission165=Delete contracts/subscriptions
Permission161=Consultar contratos/suscripciones
Permission162=Crear/modificar contratos/suscripciones
Permission163=Activar un servicio/suscripción de un contrato
Permission164=Desactivar un servicio/suscripcion de un contrato
Permission165=Eliminar contratos/suscripciones
Permission171=Leer honorarios (propios y de sus subordinados)
Permission172=Crear/modificar honorarios
Permission173=Eliminar honorarios
@ -672,7 +676,7 @@ Permission300=Consultar códigos de barras
Permission301=Crear/modificar códigos de barras
Permission302=Eliminar código de barras
Permission311=Consultar servicios
Permission312=Assign service/subscription to contract
Permission312=Asignar servicios/suscripciones a un contrato
Permission331=Consultar marcadores
Permission332=Crear/modificar marcadores
Permission333=Eliminar marcadores
@ -702,8 +706,8 @@ Permission701=Consultar donaciones
Permission702=Crear/modificar donaciones
Permission703=Eliminar donaciones
Permission1001=Consultar stocks
Permission1002=Create/modify warehouses
Permission1003=Delete warehouses
Permission1002=Crear/modificar almacenes
Permission1003=Eliminar almacenes
Permission1004=Consultar movimientos de stock
Permission1005=Crear/modificar movimientos de stock
Permission1101=Consultar ordenes de envío
@ -1138,7 +1142,7 @@ AddDeliveryAddressAbility=Posibilidad de seleccionar una dirección de envío
UseOptionLineIfNoQuantity=Una línea de producto/servicio que tiene una cantidad nula se considera como una opción
FreeLegalTextOnProposal=Texto libre en presupuestos
WatermarkOnDraftProposal=Marca de agua en presupuestos borrador (en caso de estar vacío)
BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal
BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Preguntar por cuenta bancaria a usar en el presupuesto
##### Orders #####
OrdersSetup=Configuración del módulo pedidos
OrdersNumberingModules=Módulos de numeración de los pedidos
@ -1160,7 +1164,7 @@ FicheinterNumberingModules=Módulos de numeración de las fichas de intervenció
TemplatePDFInterventions=Modelo de documentos de las fichas de intervención
WatermarkOnDraftInterventionCards=Marca de agua en fichas de intervención (en caso de estar vacío)
##### Contracts #####
ContractsSetup=Contracts/Subscriptions module setup
ContractsSetup=Configuración del módulo Contratos/suscripciones
ContractsNumberingModules=Módulos de numeración de los contratos
TemplatePDFContracts=Modelos de documento de contratos
FreeLegalTextOnContracts=Texto libre en contratos
@ -1324,7 +1328,7 @@ FilesOfTypeNotCompressed=Archivos de tipo %s no son comprimidos por el servidor
CacheByServer=Caché mediante el servidor
CacheByClient=Caché mediante el navegador
CompressionOfResources=Compresión de las respuestas HTTP
TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers
TestNotPossibleWithCurrentBrowsers=La detección automática no es posible con el navegador actual
##### Products #####
ProductSetup=Configuración del módulo Productos
ServiceSetup=Configuración del módulo Servicios
@ -1415,9 +1419,9 @@ OSCommerceTestOk=La conexión al servidor '%s' sobre la base '%s' por el usuario
OSCommerceTestKo1=La conexión al servidor '%s' sobre la base '%s' por el usuario '%s' no se pudo efectuar.
OSCommerceTestKo2=La conexión al servidor '%s' por el usuario '%s' ha fallado.
##### Stock #####
StockSetup=Warehouse module setup
UserWarehouse=Use user personal warehouses
IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up.
StockSetup=Configuración del módulo Almacenes
UserWarehouse=Utilizar almacenes personales de usuarios
IfYouUsePointOfSaleCheckModule=Si utiliza un módulo de Punto de Venta (módulo TPV por defecto u otro módulo externo), esta configuración puede ser ignorada por su módulo de Punto de Venta. La mayor parte de módulos TPV están diseñados para crear inmediatamente una factura y decrementar stocks cualquiera que sean estas opciones. Por lo tanto, si usted necesita o no decrementar stocks en el registro de una venta de su punto de venta, controle también la configuración de su módulo TPV.
##### Menu #####
MenuDeleted=Menú eliminado
TreeMenu=Estructura de los menús
@ -1482,14 +1486,14 @@ ClickToDialDesc=Este módulo permite agregar un icono después del número de te
##### Point Of Sales (CashDesk) #####
CashDesk=TPV
CashDeskSetup=Configuración del módulo Terminal Punto de Venta
CashDeskThirdPartyForSell=Default generic third party to use for sells
CashDeskThirdPartyForSell=Tercero genérico a usar para las ventas
CashDeskBankAccountForSell=Cuenta por defecto a utilizar para los cobros en efectivo (caja)
CashDeskBankAccountForCheque= Cuenta por defecto a utilizar para los cobros con cheques
CashDeskBankAccountForCB= Cuenta por defecto a utilizar para los cobros con tarjeta de crédito
CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale
CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease
StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled
CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required.
CashDeskDoNotDecreaseStock=Desactivar decrementos de stock si una venta se realiza desde TPV
CashDeskIdWareHouse=Forzar y restringir almacén a usar para decremento de stock
StockDecreaseForPointOfSaleDisabled=Decremento de stock desde TPV desactivado
CashDeskYouDidNotDisableStockDecease=Usted no ha desactivado el decremento de stock al hacer una venta desde TPV. Así que se requiere un almacén.
##### Bookmark #####
BookmarkSetup=Configuración del módulo Marcadores
BookmarkDesc=Este módulo le permite gestionar los enlaces y accesos directos. También permite añadir cualquier página de Dolibarr o enlace web en el menú de acceso rápido de la izquierda.
@ -1543,13 +1547,13 @@ ConfirmDeleteFiscalYear=¿Está seguro de querer eliminar este año fiscal?
Opened=Abierto
Closed=Cerrado
AlwaysEditable=Puede editarse siempre
MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application)
NbMajMin=Minimum number of uppercase characters
NbNumMin=Minimum number of numeric characters
NbSpeMin=Minimum number of special characters
NbIteConsecutive=Maximum number of repeating same characters
NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation
SalariesSetup=Setup of module salaries
SortOrder=Sort order
MAIN_APPLICATION_TITLE=Forzar visibilidad del nombre de aplicación (advertencia: indicar su propio nombre aquí puede romper la característica de relleno automático de inicio de sesión al utilizar la aplicación móvil DoliDroid)
NbMajMin=Número mínimo de caracteres en mayúsculas
NbNumMin=Número mínimo de caracteres numéricos
NbSpeMin=Número mínimo de caracteres especiales
NbIteConsecutive=Número máximo de repeticiones de los mismos caracteres
NoAmbiCaracAutoGeneration=No usar caracteres ambiguos ("1","l","i","|","0","O") para la generación automática
SalariesSetup=Configuración del módulo salarios
SortOrder=Ordenación
Format=Formatear
TypePaymentDesc=0:Pago cliente,1:Pago proveedor,2:Tanto pago de cliente como de proveedor

View File

@ -44,7 +44,7 @@ AgendaExtSitesDesc=Esta página le permite configurar calendarios externos para
ActionsEvents=Eventos para que Dolibarr cree un evento en la agenda de forma automática
PropalValidatedInDolibarr=Presupuesto %s validado
InvoiceValidatedInDolibarr=Factura %s validada
InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS
InvoiceValidatedInDolibarrFromPos=Factura %s validada desde TPV
InvoiceBackToDraftInDolibarr=Factura %s devuelta a borrador
InvoiceDeleteDolibarr=Factura %s eliminada
OrderValidatedInDolibarr= Pedido %s validado

View File

@ -217,7 +217,7 @@ NoInvoice=Ninguna factura
ClassifyBill=Clasificar la factura
SupplierBillsToPay=Facturas de proveedores a pagar
CustomerBillsUnpaid=Facturas a clientes pendientes de cobro
DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters
DispenseMontantLettres=Las facturas escritas a través de procedimientos mecanograficos son dispensadas por la orden en letras
NonPercuRecuperable=No percibido recuperable
SetConditions=Definir condiciones de pago
SetMode=Definir modo de pago

View File

@ -109,4 +109,4 @@ CategoriesSetup=Configuración de categorías
CategorieRecursiv=Enlazar con la categoría padre automáticamente
CategorieRecursivHelp=Si está activado, el producto se enlazará a la categoría padre si lo añadimos a una subcategoría
AddProductServiceIntoCategory=Añadir el siguiente producto/servicio
ShowCategory=Show category
ShowCategory=Mostrar categoría

View File

@ -108,7 +108,7 @@ ErrorWrongAccountancyCodeForCompany=Código contable incorrecto para %s
SuppliersProductsSellSalesTurnover=Volumen de ventas generado por la venta de los productos de los proveedores
CheckReceipt=Lista de remesas
CheckReceiptShort=Remesas
LastCheckReceiptShort=Last %s check receipts
LastCheckReceiptShort=%s Últimas remesas
NewCheckReceipt=Nueva remesa
NewCheckDeposit=Nuevo ingreso
NewCheckDepositOn=Crear nueva remesa en la cuenta: %s

View File

@ -1,7 +1,7 @@
# Dolibarr language file - Source file is en_US - contracts
ContractsArea=Área contratos
ListOfContracts=Listado de contratos
LastModifiedContracts=Last %s modified contracts
LastModifiedContracts=%s Últimos contratos modificados
AllContracts=Todos los contratos
ContractCard=Ficha contrato
ContractStatus=Estado del contrato
@ -53,7 +53,7 @@ ListOfRunningContractsLines=Listado de líneas de contratos en servicio
ListOfRunningServices=Listado de servicios activos
NotActivatedServices=Servicios no activados (con los contratos validados)
BoardNotActivatedServices=Servicios a activar con los contratos validados
LastContracts=Last % contracts
LastContracts=%s Últimos contratos
LastActivatedServices=Los %s últimos servicios activados
LastModifiedServices=Los %s últimos servicios modificados
EditServiceLine=Edición línea del servicio

View File

@ -18,7 +18,7 @@ CronExplainHowToRunUnix=En entorno Unix debes usar crontab para ejecutar el coma
CronExplainHowToRunWin=En un entorno de Microsoft(tm) Windows puedes usar el programador de tareas para ejecutar el comando cada varios minutos
# Menu
CronJobs=Tareas programadas
CronListActive=List of active/scheduled jobs
CronListActive=Listado de tareas activas/programadas
CronListInactive=Tareas Inactivas
# Page list
CronDateLastRun=Últ. ejec.

View File

@ -31,8 +31,8 @@ DonationRecipient=Beneficiario
ThankYou=Muchas gracias
IConfirmDonationReception=El beneficiario confirma la recepción, como donación, de la siguiente cantidad
MinimumAmount=El importe mínimo es %s
FreeTextOnDonations=Free text to show in footer
FrenchOptions=Options for France
DONATION_ART200=Show article 200 from CGI if you are concerned
DONATION_ART238=Show article 238 from CGI if you are concerned
DONATION_ART885=Show article 885 from CGI if you are concerned
FreeTextOnDonations=Texto libre a mostrar a pié de página
FrenchOptions=Opciones para Francia
DONATION_ART200=Mostrar artículo 200 del CGI si se está interesado
DONATION_ART238=Mostrar artículo 238 del CGI si se está interesado
DONATION_ART885=Mostrar artículo 885 del CGI si se está interesado

View File

@ -138,6 +138,24 @@ ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, este miembro aún no es
ErrorThereIsSomeDeliveries=Error, hay entregas vinculadas a este envío. No se puede eliminar.
ErrorCantDeletePaymentReconciliated=No se puede eliminar un pago que ha generado una transacción bancaria que se encuentra conciliada
ErrorCantDeletePaymentSharedWithPayedInvoice=No se puede eliminar un pago de varias factura con alguna factura con estado Pagada
ErrorPriceExpression1=No se puede asignar a la constante '%s'
ErrorPriceExpression2=No se puede redefinir la función incorporada '%s'
ErrorPriceExpression3=Variable '%s' no definida en la definición de la función
ErrorPriceExpression4=Carácter '%s' ilegal
ErrorPriceExpression5=No se esperaba '%s'
ErrorPriceExpression6=Número de argumentos inadecuados (%s dados, %s esperados)
ErrorPriceExpression8=Operador '%s' no esperado
ErrorPriceExpression9=Ha ocurrido un error no esperado
ErrorPriceExpression10=Operador '%s' carece de operando
ErrorPriceExpression11=Se esperaba '%s'
ErrorPriceExpression14=División por cero
ErrorPriceExpression17=Variable '%s' indefinida
ErrorPriceExpression19=Expresión no encontrada
ErrorPriceExpression20=Expresión vacía
ErrorPriceExpression21=Resultado '%s' vacío
ErrorPriceExpression22=Resultado '%s' negativo
ErrorPriceExpressionInternal=Error interno '%s'
ErrorPriceExpressionUnknown=Error desconocido '%s'
# Warnings
WarningMandatorySetupNotComplete=Los parámetros obligatorios de configuración no están todavía definidos

View File

@ -2,4 +2,4 @@
ExternalSiteSetup=Configuración del enlace al sitio web externo
ExternalSiteURL=URL del sitio externo
ExternalSiteModuleNotComplete=El módulo Sitio web externo no ha sido configurado correctamente.
ExampleMyMenuEntry=My menu entry
ExampleMyMenuEntry=Mi entrada de menú

View File

@ -31,14 +31,14 @@ RelatedInterventions=Intervenciones adjuntas
ShowIntervention=Mostrar intervención
SendInterventionRef=Envío de la intervención %s
SendInterventionByMail=Enviar intervención por e-mail
InterventionCreatedInDolibarr=Intervention %s created
InterventionValidatedInDolibarr=Intervention %s validated
InterventionModifiedInDolibarr=Intervention %s modified
InterventionClassifiedBilledInDolibarr=Intervention %s set as billed
InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled
InterventionSentByEMail=Intervention %s sent by EMail
InterventionDeletedInDolibarr=Intervention %s deleted
SearchAnIntervention=Search an intervention
InterventionCreatedInDolibarr=Intervención %s creada
InterventionValidatedInDolibarr=Intervención %s validada
InterventionModifiedInDolibarr=Intervención %s modificada
InterventionClassifiedBilledInDolibarr=Intervención %s clasificada como facturada
InterventionClassifiedUnbilledInDolibarr=Intervención %s clasificada como no facturada
InterventionSentByEMail=Intervención %s enviada por E-Mail
InterventionDeletedInDolibarr=Intervención %s eliminada
SearchAnIntervention=Buscar una intervención
##### Types de contacts #####
TypeContact_fichinter_internal_INTERREPFOLL=Responsable seguimiento de la intervención
TypeContact_fichinter_internal_INTERVENING=Interventor

View File

@ -115,7 +115,7 @@ SentBy=Enviado por
MailingNeedCommand=Por razones de seguridad, el envío de un E-Mailing en masa debe realizarse en línea de comandos. Pida a su administrador que lance el comando siguiente para para enviar la correspondencia a a todos los destinatarios:
MailingNeedCommand2=Puede enviar en línea añadiendo el parámetro MAILING_LIMIT_SENDBYWEB con un valor numérico que indica el máximo nº de e-mails a enviar por sesión. Para ello vaya a Inicio - Configuración - Varios.
ConfirmSendingEmailing=¿Confirma el envío del e-mailing?
LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, <b>%s</b> recipients at a time for each sending session.
LimitSendingEmailing=Nota: El envío de e-mailings desde la interfaz web se realiza en tandas por razones de seguridad y timeouts, se enviarán a <b>%s</b> destinatarios por tanda.
TargetsReset=Vaciar lista
ToClearAllRecipientsClickHere=Para vaciar la lista de los destinatarios de este E-Mailing, haga click en el botón
ToAddRecipientsChooseHere=Para añadir destinatarios, escoja los que figuran en las listas a continuación
@ -136,6 +136,6 @@ SomeNotificationsWillBeSent=%s notificaciones van a ser enviadas por e-mail
AddNewNotification=Activar un nuevo destinatario de notificaciones
ListOfActiveNotifications=Listado de todos los destinatarios de notificaciones
ListOfNotificationsDone=Listado de notificaciones enviadas
MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing.
MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter <strong>'%s'</strong> to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature.
MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s.
MailSendSetupIs=La configuración de e-mailings está a '%s'. Este modo no puede ser usado para enviar e-mails masivos.
MailSendSetupIs2=Antes debe, con una cuenta de administrador, en el menú %sInicio - Configuración - E-Mails%s, cambiar el parámetro <strong>'%s'</strong> para usar el modo '%s'. Con este modo puede configurar un servidor SMTP de su proveedor de servicios de internet.
MailSendSetupIs3=Si tiene preguntas de como configurar su servidor SMTP, puede contactar con %s.

View File

@ -367,7 +367,7 @@ ActionsOnCompany=Eventos respecto a este tercero
ActionsOnMember=Eventos respecto a este miembro
NActions=%s eventos
NActionsLate=%s en retraso
RequestAlreadyDone=Request already recorded
RequestAlreadyDone=Solicitud ya registrada
Filter=Filtro
RemoveFilter=Eliminar filtro
ChartGenerated=Gráficos generados

View File

@ -41,4 +41,4 @@ AgentContactType=Tipo de contacto comisionado
AgentContactTypeDetails=Indique qué tipo de contacto (enlazado a las facturas) será el utilizado para el informe de márgenes de agentes comerciales
rateMustBeNumeric=El margen debe ser un valor numérico
markRateShouldBeLesserThan100=El margen tiene que ser menor que 100
ShowMarginInfos=Show margin infos
ShowMarginInfos=Mostrar info de márgenes

View File

@ -203,3 +203,4 @@ MembersByNature=Miembros por naturaleza
VATToUseForSubscriptions=Tasa de IVA para las afiliaciones
NoVatOnSubscription=Sin IVA para en las afiliaciones
MEMBER_PAYONLINE_SENDEMAIL=E-Mail para advertir en caso de recepción de confirmación de un pago validado de una afiliación
ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Producto usado para las suscripciones en línea en facturas: %s

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