Merge branch '8.0' of github.com:Dolibarr/dolibarr into 8.0
This commit is contained in:
commit
055a0b2859
14
.travis.yml
14
.travis.yml
@ -2,7 +2,7 @@
|
|||||||
# from Dolibarr GitHub repository.
|
# from Dolibarr GitHub repository.
|
||||||
# For syntax, see http://about.travis-ci.org/docs/user/languages/php/
|
# For syntax, see http://about.travis-ci.org/docs/user/languages/php/
|
||||||
|
|
||||||
# We use dist: precise to have php 5.3 available
|
# We use dist: trusty to have php 5.4+ available
|
||||||
dist: trusty
|
dist: trusty
|
||||||
sudo: required
|
sudo: required
|
||||||
|
|
||||||
@ -37,7 +37,6 @@ php:
|
|||||||
- '7.0'
|
- '7.0'
|
||||||
- '7.1'
|
- '7.1'
|
||||||
- '7.2'
|
- '7.2'
|
||||||
#- hhvm only with dist: trusty
|
|
||||||
- nightly
|
- nightly
|
||||||
|
|
||||||
env:
|
env:
|
||||||
@ -59,10 +58,17 @@ env:
|
|||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- php: hhvm
|
|
||||||
- php: nightly
|
- php: nightly
|
||||||
# We exclude some combinations not usefull to save Travis CPU
|
# We exclude some combinations not usefull to save Travis CPU
|
||||||
exclude:
|
exclude:
|
||||||
|
- php: '5.5'
|
||||||
|
env: DB=mariadb
|
||||||
|
- php: '5.6'
|
||||||
|
env: DB=mariadb
|
||||||
|
- php: '7.0'
|
||||||
|
env: DB=mariadb
|
||||||
|
- php: '7.1'
|
||||||
|
env: DB=mariadb
|
||||||
- php: '5.5'
|
- php: '5.5'
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
- php: '5.6'
|
- php: '5.6'
|
||||||
@ -71,8 +77,6 @@ matrix:
|
|||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
- php: '7.1'
|
- php: '7.1'
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
- php: hhvm
|
|
||||||
env: DB=postgresql
|
|
||||||
- php: nightly
|
- php: nightly
|
||||||
env: DB=postgresql
|
env: DB=postgresql
|
||||||
|
|
||||||
|
|||||||
@ -38,6 +38,12 @@ source_file = htdocs/langs/en_US/bills.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[dolibarr.blockedlog]
|
||||||
|
file_filter = htdocs/langs/<lang>/blockedlog.lang
|
||||||
|
source_file = htdocs/langs/en_US/blockedlog.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[dolibarr.bookmarks]
|
[dolibarr.bookmarks]
|
||||||
file_filter = htdocs/langs/<lang>/bookmarks.lang
|
file_filter = htdocs/langs/<lang>/bookmarks.lang
|
||||||
source_file = htdocs/langs/en_US/bookmarks.lang
|
source_file = htdocs/langs/en_US/bookmarks.lang
|
||||||
|
|||||||
35
ChangeLog
35
ChangeLog
@ -2,6 +2,38 @@
|
|||||||
English Dolibarr ChangeLog
|
English Dolibarr ChangeLog
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
|
||||||
|
***** ChangeLog for 8.0.1 compared to 8.0.0 *****
|
||||||
|
FIX: #9258
|
||||||
|
FIX: #9328
|
||||||
|
FIX: #9337
|
||||||
|
FIX: adding GROUP BY for PostgreSQL
|
||||||
|
FIX: API template for list pages in module builder
|
||||||
|
FIX: API template for record page to delete a record
|
||||||
|
FIX: a removed option was still in setup
|
||||||
|
FIX: badge on time spent on project and tasks
|
||||||
|
FIX: Delete file on smartphone
|
||||||
|
FIX: Fetch function will fetch comments
|
||||||
|
FIX: Fetch task will now fetch comments
|
||||||
|
FIX: $fk_account is always empty, must be $soc->fk_account
|
||||||
|
FIX: Force stripe api version to avoid trouble if we update stripe api
|
||||||
|
FIX: get_product_vat_for_country functions.lib.php
|
||||||
|
FIX: Get templates in a forced language
|
||||||
|
FIX: hook on dispatch order fourn
|
||||||
|
FIX: Language selection lost if error during creation of email template
|
||||||
|
FIX: Look and feel v8
|
||||||
|
FIX: propal.class.php
|
||||||
|
FIX: Add calls to fetchComments function
|
||||||
|
FIX: Remove fetchComments from project and task fetch function
|
||||||
|
FIX: remove internal property isextrafieldmanaged from API returns
|
||||||
|
FIX: sql error
|
||||||
|
FIX: table llx_chargessociales doesn't exists
|
||||||
|
FIX: trans on null object
|
||||||
|
FIX: vat rate code not returned by get_product_vat_for_country
|
||||||
|
FIX: warning for late template invoices to remove when suspended
|
||||||
|
FIX: Add hidden option MAIN_xxx_IN_SOURCE_ADDRESS to solve legal issues on PDF
|
||||||
|
FIX: Table llx_facture_rec_extrafields missing after migration
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 8.0.0 compared to 7.0.0 *****
|
***** ChangeLog for 8.0.0 compared to 7.0.0 *****
|
||||||
|
|
||||||
For Users:
|
For Users:
|
||||||
@ -189,7 +221,8 @@ Following changes may create regressions for some external modules, but were nec
|
|||||||
* Remove method Categorie:get_nb_categories() that was not used.
|
* Remove method Categorie:get_nb_categories() that was not used.
|
||||||
* Hook getnomurltooltip provide a duplicate feature compared to hook getNomUrl so all hooks getnomurltooltip
|
* Hook getnomurltooltip provide a duplicate feature compared to hook getNomUrl so all hooks getnomurltooltip
|
||||||
are now replaced with hook getNomUrl.
|
are now replaced with hook getNomUrl.
|
||||||
|
* The substitution key __CONTACTCIVNAME__ is no longer present, it has been replaced by __CONTACT_NAME_{TYPE}__
|
||||||
|
where {TYPE} is contact type code (BILLING, SHIPPING, CUSTOMER, ... see contact type dictionnary).
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 7.0.3 compared to 7.0.2 *****
|
***** ChangeLog for 7.0.3 compared to 7.0.2 *****
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# DOLIBARR ERP & CRM
|
# DOLIBARR ERP & CRM
|
||||||
|
|
||||||
 
|
 
|
||||||
|
|
||||||
Dolibarr ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…).
|
Dolibarr ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…).
|
||||||
|
|
||||||
|
|||||||
@ -212,6 +212,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/supplier_proposal
|
%_datadir/dolibarr/htdocs/supplier_proposal
|
||||||
%_datadir/dolibarr/htdocs/support
|
%_datadir/dolibarr/htdocs/support
|
||||||
%_datadir/dolibarr/htdocs/theme
|
%_datadir/dolibarr/htdocs/theme
|
||||||
|
%_datadir/dolibarr/htdocs/ticket
|
||||||
%_datadir/dolibarr/htdocs/user
|
%_datadir/dolibarr/htdocs/user
|
||||||
%_datadir/dolibarr/htdocs/variants
|
%_datadir/dolibarr/htdocs/variants
|
||||||
%_datadir/dolibarr/htdocs/webservices
|
%_datadir/dolibarr/htdocs/webservices
|
||||||
|
|||||||
@ -292,6 +292,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/supplier_proposal
|
%_datadir/dolibarr/htdocs/supplier_proposal
|
||||||
%_datadir/dolibarr/htdocs/support
|
%_datadir/dolibarr/htdocs/support
|
||||||
%_datadir/dolibarr/htdocs/theme
|
%_datadir/dolibarr/htdocs/theme
|
||||||
|
%_datadir/dolibarr/htdocs/ticket
|
||||||
%_datadir/dolibarr/htdocs/user
|
%_datadir/dolibarr/htdocs/user
|
||||||
%_datadir/dolibarr/htdocs/variants
|
%_datadir/dolibarr/htdocs/variants
|
||||||
%_datadir/dolibarr/htdocs/webservices
|
%_datadir/dolibarr/htdocs/webservices
|
||||||
|
|||||||
@ -209,6 +209,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/supplier_proposal
|
%_datadir/dolibarr/htdocs/supplier_proposal
|
||||||
%_datadir/dolibarr/htdocs/support
|
%_datadir/dolibarr/htdocs/support
|
||||||
%_datadir/dolibarr/htdocs/theme
|
%_datadir/dolibarr/htdocs/theme
|
||||||
|
%_datadir/dolibarr/htdocs/ticket
|
||||||
%_datadir/dolibarr/htdocs/user
|
%_datadir/dolibarr/htdocs/user
|
||||||
%_datadir/dolibarr/htdocs/variants
|
%_datadir/dolibarr/htdocs/variants
|
||||||
%_datadir/dolibarr/htdocs/webservices
|
%_datadir/dolibarr/htdocs/webservices
|
||||||
|
|||||||
@ -220,6 +220,7 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/supplier_proposal
|
%_datadir/dolibarr/htdocs/supplier_proposal
|
||||||
%_datadir/dolibarr/htdocs/support
|
%_datadir/dolibarr/htdocs/support
|
||||||
%_datadir/dolibarr/htdocs/theme
|
%_datadir/dolibarr/htdocs/theme
|
||||||
|
%_datadir/dolibarr/htdocs/ticket
|
||||||
%_datadir/dolibarr/htdocs/user
|
%_datadir/dolibarr/htdocs/user
|
||||||
%_datadir/dolibarr/htdocs/variants
|
%_datadir/dolibarr/htdocs/variants
|
||||||
%_datadir/dolibarr/htdocs/webservices
|
%_datadir/dolibarr/htdocs/webservices
|
||||||
|
|||||||
@ -295,6 +295,9 @@ if ((! empty($_REQUEST['unused']) && $_REQUEST['unused'] == 'true') || (isset($a
|
|||||||
if (preg_match('/^DescADHERENT_/', $value)) $qualifiedforclean=0;
|
if (preg_match('/^DescADHERENT_/', $value)) $qualifiedforclean=0;
|
||||||
if (preg_match('/^SubmitTranslation/', $value)) $qualifiedforclean=0;
|
if (preg_match('/^SubmitTranslation/', $value)) $qualifiedforclean=0;
|
||||||
if (preg_match('/^ModuleCompanyCode/', $value)) $qualifiedforclean=0;
|
if (preg_match('/^ModuleCompanyCode/', $value)) $qualifiedforclean=0;
|
||||||
|
// admin.lang
|
||||||
|
if (preg_match('/^DAV_ALLOW_PUBLIC_DIR/i', $value)) $qualifiedforclean=0;
|
||||||
|
if (preg_match('/^DAV_ALLOW_ECM_DIR/i', $value)) $qualifiedforclean=0;
|
||||||
// boxes.lang
|
// boxes.lang
|
||||||
if (preg_match('/^BoxTitleLast/', $value)) $qualifiedforclean=0;
|
if (preg_match('/^BoxTitleLast/', $value)) $qualifiedforclean=0;
|
||||||
if (preg_match('/^BoxTitleLatest/', $value)) $qualifiedforclean=0;
|
if (preg_match('/^BoxTitleLatest/', $value)) $qualifiedforclean=0;
|
||||||
|
|||||||
@ -121,6 +121,9 @@ if (empty($reshook))
|
|||||||
if ($country_code)
|
if ($country_code)
|
||||||
{
|
{
|
||||||
$sqlfile = DOL_DOCUMENT_ROOT.'/install/mysql/data/llx_accounting_account_'.strtolower($country_code).'.sql';
|
$sqlfile = DOL_DOCUMENT_ROOT.'/install/mysql/data/llx_accounting_account_'.strtolower($country_code).'.sql';
|
||||||
|
|
||||||
|
// FIXME Get the ADD rowid and pass it + num of comapny * 100 000 000 to run_sql as a new parameter to say to update sql on the fly to add offset to rowid and account_parent value.
|
||||||
|
|
||||||
$result = run_sql($sqlfile, 1, 0, 1);
|
$result = run_sql($sqlfile, 1, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
* Copyright (C) 2017 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2017-2018 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -50,11 +50,11 @@ $main_option = array (
|
|||||||
|
|
||||||
$configuration = AccountancyExport::getTypeConfig();
|
$configuration = AccountancyExport::getTypeConfig();
|
||||||
|
|
||||||
$listparam = $configuration[param];
|
$listparam = $configuration['param'];
|
||||||
|
|
||||||
$listformat = $configuration[format];
|
$listformat = $configuration['format'];
|
||||||
|
|
||||||
$listcr = $configuration[cr];
|
$listcr = $configuration['cr'];
|
||||||
|
|
||||||
|
|
||||||
$model_option = array (
|
$model_option = array (
|
||||||
@ -117,7 +117,7 @@ if ($action == 'update') {
|
|||||||
if (! $error) {
|
if (! $error) {
|
||||||
// reload
|
// reload
|
||||||
$configuration = AccountancyExport::getTypeConfig();
|
$configuration = AccountancyExport::getTypeConfig();
|
||||||
$listparam = $configuration[param];
|
$listparam = $configuration['param'];
|
||||||
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans("Error"), null, 'errors');
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
@ -142,27 +142,27 @@ print ' {'."\n";
|
|||||||
foreach ($listparam as $key => $param) {
|
foreach ($listparam as $key => $param) {
|
||||||
print ' if (jQuery("#ACCOUNTING_EXPORT_MODELCSV").val()=="'.$key.'")'."\n";
|
print ' if (jQuery("#ACCOUNTING_EXPORT_MODELCSV").val()=="'.$key.'")'."\n";
|
||||||
print ' {'."\n";
|
print ' {'."\n";
|
||||||
print ' //console.log("'.$param[label].'");'."\n";
|
print ' //console.log("'.$param['label'].'");'."\n";
|
||||||
if (empty($param[ACCOUNTING_EXPORT_FORMAT])) {
|
if (empty($param['ACCOUNTING_EXPORT_FORMAT'])) {
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").val("'.$conf->global->ACCOUNTING_EXPORT_FORMAT.'");'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").val("'.$conf->global->ACCOUNTING_EXPORT_FORMAT.'");'."\n";
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").prop("disabled", true);'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").prop("disabled", true);'."\n";
|
||||||
} else {
|
} else {
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").val("'.$param[ACCOUNTING_EXPORT_FORMAT].'");'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").val("'.$param['ACCOUNTING_EXPORT_FORMAT'].'");'."\n";
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").removeAttr("disabled");'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_FORMAT").removeAttr("disabled");'."\n";
|
||||||
}
|
}
|
||||||
if (empty($param[ACCOUNTING_EXPORT_SEPARATORCSV])) {
|
if (empty($param['ACCOUNTING_EXPORT_SEPARATORCSV'])) {
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").val("");'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").val("");'."\n";
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").prop("disabled", true);'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").prop("disabled", true);'."\n";
|
||||||
} else {
|
} else {
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").val("'.$conf->global->ACCOUNTING_EXPORT_SEPARATORCSV.'");'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").val("'.$conf->global->ACCOUNTING_EXPORT_SEPARATORCSV.'");'."\n";
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").removeAttr("disabled");'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_SEPARATORCSV").removeAttr("disabled");'."\n";
|
||||||
}
|
}
|
||||||
if (empty($param[ACCOUNTING_EXPORT_ENDLINE])) {
|
if (empty($param['ACCOUNTING_EXPORT_ENDLINE'])) {
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_ENDLINE").prop("disabled", true);'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_ENDLINE").prop("disabled", true);'."\n";
|
||||||
} else {
|
} else {
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_ENDLINE").removeAttr("disabled");'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_ENDLINE").removeAttr("disabled");'."\n";
|
||||||
}
|
}
|
||||||
if (empty($param[ACCOUNTING_EXPORT_DATE])) {
|
if (empty($param['ACCOUNTING_EXPORT_DATE'])) {
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_DATE").val("");'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_DATE").val("");'."\n";
|
||||||
print ' jQuery("#ACCOUNTING_EXPORT_DATE").prop("disabled", true);'."\n";
|
print ' jQuery("#ACCOUNTING_EXPORT_DATE").prop("disabled", true);'."\n";
|
||||||
} else {
|
} else {
|
||||||
@ -257,15 +257,15 @@ if ($num2) {
|
|||||||
print '<tr class="oddeven value">';
|
print '<tr class="oddeven value">';
|
||||||
|
|
||||||
// Param
|
// Param
|
||||||
$label = $key[label];
|
$label = $key['label'];
|
||||||
print '<td width="50%">' . $langs->trans($label) . '</td>';
|
print '<td width="50%">' . $langs->trans($label) . '</td>';
|
||||||
|
|
||||||
// Value
|
// Value
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if (is_array($key[param])) {
|
if (is_array($key['param'])) {
|
||||||
print $form->selectarray($label, $key[param], $conf->global->$label, 0);
|
print $form->selectarray($label, $key['param'], $conf->global->$label, 0);
|
||||||
} else {
|
} else {
|
||||||
print '<input type="text" size="20" id="'. $label .'" name="' . $key[label] . '" value="' . $conf->global->$label . '">';
|
print '<input type="text" size="20" id="'. $label .'" name="' . $key['label'] . '" value="' . $conf->global->$label . '">';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|||||||
@ -688,7 +688,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
* Return list of personalized groups that are active
|
* Return list of personalized groups that are active
|
||||||
*
|
*
|
||||||
* @param int $categorytype -1=All, 0=Only non computed groups, 1=Only computed groups
|
* @param int $categorytype -1=All, 0=Only non computed groups, 1=Only computed groups
|
||||||
* @return array Array of groups
|
* @return array|int Array of groups or -1 if error
|
||||||
*/
|
*/
|
||||||
public function getCats($categorytype=-1)
|
public function getCats($categorytype=-1)
|
||||||
{
|
{
|
||||||
@ -745,7 +745,7 @@ class AccountancyCategory // extends CommonObject
|
|||||||
*
|
*
|
||||||
* @param int $cat_id Id if personalized accounting group/category
|
* @param int $cat_id Id if personalized accounting group/category
|
||||||
* @param string $predefinedgroupwhere Sql criteria filter to select accounting accounts
|
* @param string $predefinedgroupwhere Sql criteria filter to select accounting accounts
|
||||||
* @return array Array of accounting accounts
|
* @return array|int Array of accounting accounts or -1 if error
|
||||||
*/
|
*/
|
||||||
public function getCptsCat($cat_id, $predefinedgroupwhere='')
|
public function getCptsCat($cat_id, $predefinedgroupwhere='')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -55,14 +55,12 @@ if ($action == 'update')
|
|||||||
$amount=GETPOST('MEMBER_NEWFORM_AMOUNT');
|
$amount=GETPOST('MEMBER_NEWFORM_AMOUNT');
|
||||||
$editamount=GETPOST('MEMBER_NEWFORM_EDITAMOUNT');
|
$editamount=GETPOST('MEMBER_NEWFORM_EDITAMOUNT');
|
||||||
$payonline=GETPOST('MEMBER_NEWFORM_PAYONLINE');
|
$payonline=GETPOST('MEMBER_NEWFORM_PAYONLINE');
|
||||||
$email=GETPOST('MEMBER_PAYONLINE_SENDEMAIL');
|
$forcetype=GETPOST('MEMBER_NEWFORM_FORCETYPE');
|
||||||
$forcetype=GETPOST('MEMBER_NEWFORM_FORCETYPE');
|
|
||||||
|
|
||||||
$res=dolibarr_set_const($db, "MEMBER_ENABLE_PUBLIC",$public,'chaine',0,'',$conf->entity);
|
$res=dolibarr_set_const($db, "MEMBER_ENABLE_PUBLIC",$public,'chaine',0,'',$conf->entity);
|
||||||
$res=dolibarr_set_const($db, "MEMBER_NEWFORM_AMOUNT",$amount,'chaine',0,'',$conf->entity);
|
$res=dolibarr_set_const($db, "MEMBER_NEWFORM_AMOUNT",$amount,'chaine',0,'',$conf->entity);
|
||||||
$res=dolibarr_set_const($db, "MEMBER_NEWFORM_EDITAMOUNT",$editamount,'chaine',0,'',$conf->entity);
|
$res=dolibarr_set_const($db, "MEMBER_NEWFORM_EDITAMOUNT",$editamount,'chaine',0,'',$conf->entity);
|
||||||
$res=dolibarr_set_const($db, "MEMBER_NEWFORM_PAYONLINE",$payonline,'chaine',0,'',$conf->entity);
|
$res=dolibarr_set_const($db, "MEMBER_NEWFORM_PAYONLINE",$payonline,'chaine',0,'',$conf->entity);
|
||||||
$res=dolibarr_set_const($db, "MEMBER_PAYONLINE_SENDEMAIL",$email,'chaine',0,'',$conf->entity);
|
|
||||||
if ($forcetype < 0) $res=dolibarr_del_const($db, "MEMBER_NEWFORM_FORCETYPE",$conf->entity);
|
if ($forcetype < 0) $res=dolibarr_del_const($db, "MEMBER_NEWFORM_FORCETYPE",$conf->entity);
|
||||||
else $res=dolibarr_set_const($db, "MEMBER_NEWFORM_FORCETYPE",$forcetype,'chaine',0,'',$conf->entity);
|
else $res=dolibarr_set_const($db, "MEMBER_NEWFORM_FORCETYPE",$forcetype,'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
@ -211,13 +209,6 @@ if (! empty($conf->global->MEMBER_ENABLE_PUBLIC))
|
|||||||
print $form->selectarray("MEMBER_NEWFORM_PAYONLINE",$listofval,(! empty($conf->global->MEMBER_NEWFORM_PAYONLINE)?$conf->global->MEMBER_NEWFORM_PAYONLINE:''),0);
|
print $form->selectarray("MEMBER_NEWFORM_PAYONLINE",$listofval,(! empty($conf->global->MEMBER_NEWFORM_PAYONLINE)?$conf->global->MEMBER_NEWFORM_PAYONLINE:''),0);
|
||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
|
|
||||||
// Jump to an online payment page
|
|
||||||
print '<tr class="oddeven" id="tremail"><td>';
|
|
||||||
print $langs->trans("MEMBER_PAYONLINE_SENDEMAIL");
|
|
||||||
print '</td><td align="right">';
|
|
||||||
print '<input type="text" id="MEMBER_PAYONLINE_SENDEMAIL" name="MEMBER_PAYONLINE_SENDEMAIL" size="24" value="'.(! empty($conf->global->MEMBER_PAYONLINE_SENDEMAIL)?$conf->global->MEMBER_PAYONLINE_SENDEMAIL:'').'">';
|
|
||||||
print "</td></tr>\n";
|
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '<center>';
|
print '<center>';
|
||||||
|
|||||||
@ -209,7 +209,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessages($object->errors, $object->error, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -464,7 +464,7 @@ class Adherent extends CommonObject
|
|||||||
$action='update';
|
$action='update';
|
||||||
|
|
||||||
// Actions on extra fields
|
// Actions on extra fields
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||||
{
|
{
|
||||||
$result=$this->insertExtraFields();
|
$result=$this->insertExtraFields();
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
@ -531,6 +531,13 @@ class Adherent extends CommonObject
|
|||||||
$luser->pass=$this->pass;
|
$luser->pass=$this->pass;
|
||||||
$luser->societe_id=$this->societe;
|
$luser->societe_id=$this->societe;
|
||||||
|
|
||||||
|
$luser->birth=$this->birth;
|
||||||
|
$luser->address=$this->address;
|
||||||
|
$luser->zip=$this->zip;
|
||||||
|
$luser->town=$this->town;
|
||||||
|
$luser->country_id=$this->country_id;
|
||||||
|
$luser->state_id=$this->state_id;
|
||||||
|
|
||||||
$luser->email=$this->email;
|
$luser->email=$this->email;
|
||||||
$luser->skype=$this->skype;
|
$luser->skype=$this->skype;
|
||||||
$luser->office_phone=$this->phone;
|
$luser->office_phone=$this->phone;
|
||||||
@ -1340,7 +1347,7 @@ class Adherent extends CommonObject
|
|||||||
* @param string $num_chq Numero cheque (if Id bank account provided)
|
* @param string $num_chq Numero cheque (if Id bank account provided)
|
||||||
* @param string $emetteur_nom Name of cheque writer
|
* @param string $emetteur_nom Name of cheque writer
|
||||||
* @param string $emetteur_banque Name of bank of cheque
|
* @param string $emetteur_banque Name of bank of cheque
|
||||||
* @param string $autocreatethirdparty Auto create new thirdparty if member not linked to a thirdparty and we request an option that generate invoice.
|
* @param string $autocreatethirdparty Auto create new thirdparty if member not yet linked to a thirdparty and we request an option that generate invoice.
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function subscriptionComplementaryActions($subscriptionid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, $amount, $num_chq, $emetteur_nom='', $emetteur_banque='', $autocreatethirdparty=0)
|
function subscriptionComplementaryActions($subscriptionid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, $amount, $num_chq, $emetteur_nom='', $emetteur_banque='', $autocreatethirdparty=0)
|
||||||
@ -2592,6 +2599,7 @@ class Adherent extends CommonObject
|
|||||||
$outputlangs = new Translate('', $conf);
|
$outputlangs = new Translate('', $conf);
|
||||||
$outputlangs->setDefaultLang(empty($adherent->thirdparty->default_lang) ? $mysoc->default_lang : $adherent->thirdparty->default_lang);
|
$outputlangs->setDefaultLang(empty($adherent->thirdparty->default_lang) ? $mysoc->default_lang : $adherent->thirdparty->default_lang);
|
||||||
$outputlangs->loadLangs(array("main", "members"));
|
$outputlangs->loadLangs(array("main", "members"));
|
||||||
|
dol_syslog("sendReminderForExpiredSubscription Language set to ".$outputlangs->defaultlang);
|
||||||
|
|
||||||
$arraydefaultmessage=null;
|
$arraydefaultmessage=null;
|
||||||
$labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION;
|
$labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION;
|
||||||
|
|||||||
@ -142,7 +142,7 @@ class AdherentType extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Met a jour en base donnees du type
|
* Met a jour en base donnees du type
|
||||||
*
|
*
|
||||||
* @param User $user Object user making change
|
* @param User $user Object user making change
|
||||||
* @param int $notrigger 1=do not execute triggers, 0 otherwise
|
* @param int $notrigger 1=do not execute triggers, 0 otherwise
|
||||||
* @return int >0 if OK, < 0 if KO
|
* @return int >0 if OK, < 0 if KO
|
||||||
*/
|
*/
|
||||||
@ -172,7 +172,7 @@ class AdherentType extends CommonObject
|
|||||||
$action='update';
|
$action='update';
|
||||||
|
|
||||||
// Actions on extra fields
|
// Actions on extra fields
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||||
{
|
{
|
||||||
$result=$this->insertExtraFields();
|
$result=$this->insertExtraFields();
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
|
|||||||
@ -75,7 +75,7 @@ if ($action == 'dolibarr2ldap')
|
|||||||
setEventMessages($langs->trans("MemberSynchronized"), null, 'mesgs');
|
setEventMessages($langs->trans("MemberSynchronized"), null, 'mesgs');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
setEventMessages($ldap->errors, $ldap->error, 'errors');
|
setEventMessages($ldap->error, $ldap->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -330,7 +330,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
|
|||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
// $db->commit();
|
$db->commit();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -309,8 +309,8 @@ if ($action == 'edit') // Edit
|
|||||||
|
|
||||||
// Firstname/Name
|
// Firstname/Name
|
||||||
print '<tr><td class="titlefield">'.$langs->trans("FirstnameNamePosition").'</td><td>';
|
print '<tr><td class="titlefield">'.$langs->trans("FirstnameNamePosition").'</td><td>';
|
||||||
$array=array(0=>$langs->trans("Firstname").' '.$langs->trans("Lastname"),1=>$langs->trans("Lastname").' '.$langs->trans("Firstname"));
|
$array=array(0=>$langs->trans("Firstname").' '.$langs->trans("Lastname"), 1=>$langs->trans("Lastname").' '.$langs->trans("Firstname"));
|
||||||
print $form->selectarray('MAIN_FIRSTNAME_NAME_POSITION',$array,(isset($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?$conf->global->MAIN_FIRSTNAME_NAME_POSITION:0));
|
print $form->selectarray('MAIN_FIRSTNAME_NAME_POSITION', $array, (isset($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?$conf->global->MAIN_FIRSTNAME_NAME_POSITION:0));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td width="20"> </td>';
|
print '<td width="20"> </td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2010-2016 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010-2016 Juanjo Menent <jmenent@2byte.es>
|
||||||
@ -989,7 +989,7 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='')
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
if (! empty($conf->global->MAIN_MULTILANGS))
|
if (! empty($conf->global->MAIN_MULTILANGS))
|
||||||
{
|
{
|
||||||
$selectedlang = $langs->defaultlang;
|
$selectedlang = GETPOSTISSET('langcode','aZ09')?GETPOST('langcode','aZ09'):$langs->defaultlang;
|
||||||
if ($context == 'edit') $selectedlang = $obj->{$fieldlist[$field]};
|
if ($context == 'edit') $selectedlang = $obj->{$fieldlist[$field]};
|
||||||
print $formadmin->select_language($selectedlang, 'langcode', 0, null, 1, 0, 0, 'maxwidth150');
|
print $formadmin->select_language($selectedlang, 'langcode', 0, null, 1, 0, 0, 'maxwidth150');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -313,7 +313,9 @@ if ($mode == 'desc')
|
|||||||
{
|
{
|
||||||
$textexternal.='<br><strong>'.$langs->trans("Origin").':</strong> '.$langs->trans("ExternalModule",$dirofmodule);
|
$textexternal.='<br><strong>'.$langs->trans("Origin").':</strong> '.$langs->trans("ExternalModule",$dirofmodule);
|
||||||
if ($objMod->editor_name != 'dolibarr') $textexternal.='<br><strong>'.$langs->trans("Publisher").':</strong> '.(empty($objMod->editor_name)?$langs->trans("Unknown"):$objMod->editor_name);
|
if ($objMod->editor_name != 'dolibarr') $textexternal.='<br><strong>'.$langs->trans("Publisher").':</strong> '.(empty($objMod->editor_name)?$langs->trans("Unknown"):$objMod->editor_name);
|
||||||
if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i',$objMod->editor_url)) $textexternal.='<br><strong>'.$langs->trans("Url").':</strong> <a href="'.$objMod->editor_url.'" target="_blank">'.$objMod->editor_url.'</a>';
|
$editor_url = $objMod->editor_url;
|
||||||
|
if (! preg_match('/^http/', $editor_url)) $editor_url = 'http://'.$editor_url;
|
||||||
|
if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i',$objMod->editor_url)) $textexternal.='<br><strong>'.$langs->trans("Url").':</strong> <a href="'.$editor_url.'" target="_blank">'.$objMod->editor_url.'</a>';
|
||||||
$text.=$textexternal;
|
$text.=$textexternal;
|
||||||
$text.='<br>';
|
$text.='<br>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -160,7 +160,7 @@ print '<br>';
|
|||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print " <td>".$langs->trans("RuleForStockManagementDecrease")."</td>\n";
|
print " <td>".$langs->trans("RuleForStockManagementDecrease")."</td>\n";
|
||||||
print " <td align=\"right\" width=\"160\"> </td>\n";
|
print " <td align=\"right\"> </td>\n";
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
|
||||||
$found=0;
|
$found=0;
|
||||||
@ -262,7 +262,7 @@ print '<br>';
|
|||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print " <td>".$langs->trans("RuleForStockManagementIncrease")."</td>\n";
|
print " <td>".$langs->trans("RuleForStockManagementIncrease")."</td>\n";
|
||||||
print " <td align=\"right\" width=\"160\"> </td>\n";
|
print " <td align=\"right\"> </td>\n";
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
|
||||||
$found=0;
|
$found=0;
|
||||||
@ -341,7 +341,7 @@ print '<br>';
|
|||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print " <td>".$langs->trans("RuleForStockAvailability")."</td>\n";
|
print " <td>".$langs->trans("RuleForStockAvailability")."</td>\n";
|
||||||
print " <td align=\"right\" width=\"160\"> </td>\n";
|
print " <td align=\"right\"> </td>\n";
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
|
||||||
|
|
||||||
@ -416,7 +416,7 @@ if ($virtualdiffersfromphysical)
|
|||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print " <td>".$langs->trans("RuleForStockReplenishment")." ".img_help('help',$langs->trans("VirtualDiffersFromPhysical"))."</td>\n";
|
print " <td>".$langs->trans("RuleForStockReplenishment")." ".img_help('help',$langs->trans("VirtualDiffersFromPhysical"))."</td>\n";
|
||||||
print " <td align=\"right\" width=\"160\"> </td>\n";
|
print " <td align=\"right\"> </td>\n";
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
@ -439,12 +439,12 @@ print '<table class="noborder" width="100%">';
|
|||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print " <td>".$langs->trans("Other")."</td>\n";
|
print " <td>".$langs->trans("Other")."</td>\n";
|
||||||
print " <td align=\"right\" width=\"160\"> </td>\n";
|
print " <td align=\"right\"> </td>\n";
|
||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("UserWarehouseAutoCreate").'</td>';
|
print '<td>'.$langs->trans("UserWarehouseAutoCreate").'</td>';
|
||||||
print '<td class="width100" align="right">';
|
print '<td align="right">';
|
||||||
print "<form method=\"post\" action=\"stock.php\">";
|
print "<form method=\"post\" action=\"stock.php\">";
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_USERSTOCK_AUTOCREATE\">";
|
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_USERSTOCK_AUTOCREATE\">";
|
||||||
@ -456,7 +456,8 @@ print "</tr>\n";
|
|||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->textwithpicto($langs->trans("StockSupportServices"), $langs->trans("StockSupportServicesDesc")).'</td>';
|
print $form->textwithpicto($langs->trans("StockSupportServices"), $langs->trans("StockSupportServicesDesc"));
|
||||||
|
print '</td>';
|
||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
print "<form method=\"post\" action=\"stock.php\">";
|
print "<form method=\"post\" action=\"stock.php\">";
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
@ -502,7 +503,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans("Inventory").'</td>'."\n";
|
print '<td>'.$langs->trans("Inventory").'</td>'."\n";
|
||||||
print '<td align="center" width="20"> </td>';
|
print '<td align="center" width="20"> </td>';
|
||||||
print '<td align="center" width="100"> </td>'."\n";
|
print '<td align="center"> </td>'."\n";
|
||||||
|
|
||||||
// Example with a yes / no select
|
// Example with a yes / no select
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|||||||
@ -98,6 +98,7 @@ class DolibarrApi
|
|||||||
|
|
||||||
// Remove $db object property for object
|
// Remove $db object property for object
|
||||||
unset($object->db);
|
unset($object->db);
|
||||||
|
unset($object->isextrafieldmanaged);
|
||||||
unset($object->ismultientitymanaged);
|
unset($object->ismultientitymanaged);
|
||||||
unset($object->restrictiononfksoc);
|
unset($object->restrictiononfksoc);
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com>
|
* Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com>
|
||||||
* Copyright (C) 2005-2017 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2017 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||||
@ -927,6 +927,15 @@ if ($action == 'create')
|
|||||||
if ($id > 0)
|
if ($id > 0)
|
||||||
{
|
{
|
||||||
$result1=$object->fetch($id);
|
$result1=$object->fetch($id);
|
||||||
|
if ($result1 <= 0)
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
print $langs->trans("ErrorRecordNotFound");
|
||||||
|
|
||||||
|
llxFooter();
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
$result2=$object->fetch_thirdparty();
|
$result2=$object->fetch_thirdparty();
|
||||||
$result2=$object->fetch_projet();
|
$result2=$object->fetch_projet();
|
||||||
$result3=$object->fetch_contact();
|
$result3=$object->fetch_contact();
|
||||||
@ -957,7 +966,7 @@ if ($id > 0)
|
|||||||
$object->note = GETPOST("note",'none');
|
$object->note = GETPOST("note",'none');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($result1 < 0 || $result2 < 0 || $result3 < 0 || $result4 < 0 || $result5 < 0)
|
if ($result2 < 0 || $result3 < 0 || $result4 < 0 || $result5 < 0)
|
||||||
{
|
{
|
||||||
dol_print_error($db,$object->error);
|
dol_print_error($db,$object->error);
|
||||||
exit;
|
exit;
|
||||||
@ -1241,8 +1250,13 @@ if ($id > 0)
|
|||||||
if (! empty($object->fk_element) && ! empty($object->elementtype))
|
if (! empty($object->fk_element) && ! empty($object->elementtype))
|
||||||
{
|
{
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
|
||||||
print '<tr><td>'.$langs->trans("LinkedObject").'</td>';
|
print '<tr>';
|
||||||
print '<td>'.dolGetElementUrl($object->fk_element,$object->elementtype,1).'</td></tr>';
|
print '<td>'.$langs->trans("LinkedObject").'</td>';
|
||||||
|
print '<td>'.dolGetElementUrl($object->fk_element,$object->elementtype,1);
|
||||||
|
print '<input type="hidden" name="fk_element" value="'.$object->fk_element.'">';
|
||||||
|
print '<input type="hidden" name="elementtype" value="'.$object->elementtype.'">';
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Description
|
// Description
|
||||||
|
|||||||
@ -620,7 +620,7 @@ class ActionComm extends CommonObject
|
|||||||
$this->contact->id = $obj->fk_contact; // deprecated
|
$this->contact->id = $obj->fk_contact; // deprecated
|
||||||
|
|
||||||
$this->fk_element = $obj->elementid;
|
$this->fk_element = $obj->elementid;
|
||||||
$this->elementid = $obj->elementid;
|
$this->elementid = $obj->elementid;
|
||||||
$this->elementtype = $obj->elementtype;
|
$this->elementtype = $obj->elementtype;
|
||||||
|
|
||||||
$this->fetchResources();
|
$this->fetchResources();
|
||||||
@ -883,7 +883,7 @@ class ActionComm extends CommonObject
|
|||||||
$val=array('id'=>$val);
|
$val=array('id'=>$val);
|
||||||
}
|
}
|
||||||
$sql ="INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element, mandatory, transparency, answer_status)";
|
$sql ="INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element, mandatory, transparency, answer_status)";
|
||||||
$sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".(empty($val['manadatory'])?'0':$val['manadatory']).", ".(empty($val['transparency'])?'0':$val['transparency']).", ".(empty($val['answer_status'])?'0':$val['answer_status']).")";
|
$sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".(empty($val['mandatory'])?'0':$val['mandatory']).", ".(empty($val['transparency'])?'0':$val['transparency']).", ".(empty($val['answer_status'])?'0':$val['answer_status']).")";
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql)
|
if (! $resql)
|
||||||
|
|||||||
@ -181,7 +181,7 @@ if (empty($reshook))
|
|||||||
if ($action == 'setorder_min_amount')
|
if ($action == 'setorder_min_amount')
|
||||||
{
|
{
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$object->order_min_amount=GETPOST('order_min_amount');
|
$object->order_min_amount=price2num(GETPOST('order_min_amount','alpha'));
|
||||||
$result=$object->update($object->id, $user);
|
$result=$object->update($object->id, $user);
|
||||||
if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
|
if ($result < 0) setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
@ -423,15 +423,21 @@ if ($object->id > 0)
|
|||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr class="nowrap">';
|
if ($object->client)
|
||||||
print '<td>';
|
{
|
||||||
print $form->editfieldkey("OrderMinAmount",'order_min_amount',$object->order_min_amount,$object,$user->rights->societe->creer);
|
if (! empty($conf->commande->enabled) && ! empty($conf->global->ORDER_MANAGE_MIN_AMOUNT))
|
||||||
print '</td><td>';
|
{
|
||||||
print $form->editfieldval("OrderMinAmount",'order_min_amount',$object->order_min_amount,$object,$user->rights->societe->creer,$limit_field_type,($object->order_min_amount != '' ? price($object->order_min_amount) : ''));
|
print '<!-- Minimim amount for orders -->'."\n";
|
||||||
|
print '<tr class="nowrap">';
|
||||||
print '</td>';
|
print '<td>';
|
||||||
print '</tr>';
|
print $form->editfieldkey("OrderMinAmount",'order_min_amount',$object->order_min_amount,$object,$user->rights->societe->creer);
|
||||||
|
print '</td><td>';
|
||||||
|
print $form->editfieldval("OrderMinAmount",'order_min_amount',$object->order_min_amount,$object,$user->rights->societe->creer,$limit_field_type,($object->order_min_amount != '' ? price($object->order_min_amount) : ''));
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -74,6 +74,7 @@ $originid = GETPOST('originid', 'int');
|
|||||||
$confirm = GETPOST('confirm', 'alpha');
|
$confirm = GETPOST('confirm', 'alpha');
|
||||||
$lineid = GETPOST('lineid', 'int');
|
$lineid = GETPOST('lineid', 'int');
|
||||||
$contactid = GETPOST('contactid','int');
|
$contactid = GETPOST('contactid','int');
|
||||||
|
$projectid = GETPOST('projectid','int');
|
||||||
|
|
||||||
// PDF
|
// PDF
|
||||||
$hidedetails = (GETPOST('hidedetails', 'int') ? GETPOST('hidedetails', 'int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
|
$hidedetails = (GETPOST('hidedetails', 'int') ? GETPOST('hidedetails', 'int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
|
||||||
@ -1389,7 +1390,7 @@ if ($action == 'create')
|
|||||||
}
|
}
|
||||||
$objectsrc->fetch_thirdparty();
|
$objectsrc->fetch_thirdparty();
|
||||||
|
|
||||||
$projectid = (! empty($objectsrc->fk_project) ? $objectsrc->fk_project : '');
|
$projectid = (! empty($objectsrc->fk_project) ? $objectsrc->fk_project : 0);
|
||||||
$ref_client = (! empty($objectsrc->ref_client) ? $objectsrc->ref_client : '');
|
$ref_client = (! empty($objectsrc->ref_client) ? $objectsrc->ref_client : '');
|
||||||
$ref_int = (! empty($objectsrc->ref_int) ? $objectsrc->ref_int : '');
|
$ref_int = (! empty($objectsrc->ref_int) ? $objectsrc->ref_int : '');
|
||||||
|
|
||||||
@ -1513,7 +1514,7 @@ if ($action == 'create')
|
|||||||
// Bank Account
|
// Bank Account
|
||||||
if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && ! empty($conf->banque->enabled)) {
|
if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && ! empty($conf->banque->enabled)) {
|
||||||
print '<tr><td>' . $langs->trans('BankAccount') . '</td><td>';
|
print '<tr><td>' . $langs->trans('BankAccount') . '</td><td>';
|
||||||
$form->select_comptes($fk_account, 'fk_account', 0, '', 1);
|
$form->select_comptes($soc->fk_account, 'fk_account', 0, '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1551,9 +1552,6 @@ if ($action == 'create')
|
|||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled))
|
if (! empty($conf->projet->enabled))
|
||||||
{
|
{
|
||||||
$projectid = GETPOST('projectid')?GETPOST('projectid'):0;
|
|
||||||
if ($origin == 'project') $projectid = ($originid ? $originid : 0);
|
|
||||||
|
|
||||||
$langs->load("projects");
|
$langs->load("projects");
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>' . $langs->trans("Project") . '</td><td>';
|
print '<td>' . $langs->trans("Project") . '</td><td>';
|
||||||
@ -1850,7 +1848,7 @@ if ($action == 'create')
|
|||||||
$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $usercancreate, 'string', '', null, null, '', 1);
|
$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $usercancreate, 'string', '', null, null, '', 1);
|
||||||
// Thirdparty
|
// Thirdparty
|
||||||
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1,'customer');
|
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1,'customer');
|
||||||
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref.=' (<a href="'.DOL_URL_ROOT.'/comm/propal/list.php?socid='.$object->thirdparty->id.'">'.$langs->trans("OtherProposals").'</a>)';
|
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref.=' (<a href="'.DOL_URL_ROOT.'/comm/propal/list.php?socid='.$object->thirdparty->id.'&search_societe='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherProposals").'</a>)';
|
||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled))
|
if (! empty($conf->projet->enabled))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1322,6 +1322,7 @@ class Propal extends CommonObject
|
|||||||
$sql.= ", p.fk_shipping_method";
|
$sql.= ", p.fk_shipping_method";
|
||||||
$sql.= ", p.fk_incoterms, p.location_incoterms";
|
$sql.= ", p.fk_incoterms, p.location_incoterms";
|
||||||
$sql.= ", p.fk_multicurrency, p.multicurrency_code, p.multicurrency_tx, p.multicurrency_total_ht, p.multicurrency_total_tva, p.multicurrency_total_ttc";
|
$sql.= ", p.fk_multicurrency, p.multicurrency_code, p.multicurrency_tx, p.multicurrency_total_ht, p.multicurrency_total_tva, p.multicurrency_total_ttc";
|
||||||
|
$sql.= ", p.tms as date_modification";
|
||||||
$sql.= ", i.libelle as libelle_incoterms";
|
$sql.= ", i.libelle as libelle_incoterms";
|
||||||
$sql.= ", c.label as statut_label";
|
$sql.= ", c.label as statut_label";
|
||||||
$sql.= ", ca.code as availability_code, ca.label as availability";
|
$sql.= ", ca.code as availability_code, ca.label as availability";
|
||||||
@ -1335,13 +1336,12 @@ class Propal extends CommonObject
|
|||||||
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_availability as ca ON p.fk_availability = ca.rowid';
|
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_availability as ca ON p.fk_availability = ca.rowid';
|
||||||
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_input_reason as dr ON p.fk_input_reason = dr.rowid';
|
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_input_reason as dr ON p.fk_input_reason = dr.rowid';
|
||||||
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_incoterms as i ON p.fk_incoterms = i.rowid';
|
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_incoterms as i ON p.fk_incoterms = i.rowid';
|
||||||
$sql.= " WHERE p.fk_statut = c.id";
|
|
||||||
|
|
||||||
if ($ref) {
|
if ($ref) {
|
||||||
$sql.= " AND p.entity IN (".getEntity('propal').")"; // Dont't use entity if you use rowid
|
$sql.= " WHERE p.entity IN (".getEntity('propal').")"; // Dont't use entity if you use rowid
|
||||||
$sql.= " AND p.ref='".$ref."'";
|
$sql.= " AND p.ref='".$this->db->escape($ref)."'";
|
||||||
}
|
}
|
||||||
else $sql.= " AND p.rowid=".$rowid;
|
else $sql.= " WHERE p.rowid=".$rowid;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
|
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
@ -1379,6 +1379,7 @@ class Propal extends CommonObject
|
|||||||
$this->datev = $this->db->jdate($obj->datev); // TODO deprecated
|
$this->datev = $this->db->jdate($obj->datev); // TODO deprecated
|
||||||
$this->date_creation = $this->db->jdate($obj->datec); //Creation date
|
$this->date_creation = $this->db->jdate($obj->datec); //Creation date
|
||||||
$this->date_validation = $this->db->jdate($obj->datev); //Validation date
|
$this->date_validation = $this->db->jdate($obj->datev); //Validation date
|
||||||
|
$this->date_modification = $this->db->jdate($obj->date_modification); // tms
|
||||||
$this->date = $this->db->jdate($obj->dp); // Proposal date
|
$this->date = $this->db->jdate($obj->dp); // Proposal date
|
||||||
$this->datep = $this->db->jdate($obj->dp); // deprecated
|
$this->datep = $this->db->jdate($obj->dp); // deprecated
|
||||||
$this->fin_validite = $this->db->jdate($obj->dfv);
|
$this->fin_validite = $this->db->jdate($obj->dfv);
|
||||||
@ -1464,6 +1465,8 @@ class Propal extends CommonObject
|
|||||||
*/
|
*/
|
||||||
function update(User $user, $notrigger=0)
|
function update(User $user, $notrigger=0)
|
||||||
{
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
@ -1512,17 +1515,23 @@ class Propal extends CommonObject
|
|||||||
$error++; $this->errors[]="Error ".$this->db->lasterror();
|
$error++; $this->errors[]="Error ".$this->db->lasterror();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0)
|
||||||
{
|
{
|
||||||
if (! $notrigger)
|
$result=$this->insertExtraFields();
|
||||||
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
// Call trigger
|
$error++;
|
||||||
$result=$this->call_trigger('PROPAL_MODIFY', $user);
|
|
||||||
if ($result < 0) $error++;
|
|
||||||
// End call triggers
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! $error && ! $notrigger)
|
||||||
|
{
|
||||||
|
// Call trigger
|
||||||
|
$result=$this->call_trigger('PROPAL_MODIFY', $user);
|
||||||
|
if ($result < 0) $error++;
|
||||||
|
// End call triggers
|
||||||
|
}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error)
|
if ($error)
|
||||||
{
|
{
|
||||||
@ -4179,7 +4188,7 @@ class PropaleLigne extends CommonObjectLine
|
|||||||
* Update DB line fields total_xxx
|
* Update DB line fields total_xxx
|
||||||
* Used by migration
|
* Used by migration
|
||||||
*
|
*
|
||||||
* @return int <0 if ko, >0 if ok
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function update_total()
|
function update_total()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -85,6 +85,8 @@ $search_monthdelivery=GETPOST("search_monthdelivery","int");
|
|||||||
$search_yeardelivery=GETPOST("search_yeardelivery","int");
|
$search_yeardelivery=GETPOST("search_yeardelivery","int");
|
||||||
$search_availability=GETPOST('search_availability','int');
|
$search_availability=GETPOST('search_availability','int');
|
||||||
$search_categ_cus=trim(GETPOST("search_categ_cus",'int'));
|
$search_categ_cus=trim(GETPOST("search_categ_cus",'int'));
|
||||||
|
$search_btn=GETPOST('button_search','alpha');
|
||||||
|
$search_remove_btn=GETPOST('button_removefilter','alpha');
|
||||||
|
|
||||||
$viewstatut=GETPOST('viewstatut','alpha');
|
$viewstatut=GETPOST('viewstatut','alpha');
|
||||||
$optioncss = GETPOST('optioncss','alpha');
|
$optioncss = GETPOST('optioncss','alpha');
|
||||||
@ -98,7 +100,7 @@ $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
if (empty($page) || $page == -1 || !empty($search_btn) || !empty($search_remove_btn) || (empty($toselect) && $massaction === '0')) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
|
|||||||
@ -679,7 +679,7 @@ if (empty($reshook))
|
|||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && (! ($price_ht >= 0) || $price_ht == '') && (! ($price_ht_devise >= 0) || $price_ht_devise == '')) // Unit price can be 0 but not ''
|
if ($prod_entry_mode == 'free' && empty($idprod) && $price_ht == '' && $price_ht_devise == '') // Unit price can be 0 but not ''. Also price can be negative for order.
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
@ -1987,7 +1987,7 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->commande->creer, 'string', '', null, null, '', 1);
|
$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->commande->creer, 'string', '', null, null, '', 1);
|
||||||
// Thirdparty
|
// Thirdparty
|
||||||
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $soc->getNomUrl(1);
|
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $soc->getNomUrl(1);
|
||||||
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref.=' (<a href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->thirdparty->id.'">'.$langs->trans("OtherOrders").'</a>)';
|
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref.=' (<a href="'.DOL_URL_ROOT.'/commande/list.php?socid='.$object->thirdparty->id.'&search_societe='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherOrders").'</a>)';
|
||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled))
|
if (! empty($conf->projet->enabled))
|
||||||
{
|
{
|
||||||
@ -2387,7 +2387,7 @@ if ($action == 'create' && $user->rights->commande->creer)
|
|||||||
|
|
||||||
// Total HT
|
// Total HT
|
||||||
$alert = '';
|
$alert = '';
|
||||||
if($object->total_ht < $object->thirdparty->order_min_amount) {
|
if (! empty($conf->global->ORDER_MANAGE_MIN_AMOUNT) && $object->total_ht < $object->thirdparty->order_min_amount) {
|
||||||
$alert = ' ' . img_warning($langs->trans('OrderMinAmount').': '.price($object->thirdparty->order_min_amount));
|
$alert = ' ' . img_warning($langs->trans('OrderMinAmount').': '.price($object->thirdparty->order_min_amount));
|
||||||
}
|
}
|
||||||
print '<tr><td class="titlefieldmiddle">' . $langs->trans('AmountHT') . '</td>';
|
print '<tr><td class="titlefieldmiddle">' . $langs->trans('AmountHT') . '</td>';
|
||||||
|
|||||||
@ -3067,17 +3067,23 @@ class Commande extends CommonOrder
|
|||||||
$error++; $this->errors[]="Error ".$this->db->lasterror();
|
$error++; $this->errors[]="Error ".$this->db->lasterror();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0)
|
||||||
{
|
{
|
||||||
if (! $notrigger)
|
$result=$this->insertExtraFields();
|
||||||
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
// Call trigger
|
$error++;
|
||||||
$result=$this->call_trigger('ORDER_MODIFY', $user);
|
|
||||||
if ($result < 0) $error++;
|
|
||||||
// End call triggers
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! $error && ! $notrigger)
|
||||||
|
{
|
||||||
|
// Call trigger
|
||||||
|
$result=$this->call_trigger('ORDER_MODIFY', $user);
|
||||||
|
if ($result < 0) $error++;
|
||||||
|
// End call triggers
|
||||||
|
}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error)
|
if ($error)
|
||||||
{
|
{
|
||||||
@ -4247,9 +4253,10 @@ class OrderLine extends CommonOrderLine
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update totals of order into database
|
* Update DB line fields total_xxx
|
||||||
|
* Used by migration
|
||||||
*
|
*
|
||||||
* @return int <0 if ko, >0 if ok
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function update_total()
|
function update_total()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -78,6 +78,8 @@ $search_categ_cus=trim(GETPOST("search_categ_cus",'int'));
|
|||||||
$optioncss = GETPOST('optioncss','alpha');
|
$optioncss = GETPOST('optioncss','alpha');
|
||||||
$billed = GETPOST('billed','int');
|
$billed = GETPOST('billed','int');
|
||||||
$viewstatut=GETPOST('viewstatut');
|
$viewstatut=GETPOST('viewstatut');
|
||||||
|
$search_btn=GETPOST('button_search','alpha');
|
||||||
|
$search_remove_btn=GETPOST('button_removefilter','alpha');
|
||||||
$search_project_ref=GETPOST('search_project_ref','alpha');
|
$search_project_ref=GETPOST('search_project_ref','alpha');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
@ -92,7 +94,7 @@ $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
if (empty($page) || $page == -1 || !empty($search_btn) || !empty($search_remove_btn) || (empty($toselect) && $massaction === '0')) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
|
|||||||
@ -1423,14 +1423,14 @@ if ($resql)
|
|||||||
|
|
||||||
if (! empty($arrayfields['b.conciliated']['checked']))
|
if (! empty($arrayfields['b.conciliated']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nowrap" align="center">';
|
print '<td class="nowraponall" align="center">';
|
||||||
print $objp->conciliated?$langs->trans("Yes"):$langs->trans("No");
|
print $objp->conciliated?$langs->trans("Yes"):$langs->trans("No");
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Action edit/delete
|
// Action edit/delete
|
||||||
print '<td class="nowrap" align="center">';
|
print '<td class="nowraponall" align="center">';
|
||||||
// Transaction reconciliated or edit link
|
// Transaction reconciliated or edit link
|
||||||
if ($objp->conciliated && $bankaccount->canBeConciliated() > 0) // If line not conciliated and account can be conciliated
|
if ($objp->conciliated && $bankaccount->canBeConciliated() > 0) // If line not conciliated and account can be conciliated
|
||||||
{
|
{
|
||||||
|
|||||||
@ -455,7 +455,7 @@ while($j<$numlt)
|
|||||||
|
|
||||||
|
|
||||||
// Payment Salary
|
// Payment Salary
|
||||||
if (! empty($conf->salaries->enabled) && $user->rights->salaries->read)
|
if (! empty($conf->salaries->enabled) && ! empty($user->rights->salaries->read))
|
||||||
{
|
{
|
||||||
if (! $mode || $mode != 'sconly')
|
if (! $mode || $mode != 'sconly')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -513,7 +513,7 @@ if (empty($reshook))
|
|||||||
if ($object->type != Facture::TYPE_DEPOSIT && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change)
|
if ($object->type != Facture::TYPE_DEPOSIT && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change)
|
||||||
{
|
{
|
||||||
if (! $idwarehouse || $idwarehouse == - 1) {
|
if (! $idwarehouse || $idwarehouse == - 1) {
|
||||||
$error ++;
|
$error++;
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Warehouse")), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Warehouse")), null, 'errors');
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
@ -573,7 +573,7 @@ if (empty($reshook))
|
|||||||
if ($object->type != Facture::TYPE_DEPOSIT && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change)
|
if ($object->type != Facture::TYPE_DEPOSIT && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $qualified_for_stock_change)
|
||||||
{
|
{
|
||||||
if (! $idwarehouse || $idwarehouse == - 1) {
|
if (! $idwarehouse || $idwarehouse == - 1) {
|
||||||
$error ++;
|
$error++;
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Warehouse")), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Warehouse")), null, 'errors');
|
||||||
$action = '';
|
$action = '';
|
||||||
}
|
}
|
||||||
@ -832,7 +832,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (! ($_POST['fac_replacement'] > 0)) {
|
if (! ($_POST['fac_replacement'] > 0)) {
|
||||||
$error ++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ReplaceInvoice")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ReplaceInvoice")), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -878,14 +878,14 @@ if (empty($reshook))
|
|||||||
$sourceinvoice = GETPOST('fac_avoir');
|
$sourceinvoice = GETPOST('fac_avoir');
|
||||||
if (! ($sourceinvoice > 0) && empty($conf->global->INVOICE_CREDIT_NOTE_STANDALONE))
|
if (! ($sourceinvoice > 0) && empty($conf->global->INVOICE_CREDIT_NOTE_STANDALONE))
|
||||||
{
|
{
|
||||||
$error ++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CorrectInvoice")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CorrectInvoice")), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
$dateinvoice = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
|
$dateinvoice = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
|
||||||
if (empty($dateinvoice))
|
if (empty($dateinvoice))
|
||||||
{
|
{
|
||||||
$error ++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->trans("Date")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->trans("Date")), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1109,7 +1109,7 @@ if (empty($reshook))
|
|||||||
{
|
{
|
||||||
if (GETPOST('socid', 'int') < 1)
|
if (GETPOST('socid', 'int') < 1)
|
||||||
{
|
{
|
||||||
$error ++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Customer")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Customer")), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1279,7 +1279,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($srcobject->error, $srcobject->errors, 'errors');
|
setEventMessages($srcobject->error, $srcobject->errors, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1373,7 +1373,7 @@ if (empty($reshook))
|
|||||||
$result = $object->insert_discount($discountid); // This include link_to_invoice
|
$result = $object->insert_discount($discountid); // This include link_to_invoice
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($discount->error, $discount->errors, 'errors');
|
setEventMessages($discount->error, $discount->errors, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1429,7 +1429,7 @@ if (empty($reshook))
|
|||||||
$lineid = $result;
|
$lineid = $result;
|
||||||
} else {
|
} else {
|
||||||
$lineid = 0;
|
$lineid = 0;
|
||||||
$error ++;
|
$error++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1441,7 +1441,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($srcobject->error, $srcobject->errors, 'errors');
|
setEventMessages($srcobject->error, $srcobject->errors, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1665,37 +1665,46 @@ if (empty($reshook))
|
|||||||
|
|
||||||
if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) {
|
if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) {
|
||||||
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
if (!$prod_entry_mode)
|
if (!$prod_entry_mode)
|
||||||
{
|
{
|
||||||
if (GETPOST('type') < 0 && ! GETPOST('search_idprod'))
|
if (GETPOST('type') < 0 && ! GETPOST('search_idprod'))
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('ErrorChooseBetweenFreeEntryOrPredefinedProduct'), null, 'errors');
|
setEventMessages($langs->trans('ErrorChooseBetweenFreeEntryOrPredefinedProduct'), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && GETPOST('type') < 0) {
|
if ($prod_entry_mode == 'free' && empty($idprod) && GETPOST('type') < 0) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && (($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $price_ht == '') && $price_ht_devise == '') // Unit price can be 0 but not ''
|
if ($prod_entry_mode == 'free' && empty($idprod) && (($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $price_ht == '') && $price_ht_devise == '') // Unit price can be 0 but not ''
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
if ($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES))
|
||||||
$error ++;
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
setEventMessages($langs->trans("ErrorFieldCantBeNegativeOnInvoice", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($qty == '') {
|
if ($qty == '') {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($prod_entry_mode == 'free' && empty($idprod) && empty($product_desc)) {
|
if ($prod_entry_mode == 'free' && empty($idprod) && empty($product_desc)) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($qty < 0) {
|
if ($qty < 0) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors');
|
setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error && !empty($conf->variants->enabled) && $prod_entry_mode != 'free') {
|
if (!$error && !empty($conf->variants->enabled) && $prod_entry_mode != 'free') {
|
||||||
@ -1707,7 +1716,7 @@ if (empty($reshook))
|
|||||||
$idprod = $res->fk_product_child;
|
$idprod = $res->fk_product_child;
|
||||||
} else {
|
} else {
|
||||||
setEventMessage($langs->trans('ErrorProductCombinationNotFound'), 'errors');
|
setEventMessage($langs->trans('ErrorProductCombinationNotFound'), 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2113,7 +2122,7 @@ if (empty($reshook))
|
|||||||
// Check price is not lower than minimum (check is done only for standard or replacement invoices)
|
// Check price is not lower than minimum (check is done only for standard or replacement invoices)
|
||||||
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT) && $price_min && (price2num($pu_ht) * (1 - price2num(GETPOST('remise_percent')) / 100) < price2num($price_min))) {
|
if (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT) && $price_min && (price2num($pu_ht) * (1 - price2num(GETPOST('remise_percent')) / 100) < price2num($price_min))) {
|
||||||
setEventMessages($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), null, 'errors');
|
setEventMessages($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$type = GETPOST('type');
|
$type = GETPOST('type');
|
||||||
@ -2122,14 +2131,29 @@ if (empty($reshook))
|
|||||||
// Check parameters
|
// Check parameters
|
||||||
if (GETPOST('type') < 0) {
|
if (GETPOST('type') < 0) {
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($qty < 0) {
|
if ($qty < 0) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors');
|
setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors');
|
||||||
$error ++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
if (empty($productid) && (($pu_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $pu_ht == '') && $pu_ht_devise == '') // Unit price can be 0 but not ''
|
||||||
|
{
|
||||||
|
if ($pu_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES))
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
setEventMessages($langs->trans("ErrorFieldCantBeNegativeOnInvoice", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors');
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Update line
|
// Update line
|
||||||
if (! $error) {
|
if (! $error) {
|
||||||
@ -3619,7 +3643,7 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->facture->creer, 'string', '', null, null, '', 1);
|
$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->facture->creer, 'string', '', null, null, '', 1);
|
||||||
// Thirdparty
|
// Thirdparty
|
||||||
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1,'customer');
|
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1,'customer');
|
||||||
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref.=' (<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?socid='.$object->thirdparty->id.'">'.$langs->trans("OtherBills").'</a>)';
|
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref.=' (<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?socid='.$object->thirdparty->id.'&search_societe='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherBills").'</a>)';
|
||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled))
|
if (! empty($conf->projet->enabled))
|
||||||
{
|
{
|
||||||
@ -3703,7 +3727,7 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
$discount = new DiscountAbsolute($db);
|
$discount = new DiscountAbsolute($db);
|
||||||
$result = $discount->fetch(0, $object->id);
|
$result = $discount->fetch(0, $object->id);
|
||||||
if ($result > 0){
|
if ($result > 0){
|
||||||
print '. '.$langs->trans("CreditNoteConvertedIntoDiscount", $object->getLibType(), $discount->getNomUrl(1, 'discount')).'<br>';
|
print '. '.$langs->trans("CreditNoteConvertedIntoDiscount", $object->getLibType(1), $discount->getNomUrl(1, 'discount')).'<br>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
@ -4028,8 +4052,6 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
|
|
||||||
// List of previous situation invoices
|
|
||||||
|
|
||||||
$sign = 1;
|
$sign = 1;
|
||||||
if ($object->type == Facture::TYPE_CREDIT_NOTE) $sign = - 1;
|
if ($object->type == Facture::TYPE_CREDIT_NOTE) $sign = - 1;
|
||||||
$nbrows = 8;
|
$nbrows = 8;
|
||||||
@ -4370,7 +4392,7 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
}
|
}
|
||||||
else // Credit note
|
else // Credit note
|
||||||
{
|
{
|
||||||
$cssforamountpaymentcomplete='';
|
$cssforamountpaymentcomplete='amountpaymentneutral';
|
||||||
|
|
||||||
// Total already paid back
|
// Total already paid back
|
||||||
print '<tr><td colspan="' . $nbcols . '" align="right">';
|
print '<tr><td colspan="' . $nbcols . '" align="right">';
|
||||||
@ -4385,7 +4407,7 @@ else if ($id > 0 || ! empty($ref))
|
|||||||
if ($resteapayeraffiche <= 0)
|
if ($resteapayeraffiche <= 0)
|
||||||
print $langs->trans('RemainderToPayBack');
|
print $langs->trans('RemainderToPayBack');
|
||||||
else
|
else
|
||||||
print $langs->trans('ExcessPaydBack');
|
print $langs->trans('ExcessPaid');
|
||||||
print ' :</td>';
|
print ' :</td>';
|
||||||
print '<td align="right"'.($resteapayeraffiche?' class="amountremaintopayback"':(' class="'.$cssforamountpaymentcomplete.'"')).'>' . price($sign * $resteapayeraffiche) . '</td>';
|
print '<td align="right"'.($resteapayeraffiche?' class="amountremaintopayback"':(' class="'.$cssforamountpaymentcomplete.'"')).'>' . price($sign * $resteapayeraffiche) . '</td>';
|
||||||
print '<td class="nowrap"> </td></tr>';
|
print '<td class="nowrap"> </td></tr>';
|
||||||
|
|||||||
@ -1185,9 +1185,9 @@ class Facture extends CommonInvoice
|
|||||||
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_tva))
|
if (! empty($this->total_tva))
|
||||||
$label.= '<br><b>' . $langs->trans('VAT') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('VAT') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_localtax1))
|
if (! empty($this->total_localtax1) && $this->total_localtax1 != 0) // We keep test != 0 because $this->total_localtax1 can be '0.00000000'
|
||||||
$label.= '<br><b>' . $langs->trans('LT1') . ':</b> ' . price($this->total_localtax1, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>eee' . $langs->trans('LT1') . ':</b> ' . price($this->total_localtax1, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_localtax2))
|
if (! empty($this->total_localtax2) && $this->total_localtax2 != 0)
|
||||||
$label.= '<br><b>' . $langs->trans('LT2') . ':</b> ' . price($this->total_localtax2, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('LT2') . ':</b> ' . price($this->total_localtax2, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
if (! empty($this->total_ttc))
|
if (! empty($this->total_ttc))
|
||||||
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
|
||||||
@ -1549,6 +1549,8 @@ class Facture extends CommonInvoice
|
|||||||
*/
|
*/
|
||||||
function update(User $user, $notrigger=0)
|
function update(User $user, $notrigger=0)
|
||||||
{
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
// Clean parameters
|
// Clean parameters
|
||||||
@ -1614,17 +1616,23 @@ class Facture extends CommonInvoice
|
|||||||
$error++; $this->errors[]="Error ".$this->db->lasterror();
|
$error++; $this->errors[]="Error ".$this->db->lasterror();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0)
|
||||||
{
|
{
|
||||||
if (! $notrigger)
|
$result=$this->insertExtraFields();
|
||||||
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
// Call trigger
|
$error++;
|
||||||
$result=$this->call_trigger('BILL_MODIFY',$user);
|
|
||||||
if ($result < 0) $error++;
|
|
||||||
// End call triggers
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! $error && ! $notrigger)
|
||||||
|
{
|
||||||
|
// Call trigger
|
||||||
|
$result=$this->call_trigger('BILL_MODIFY',$user);
|
||||||
|
if ($result < 0) $error++;
|
||||||
|
// End call triggers
|
||||||
|
}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error)
|
if ($error)
|
||||||
{
|
{
|
||||||
@ -3734,7 +3742,7 @@ class Facture extends CommonInvoice
|
|||||||
$response = new WorkboardResponse();
|
$response = new WorkboardResponse();
|
||||||
$response->warning_delay=$conf->facture->client->warning_delay/60/60/24;
|
$response->warning_delay=$conf->facture->client->warning_delay/60/60/24;
|
||||||
$response->label=$langs->trans("CustomerBillsUnpaid");
|
$response->label=$langs->trans("CustomerBillsUnpaid");
|
||||||
$response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1&mainmenu=accountancy&leftmenu=customers_bills';
|
$response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1&mainmenu=billing&leftmenu=customers_bills';
|
||||||
$response->img=img_object('',"bill");
|
$response->img=img_object('',"bill");
|
||||||
|
|
||||||
$generic_facture = new Facture($this->db);
|
$generic_facture = new Facture($this->db);
|
||||||
@ -4776,8 +4784,8 @@ class FactureLigne extends CommonInvoiceLine
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mise a jour en base des champs total_xxx de ligne de facture
|
* Update DB line fields total_xxx
|
||||||
* TODO What is goal of this method ?
|
* Used by migration
|
||||||
*
|
*
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
@ -4836,7 +4844,7 @@ class FactureLigne extends CommonInvoiceLine
|
|||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql && $resql->num_rows > 0) {
|
if ($resql && $resql->num_rows > 0) {
|
||||||
$res = $this->db->fetch_array($resql);
|
$res = $this->db->fetch_array($resql);
|
||||||
return $res['situation_percent'];
|
return floatval($res['situation_percent']);
|
||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->error();
|
$this->error = $this->db->error();
|
||||||
dol_syslog(get_class($this) . "::select Error " . $this->error, LOG_ERR);
|
dol_syslog(get_class($this) . "::select Error " . $this->error, LOG_ERR);
|
||||||
|
|||||||
@ -1513,7 +1513,7 @@ else
|
|||||||
//var_dump(dol_print_date($object->date_when+60, 'dayhour').' - '.dol_print_date($now, 'dayhour'));
|
//var_dump(dol_print_date($object->date_when+60, 'dayhour').' - '.dol_print_date($now, 'dayhour'));
|
||||||
if (! $object->isMaxNbGenReached())
|
if (! $object->isMaxNbGenReached())
|
||||||
{
|
{
|
||||||
if ($action != 'editdate_when' && $object->frequency > 0 && $object->date_when && $object->date_when < $now) print img_warning($langs->trans("Late"));
|
if (! $object->suspended && $action != 'editdate_when' && $object->frequency > 0 && $object->date_when && $object->date_when < $now) print img_warning($langs->trans("Late"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -607,7 +607,7 @@ if ($resql)
|
|||||||
print ($objp->frequency ? ($invoicerectmp->isMaxNbGenReached()?'<strike>':'').dol_print_date($db->jdate($objp->date_when),'day').($invoicerectmp->isMaxNbGenReached()?'</strike>':'') : '<span class="opacitymedium">'.$langs->trans('NA').'</span>');
|
print ($objp->frequency ? ($invoicerectmp->isMaxNbGenReached()?'<strike>':'').dol_print_date($db->jdate($objp->date_when),'day').($invoicerectmp->isMaxNbGenReached()?'</strike>':'') : '<span class="opacitymedium">'.$langs->trans('NA').'</span>');
|
||||||
if (! $invoicerectmp->isMaxNbGenReached())
|
if (! $invoicerectmp->isMaxNbGenReached())
|
||||||
{
|
{
|
||||||
if ($objp->frequency > 0 && $db->jdate($objp->date_when) && $db->jdate($objp->date_when) < $now) print img_warning($langs->trans("Late"));
|
if (! $objp->suspended && $objp->frequency > 0 && $db->jdate($objp->date_when) && $db->jdate($objp->date_when) < $now) print img_warning($langs->trans("Late"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -88,13 +88,15 @@ $search_country=GETPOST("search_country",'int');
|
|||||||
$search_type_thirdparty=GETPOST("search_type_thirdparty",'int');
|
$search_type_thirdparty=GETPOST("search_type_thirdparty",'int');
|
||||||
$search_user = GETPOST('search_user','int');
|
$search_user = GETPOST('search_user','int');
|
||||||
$search_sale = GETPOST('search_sale','int');
|
$search_sale = GETPOST('search_sale','int');
|
||||||
$search_day = GETPOST('search_day','int');
|
$search_day = GETPOST('search_day','int');
|
||||||
$search_month = GETPOST('search_month','int');
|
$search_month = GETPOST('search_month','int');
|
||||||
$search_year = GETPOST('search_year','int');
|
$search_year = GETPOST('search_year','int');
|
||||||
$search_day_lim = GETPOST('search_day_lim','int');
|
$search_day_lim = GETPOST('search_day_lim','int');
|
||||||
$search_month_lim = GETPOST('search_month_lim','int');
|
$search_month_lim = GETPOST('search_month_lim','int');
|
||||||
$search_year_lim = GETPOST('search_year_lim','int');
|
$search_year_lim = GETPOST('search_year_lim','int');
|
||||||
$search_categ_cus=trim(GETPOST("search_categ_cus",'int'));
|
$search_categ_cus=trim(GETPOST("search_categ_cus",'int'));
|
||||||
|
$search_btn=GETPOST('button_search','alpha');
|
||||||
|
$search_remove_btn=GETPOST('button_removefilter','alpha');
|
||||||
|
|
||||||
$option = GETPOST('search_option');
|
$option = GETPOST('search_option');
|
||||||
if ($option == 'late') {
|
if ($option == 'late') {
|
||||||
@ -106,7 +108,7 @@ $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
|
|||||||
$sortfield = GETPOST("sortfield",'alpha');
|
$sortfield = GETPOST("sortfield",'alpha');
|
||||||
$sortorder = GETPOST("sortorder",'alpha');
|
$sortorder = GETPOST("sortorder",'alpha');
|
||||||
$page = GETPOST("page",'int');
|
$page = GETPOST("page",'int');
|
||||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
if (empty($page) || $page == -1 || !empty($search_btn) || !empty($search_remove_btn) || (empty($toselect) && $massaction === '0')) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
$offset = $limit * $page;
|
$offset = $limit * $page;
|
||||||
if (! $sortorder && ! empty($conf->global->INVOICE_DEFAULT_UNPAYED_SORT_ORDER) && $search_status == '1') $sortorder=$conf->global->INVOICE_DEFAULT_UNPAYED_SORT_ORDER;
|
if (! $sortorder && ! empty($conf->global->INVOICE_DEFAULT_UNPAYED_SORT_ORDER) && $search_status == '1') $sortorder=$conf->global->INVOICE_DEFAULT_UNPAYED_SORT_ORDER;
|
||||||
if (! $sortorder) $sortorder='DESC';
|
if (! $sortorder) $sortorder='DESC';
|
||||||
@ -507,8 +509,9 @@ if (! $sall)
|
|||||||
$sql.= ' typent.code,';
|
$sql.= ' typent.code,';
|
||||||
$sql.= ' state.code_departement, state.nom,';
|
$sql.= ' state.code_departement, state.nom,';
|
||||||
$sql.= ' country.code,';
|
$sql.= ' country.code,';
|
||||||
$sql.= " p.rowid, p.ref";
|
$sql.= " p.rowid, p.ref, p.title";
|
||||||
|
if ($search_categ_cus) $sql .= ", cc.fk_categorie, cc.fk_soc";
|
||||||
|
// Add fields from extrafields
|
||||||
foreach ($extrafields->attribute_label as $key => $val) //prevent error with sql_mode=only_full_group_by
|
foreach ($extrafields->attribute_label as $key => $val) //prevent error with sql_mode=only_full_group_by
|
||||||
{
|
{
|
||||||
$sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key : '');
|
$sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key : '');
|
||||||
@ -572,14 +575,14 @@ if ($resql)
|
|||||||
if ($search_zip) $param.='&search_zip='.urlencode($search_zip);
|
if ($search_zip) $param.='&search_zip='.urlencode($search_zip);
|
||||||
if ($search_sale > 0) $param.='&search_sale=' .urlencode($search_sale);
|
if ($search_sale > 0) $param.='&search_sale=' .urlencode($search_sale);
|
||||||
if ($search_user > 0) $param.='&search_user=' .urlencode($search_user);
|
if ($search_user > 0) $param.='&search_user=' .urlencode($search_user);
|
||||||
if ($search_product_category > 0) $param.='$search_product_category=' .urlencode($search_product_category);
|
if ($search_product_category > 0) $param.='&search_product_category=' .urlencode($search_product_category);
|
||||||
if ($search_montant_ht != '') $param.='&search_montant_ht='.urlencode($search_montant_ht);
|
if ($search_montant_ht != '') $param.='&search_montant_ht='.urlencode($search_montant_ht);
|
||||||
if ($search_montant_vat != '') $param.='&search_montant_vat='.urlencode($search_montant_vat);
|
if ($search_montant_vat != '') $param.='&search_montant_vat='.urlencode($search_montant_vat);
|
||||||
if ($search_montant_localtax1 != '') $param.='&search_montant_localtax1='.urlencode($search_montant_localtax1);
|
if ($search_montant_localtax1 != '') $param.='&search_montant_localtax1='.urlencode($search_montant_localtax1);
|
||||||
if ($search_montant_localtax2 != '') $param.='&search_montant_localtax2='.urlencode($search_montant_localtax2);
|
if ($search_montant_localtax2 != '') $param.='&search_montant_localtax2='.urlencode($search_montant_localtax2);
|
||||||
if ($search_montant_ttc != '') $param.='&search_montant_ttc='.urlencode($search_montant_ttc);
|
if ($search_montant_ttc != '') $param.='&search_montant_ttc='.urlencode($search_montant_ttc);
|
||||||
if ($search_status != '') $param.='&search_status='.urlencode($search_status);
|
if ($search_status != '') $param.='&search_status='.urlencode($search_status);
|
||||||
if ($search_paymentmode > 0) $param.='search_paymentmode='.urlencode($search_paymentmode);
|
if ($search_paymentmode > 0) $param.='&search_paymentmode='.urlencode($search_paymentmode);
|
||||||
if ($show_files) $param.='&show_files='.urlencode($show_files);
|
if ($show_files) $param.='&show_files='.urlencode($show_files);
|
||||||
if ($option) $param.="&search_option=".urlencode($option);
|
if ($option) $param.="&search_option=".urlencode($option);
|
||||||
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
||||||
|
|||||||
@ -722,7 +722,7 @@ if (! empty($conf->facture->enabled) && ! empty($conf->commande->enabled) && $us
|
|||||||
$reshook=$hookmanager->executeHooks('printFieldListWhereCustomerOrderToBill',$parameters);
|
$reshook=$hookmanager->executeHooks('printFieldListWhereCustomerOrderToBill',$parameters);
|
||||||
$sql.=$hookmanager->resPrint;
|
$sql.=$hookmanager->resPrint;
|
||||||
|
|
||||||
$sql.= " GROUP BY s.nom, s.rowid, s.email, s.code_client, s.code_compta, c.rowid, c.ref, c.facture, c.fk_statut, c.tva, c.total_ht, c.total_ttc";
|
$sql.= " GROUP BY s.nom, s.email, s.rowid, s.code_client, s.code_compta, c.rowid, c.ref, c.facture, c.fk_statut, c.total_ht, c.tva, c.total_ttc, cc.rowid, cc.code";
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ( $resql )
|
if ( $resql )
|
||||||
|
|||||||
@ -45,7 +45,10 @@ $result = restrictedArea($user, 'prelevement', '', '', 'bons');
|
|||||||
$action = GETPOST('action','alpha');
|
$action = GETPOST('action','alpha');
|
||||||
$mode = GETPOST('mode','alpha')?GETPOST('mode','alpha'):'real';
|
$mode = GETPOST('mode','alpha')?GETPOST('mode','alpha'):'real';
|
||||||
$format = GETPOST('format','aZ09');
|
$format = GETPOST('format','aZ09');
|
||||||
|
$limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit;
|
||||||
|
$page = GETPOST("page",'int');
|
||||||
|
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
|
$offset = $limit * $page;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -196,13 +199,33 @@ $sql.= " AND pfd.traite = 0";
|
|||||||
$sql.= " AND pfd.fk_facture = f.rowid";
|
$sql.= " AND pfd.fk_facture = f.rowid";
|
||||||
if ($socid) $sql.= " AND f.fk_soc = ".$socid;
|
if ($socid) $sql.= " AND f.fk_soc = ".$socid;
|
||||||
|
|
||||||
|
$nbtotalofrecords = '';
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
||||||
|
{
|
||||||
|
$result = $db->query($sql);
|
||||||
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql.= $db->plimit($limit+1,$offset);
|
||||||
|
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("InvoiceWaitingWithdraw").($num > 0?' ('.$num.')':''),'','');
|
$param='';
|
||||||
|
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
||||||
|
if($socid) $param .= '&socid='.urlencode($socid);
|
||||||
|
if($option) $param .= "&option=".urlencode($option);
|
||||||
|
|
||||||
|
if(! empty($page) && $num <= $nbtotalofrecords) $page = 0;
|
||||||
|
|
||||||
|
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
|
|
||||||
|
print_barre_liste($langs->trans("InvoiceWaitingWithdraw"),$page,$_SERVER['PHP_SELF'],$param,'','','',$num,$nbtotalofrecords,'title_accountancy.png',0,'','', $limit);
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
print '<table class="noborder" width="100%">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
@ -219,7 +242,7 @@ if ($resql)
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/societe/class/companybankaccount.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/societe/class/companybankaccount.class.php';
|
||||||
$bac = new CompanyBankAccount($db);
|
$bac = new CompanyBankAccount($db);
|
||||||
|
|
||||||
while ($i < $num && $i < 20)
|
while ($i < $num && $i < $limit)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
|
|
||||||
@ -260,6 +283,7 @@ if ($resql)
|
|||||||
}
|
}
|
||||||
else print '<tr '.$bc[0].'><td colspan="5" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
else print '<tr '.$bc[0].'><td colspan="5" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
||||||
print "</table>";
|
print "</table>";
|
||||||
|
print "</form>";
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -39,7 +39,7 @@ $action=GETPOST('action','aZ09');
|
|||||||
// Security check
|
// Security check
|
||||||
$socid = GETPOST("socid","int");
|
$socid = GETPOST("socid","int");
|
||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
$result = restrictedArea($user, 'salaries', '', '', 'payment');
|
$result = restrictedArea($user, 'salaries', '', '', '');
|
||||||
|
|
||||||
$object = new PaymentSalary($db);
|
$object = new PaymentSalary($db);
|
||||||
|
|
||||||
|
|||||||
@ -44,8 +44,9 @@ $action = GETPOST('action','alpha');
|
|||||||
$confirm = GETPOST('confirm','alpha');
|
$confirm = GETPOST('confirm','alpha');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
|
$socid = GETPOST("socid","int");
|
||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
$result = restrictedArea($user, 'salaries', $id, '');
|
$result = restrictedArea($user, 'salaries', '', '', '');
|
||||||
|
|
||||||
|
|
||||||
// Get parameters
|
// Get parameters
|
||||||
|
|||||||
@ -148,7 +148,7 @@ if ($result)
|
|||||||
if ($optioncss != '') $param.='&optioncss='.$optioncss;
|
if ($optioncss != '') $param.='&optioncss='.$optioncss;
|
||||||
|
|
||||||
$newcardbutton='';
|
$newcardbutton='';
|
||||||
if ($user->rights->salaries->payment->write)
|
if (! empty($user->rights->salaries->write))
|
||||||
{
|
{
|
||||||
$newcardbutton='<a class="butActionNew" href="'.DOL_URL_ROOT.'/compta/salaries/card.php?action=create"><span class="valignmiddle">'.$langs->trans('NewSalaryPayment').'</span>';
|
$newcardbutton='<a class="butActionNew" href="'.DOL_URL_ROOT.'/compta/salaries/card.php?action=create"><span class="valignmiddle">'.$langs->trans('NewSalaryPayment').'</span>';
|
||||||
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
|
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
|
||||||
|
|||||||
@ -41,18 +41,6 @@ $socid = GETPOST("socid","int");
|
|||||||
if ($user->societe_id) $socid=$user->societe_id;
|
if ($user->societe_id) $socid=$user->societe_id;
|
||||||
$result = restrictedArea($user, 'salaries', '', '', '');
|
$result = restrictedArea($user, 'salaries', '', '', '');
|
||||||
|
|
||||||
// Other security check
|
|
||||||
$childids = $user->getAllChildIds();
|
|
||||||
$childids[]=$user->id;
|
|
||||||
if ($userid > 0)
|
|
||||||
{
|
|
||||||
if (empty($user->rights->salaries->payment->readall) && ! in_array($userid, $childids))
|
|
||||||
{
|
|
||||||
accessforbidden();
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$nowyear=strftime("%Y", dol_now());
|
$nowyear=strftime("%Y", dol_now());
|
||||||
$year = GETPOST('year')>0?GETPOST('year'):$nowyear;
|
$year = GETPOST('year')>0?GETPOST('year'):$nowyear;
|
||||||
//$startyear=$year-2;
|
//$startyear=$year-2;
|
||||||
@ -77,11 +65,6 @@ print load_fiche_titre($title, $mesg);
|
|||||||
dol_mkdir($dir);
|
dol_mkdir($dir);
|
||||||
|
|
||||||
$useridtofilter=$userid; // Filter from parameters
|
$useridtofilter=$userid; // Filter from parameters
|
||||||
if (empty($useridtofilter))
|
|
||||||
{
|
|
||||||
$useridtofilter=$childids;
|
|
||||||
if (! empty($user->rights->salaries->payment->readall)) $useridtofilter=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
$stats = new SalariesStats($db, $socid, $useridtofilter);
|
$stats = new SalariesStats($db, $socid, $useridtofilter);
|
||||||
|
|
||||||
|
|||||||
@ -40,7 +40,7 @@ if (! empty($conf->accounting->enabled)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array('compta', 'bills'));
|
$langs->loadLangs(array('compta', 'bills', 'banks'));
|
||||||
|
|
||||||
$id=GETPOST('id','int');
|
$id=GETPOST('id','int');
|
||||||
$action=GETPOST('action','aZ09');
|
$action=GETPOST('action','aZ09');
|
||||||
|
|||||||
@ -397,7 +397,7 @@ while($j<$numlt)
|
|||||||
|
|
||||||
|
|
||||||
// Payment Salary
|
// Payment Salary
|
||||||
if (! empty($conf->salaries->enabled) && $user->rights->salaries->read)
|
if (! empty($conf->salaries->enabled) && ! empty($user->rights->salaries->read))
|
||||||
{
|
{
|
||||||
if (! $mode || $mode != 'sconly')
|
if (! $mode || $mode != 'sconly')
|
||||||
{
|
{
|
||||||
|
|||||||
@ -371,15 +371,12 @@ class Contact extends CommonObject
|
|||||||
$action='update';
|
$action='update';
|
||||||
|
|
||||||
// Actions on extra fields
|
// Actions on extra fields
|
||||||
if (! $error)
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))
|
||||||
{
|
{
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
$result=$this->insertExtraFields();
|
||||||
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
$result=$this->insertExtraFields();
|
$error++;
|
||||||
if ($result < 0)
|
|
||||||
{
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -680,6 +677,7 @@ class Contact extends CommonObject
|
|||||||
$sql.= " c.photo,";
|
$sql.= " c.photo,";
|
||||||
$sql.= " c.priv, c.note_private, c.note_public, c.default_lang, c.no_email, c.canvas,";
|
$sql.= " c.priv, c.note_private, c.note_public, c.default_lang, c.no_email, c.canvas,";
|
||||||
$sql.= " c.import_key,";
|
$sql.= " c.import_key,";
|
||||||
|
$sql.= " c.datec as date_creation, c.tms as date_modification,";
|
||||||
$sql.= " co.label as country, co.code as country_code,";
|
$sql.= " co.label as country, co.code as country_code,";
|
||||||
$sql.= " d.nom as state, d.code_departement as state_code,";
|
$sql.= " d.nom as state, d.code_departement as state_code,";
|
||||||
$sql.= " u.rowid as user_id, u.login as user_login,";
|
$sql.= " u.rowid as user_id, u.login as user_login,";
|
||||||
@ -714,6 +712,9 @@ class Contact extends CommonObject
|
|||||||
$this->zip = $obj->zip;
|
$this->zip = $obj->zip;
|
||||||
$this->town = $obj->town;
|
$this->town = $obj->town;
|
||||||
|
|
||||||
|
$this->date_creation = $this->db->jdate($obj->date_creation);
|
||||||
|
$this->date_modification = $this->db->jdate($obj->date_modification);
|
||||||
|
|
||||||
$this->fk_departement = $obj->fk_departement; // deprecated
|
$this->fk_departement = $obj->fk_departement; // deprecated
|
||||||
$this->state_id = $obj->fk_departement;
|
$this->state_id = $obj->fk_departement;
|
||||||
$this->departement_code = $obj->state_code; // deprecated
|
$this->departement_code = $obj->state_code; // deprecated
|
||||||
|
|||||||
@ -154,7 +154,7 @@ $arrayfields=array(
|
|||||||
'p.phone'=>array('label'=>"Phone", 'checked'=>1),
|
'p.phone'=>array('label'=>"Phone", 'checked'=>1),
|
||||||
'p.phone_perso'=>array('label'=>"PhonePerso", 'checked'=>0),
|
'p.phone_perso'=>array('label'=>"PhonePerso", 'checked'=>0),
|
||||||
'p.phone_mobile'=>array('label'=>"PhoneMobile", 'checked'=>1),
|
'p.phone_mobile'=>array('label'=>"PhoneMobile", 'checked'=>1),
|
||||||
'p.fax'=>array('label'=>"Fax", 'checked'=>1),
|
'p.fax'=>array('label'=>"Fax", 'checked'=>0),
|
||||||
'p.email'=>array('label'=>"EMail", 'checked'=>1),
|
'p.email'=>array('label'=>"EMail", 'checked'=>1),
|
||||||
'p.skype'=>array('label'=>"Skype", 'checked'=>1, 'enabled'=>(! empty($conf->skype->enabled))),
|
'p.skype'=>array('label'=>"Skype", 'checked'=>1, 'enabled'=>(! empty($conf->skype->enabled))),
|
||||||
'p.thirdparty'=>array('label'=>"ThirdParty", 'checked'=>1, 'enabled'=>empty($conf->global->SOCIETE_DISABLE_CONTACTS)),
|
'p.thirdparty'=>array('label'=>"ThirdParty", 'checked'=>1, 'enabled'=>empty($conf->global->SOCIETE_DISABLE_CONTACTS)),
|
||||||
@ -307,7 +307,7 @@ if ($search_societe) $sql.= natural_search('s.nom', $search_socie
|
|||||||
if ($search_country) $sql .= " AND p.fk_pays IN (".$search_country.')';
|
if ($search_country) $sql .= " AND p.fk_pays IN (".$search_country.')';
|
||||||
if (strlen($search_poste)) $sql.= natural_search('p.poste', $search_poste);
|
if (strlen($search_poste)) $sql.= natural_search('p.poste', $search_poste);
|
||||||
if (strlen($search_phone_perso)) $sql.= natural_search('p.phone_perso', $search_phone_perso);
|
if (strlen($search_phone_perso)) $sql.= natural_search('p.phone_perso', $search_phone_perso);
|
||||||
if (strlen($search_phone_pro)) $sql.= natural_search('p.phone', $search_phone);
|
if (strlen($search_phone_pro)) $sql.= natural_search('p.phone', $search_phone_pro);
|
||||||
if (strlen($search_phone_mobile)) $sql.= natural_search('p.phone_mobile', $search_phone_mobile);
|
if (strlen($search_phone_mobile)) $sql.= natural_search('p.phone_mobile', $search_phone_mobile);
|
||||||
if (strlen($search_fax)) $sql.= natural_search('p.fax', $search_fax);
|
if (strlen($search_fax)) $sql.= natural_search('p.fax', $search_fax);
|
||||||
if (strlen($search_skype)) $sql.= natural_search('p.skype', $search_skype);
|
if (strlen($search_skype)) $sql.= natural_search('p.skype', $search_skype);
|
||||||
|
|||||||
@ -1421,6 +1421,7 @@ else
|
|||||||
$morehtmlref.=$form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $user->rights->contrat->creer, 'string', '', null, null, '', 1);
|
$morehtmlref.=$form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, $user->rights->contrat->creer, 'string', '', null, null, '', 1);
|
||||||
// Thirdparty
|
// Thirdparty
|
||||||
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1);
|
$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $object->thirdparty->getNomUrl(1);
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref.=' (<a href="'.DOL_URL_ROOT.'/contrat/list.php?socid='.$object->thirdparty->id.'&search_name='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherContracts").'</a>)';
|
||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled))
|
if (! empty($conf->projet->enabled))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -925,16 +925,13 @@ class Contrat extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))
|
||||||
{
|
{
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
$result=$this->insertExtraFields();
|
||||||
{
|
if ($result < 0)
|
||||||
$result=$this->insertExtraFields();
|
{
|
||||||
if ($result < 0)
|
$error++;
|
||||||
{
|
}
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert contacts commerciaux ('SALESREPSIGN','contrat')
|
// Insert contacts commerciaux ('SALESREPSIGN','contrat')
|
||||||
@ -1048,7 +1045,7 @@ class Contrat extends CommonObject
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error="Failed to add contact";
|
$this->error="Failed to add contract";
|
||||||
dol_syslog(get_class($this)."::create - 20 - ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::create - 20 - ".$this->error, LOG_ERR);
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
return -2;
|
return -2;
|
||||||
@ -1283,18 +1280,7 @@ class Contrat extends CommonObject
|
|||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||||
|
|
||||||
if (! $error)
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0)
|
||||||
{
|
|
||||||
if (! $notrigger)
|
|
||||||
{
|
|
||||||
// Call triggers
|
|
||||||
$result=$this->call_trigger('CONTRACT_MODIFY',$user);
|
|
||||||
if ($result < 0) { $error++; }
|
|
||||||
// End call triggers
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0) // For avoid conflicts if trigger used
|
|
||||||
{
|
{
|
||||||
$result=$this->insertExtraFields();
|
$result=$this->insertExtraFields();
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
@ -1303,6 +1289,14 @@ class Contrat extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! $error && ! $notrigger)
|
||||||
|
{
|
||||||
|
// Call triggers
|
||||||
|
$result=$this->call_trigger('CONTRACT_MODIFY',$user);
|
||||||
|
if ($result < 0) { $error++; }
|
||||||
|
// End call triggers
|
||||||
|
}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error)
|
if ($error)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -197,7 +197,7 @@ $now=dol_now();
|
|||||||
$form=new Form($db);
|
$form=new Form($db);
|
||||||
|
|
||||||
$sql = "SELECT c.rowid as cid, c.ref, c.statut as cstatut,";
|
$sql = "SELECT c.rowid as cid, c.ref, c.statut as cstatut,";
|
||||||
$sql.= " s.rowid as socid, s.nom as name,";
|
$sql.= " s.rowid as socid, s.nom as name, s.email, s.client, s.fournisseur,";
|
||||||
$sql.= " cd.rowid, cd.description, cd.statut,";
|
$sql.= " cd.rowid, cd.description, cd.statut,";
|
||||||
$sql.= " p.rowid as pid, p.ref as pref, p.label as label, p.fk_product_type as ptype, p.entity as pentity,";
|
$sql.= " p.rowid as pid, p.ref as pref, p.label as label, p.fk_product_type as ptype, p.entity as pentity,";
|
||||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= " sc.fk_soc, sc.fk_user,";
|
if (!$user->rights->societe->client->voir && !$socid) $sql .= " sc.fk_soc, sc.fk_user,";
|
||||||
@ -540,6 +540,11 @@ while ($i < min($num,$limit))
|
|||||||
$contractstatic->id=$obj->cid;
|
$contractstatic->id=$obj->cid;
|
||||||
$contractstatic->ref=$obj->ref?$obj->ref:$obj->cid;
|
$contractstatic->ref=$obj->ref?$obj->ref:$obj->cid;
|
||||||
|
|
||||||
|
$companystatic->id=$obj->socid;
|
||||||
|
$companystatic->name=$obj->name;
|
||||||
|
$companystatic->email=$obj->email;
|
||||||
|
$companystatic->client=$obj->client;
|
||||||
|
$companystatic->fournisseur=$obj->fournisseur;
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
@ -555,7 +560,7 @@ while ($i < min($num,$limit))
|
|||||||
if (! empty($arrayfields['p.description']['checked']))
|
if (! empty($arrayfields['p.description']['checked']))
|
||||||
{
|
{
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if ($obj->pid)
|
if ($obj->pid > 0)
|
||||||
{
|
{
|
||||||
$productstatic->id=$obj->pid;
|
$productstatic->id=$obj->pid;
|
||||||
$productstatic->type=$obj->ptype;
|
$productstatic->type=$obj->ptype;
|
||||||
@ -625,9 +630,6 @@ while ($i < min($num,$limit))
|
|||||||
if (! empty($arrayfields['s.nom']['checked']))
|
if (! empty($arrayfields['s.nom']['checked']))
|
||||||
{
|
{
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$companystatic->id=$obj->socid;
|
|
||||||
$companystatic->name=$obj->name;
|
|
||||||
$companystatic->client=1;
|
|
||||||
print $companystatic->getNomUrl(1,'customer',28);
|
print $companystatic->getNomUrl(1,'customer',28);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
if (! $i) $totalarray['nbfield']++;
|
if (! $i) $totalarray['nbfield']++;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2014-2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2014 Frederic France <frederic.france@free.fr>
|
* Copyright (C) 2014-2018 Frederic France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -28,7 +28,7 @@
|
|||||||
// Filename to print must be provided into 'file' parameter
|
// Filename to print must be provided into 'file' parameter
|
||||||
|
|
||||||
// Print file
|
// Print file
|
||||||
if ($action == 'print_file' and $user->rights->printing->read)
|
if ($action == 'print_file' && $user->rights->printing->read)
|
||||||
{
|
{
|
||||||
$langs->load("printing");
|
$langs->load("printing");
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/modules/printing/modules_printing.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/modules/printing/modules_printing.php';
|
||||||
|
|||||||
@ -42,7 +42,7 @@ if (GETPOST('addfile','alpha'))
|
|||||||
$vardir=$conf->user->dir_output."/".$user->id;
|
$vardir=$conf->user->dir_output."/".$user->id;
|
||||||
$upload_dir_tmp = $vardir.'/temp'; // TODO Add $keytoavoidconflict in upload_dir path
|
$upload_dir_tmp = $vardir.'/temp'; // TODO Add $keytoavoidconflict in upload_dir path
|
||||||
|
|
||||||
dol_add_file_process($upload_dir_tmp, 0, 0, 'addedfile', '', null, $trackid);
|
dol_add_file_process($upload_dir_tmp, 0, 0, 'addedfile', '', null, $trackid, 0);
|
||||||
$action='presend';
|
$action='presend';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -120,6 +120,7 @@ if (! empty($_GET['zipcode']) || ! empty($_GET['town']))
|
|||||||
$row_array['selectcountry_id'] = $row['fk_country'];
|
$row_array['selectcountry_id'] = $row['fk_country'];
|
||||||
$row_array['state_id'] = $row['fk_county'];
|
$row_array['state_id'] = $row['fk_county'];
|
||||||
|
|
||||||
|
// TODO Use a cache here to avoid to make select_state in each pass (this make a SQL and lot of logs)
|
||||||
$row_array['states'] = $formcompany->select_state('',$row['fk_country'],'');
|
$row_array['states'] = $formcompany->select_state('',$row['fk_country'],'');
|
||||||
|
|
||||||
array_push($return_arr,$row_array);
|
array_push($return_arr,$row_array);
|
||||||
|
|||||||
@ -71,6 +71,8 @@ class box_graph_propales_permonth extends ModeleBoxes
|
|||||||
//include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
//include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
||||||
//$propalstatic=new Propal($db);
|
//$propalstatic=new Propal($db);
|
||||||
|
|
||||||
|
$langs->load("propal");
|
||||||
|
|
||||||
$text = $langs->trans("BoxProposalsPerMonth",$max);
|
$text = $langs->trans("BoxProposalsPerMonth",$max);
|
||||||
$this->info_box_head = array(
|
$this->info_box_head = array(
|
||||||
'text' => $text,
|
'text' => $text,
|
||||||
|
|||||||
@ -62,7 +62,7 @@ class AntiVir
|
|||||||
|
|
||||||
if (preg_match('/\.virus$/i', $file))
|
if (preg_match('/\.virus$/i', $file))
|
||||||
{
|
{
|
||||||
$this->errors='File has an extension saying file is a virus';
|
$this->errors[] = 'File has an extension saying file is a virus';
|
||||||
return -97;
|
return -97;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -596,15 +596,16 @@ abstract class CommonDocGenerator
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve extrafields
|
// Retrieve extrafields
|
||||||
/*if(is_array($object->array_options) && count($object->array_options))
|
if (is_array($object->array_options) && count($object->array_options))
|
||||||
{
|
{
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
$extrafields = new ExtraFields($this->db);
|
$extrafields = new ExtraFields($this->db);
|
||||||
$extralabels = $extrafields->fetch_name_optionals_label('shipment',true);
|
$extralabels = $extrafields->fetch_name_optionals_label('expedition',true);
|
||||||
$object->fetch_optionals();
|
$object->fetch_optionals();
|
||||||
|
|
||||||
$array_shipment = $this->fill_substitutionarray_with_extrafields($object,$array_shipment,$extrafields,$array_key,$outputlangs);
|
$array_shipment = $this->fill_substitutionarray_with_extrafields($object,$array_shipment,$extrafields,$array_key,$outputlangs);
|
||||||
}*/
|
}
|
||||||
|
|
||||||
return $array_shipment;
|
return $array_shipment;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -612,16 +613,16 @@ abstract class CommonDocGenerator
|
|||||||
/**
|
/**
|
||||||
* Define array with couple substitution key => substitution value
|
* Define array with couple substitution key => substitution value
|
||||||
*
|
*
|
||||||
* @param array $line Array of lines
|
* @param ExpeditionLigne $line Object line
|
||||||
* @param Translate $outputlangs Lang object to use for output
|
* @param Translate $outputlangs Lang object to use for output
|
||||||
* @return array Substitution array
|
* @return array Substitution array
|
||||||
*/
|
*/
|
||||||
function get_substitutionarray_shipment_lines($line,$outputlangs)
|
function get_substitutionarray_shipment_lines($line, $outputlangs)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
dol_include_once('/core/lib/product.lib.php');
|
dol_include_once('/core/lib/product.lib.php');
|
||||||
|
|
||||||
return array(
|
$resarray = array(
|
||||||
'line_fulldesc'=>doc_getlinedesc($line,$outputlangs),
|
'line_fulldesc'=>doc_getlinedesc($line,$outputlangs),
|
||||||
'line_product_ref'=>$line->product_ref,
|
'line_product_ref'=>$line->product_ref,
|
||||||
'line_product_label'=>$line->product_label,
|
'line_product_label'=>$line->product_label,
|
||||||
@ -640,6 +641,18 @@ abstract class CommonDocGenerator
|
|||||||
'line_surface'=>empty($line->surface) ? '' : $line->surface*$line->qty_shipped.' '.measuring_units_string($line->surface_units, 'surface'),
|
'line_surface'=>empty($line->surface) ? '' : $line->surface*$line->qty_shipped.' '.measuring_units_string($line->surface_units, 'surface'),
|
||||||
'line_volume'=>empty($line->volume) ? '' : $line->volume*$line->qty_shipped.' '.measuring_units_string($line->volume_units, 'volume'),
|
'line_volume'=>empty($line->volume) ? '' : $line->volume*$line->qty_shipped.' '.measuring_units_string($line->volume_units, 'volume'),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Retrieve extrafields
|
||||||
|
$extrafieldkey = $line->element;
|
||||||
|
$array_key = "line";
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
|
$extrafields = new ExtraFields($this->db);
|
||||||
|
$extralabels = $extrafields->fetch_name_optionals_label($extrafieldkey, true);
|
||||||
|
$line->fetch_optionals();
|
||||||
|
|
||||||
|
$resarray = $this->fill_substitutionarray_with_extrafields($line, $resarray, $extrafields, $array_key, $outputlangs);
|
||||||
|
|
||||||
|
return $resarray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -46,47 +46,58 @@ abstract class CommonObject
|
|||||||
* @var DoliDb Database handler (result of a new DoliDB)
|
* @var DoliDb Database handler (result of a new DoliDB)
|
||||||
*/
|
*/
|
||||||
public $db;
|
public $db;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int The object identifier
|
* @var int The object identifier
|
||||||
*/
|
*/
|
||||||
public $id;
|
public $id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Error string
|
* @var string Error string
|
||||||
* @see errors
|
* @see errors
|
||||||
*/
|
*/
|
||||||
public $error;
|
public $error;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string[] Array of error strings
|
* @var string[] Array of error strings
|
||||||
*/
|
*/
|
||||||
public $errors=array();
|
public $errors=array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $element;
|
public $element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $table_element;
|
public $table_element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var
|
* @var
|
||||||
*/
|
*/
|
||||||
public $table_element_line;
|
public $table_element_line;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Key value used to track if data is coming from import wizard
|
* @var string Key value used to track if data is coming from import wizard
|
||||||
*/
|
*/
|
||||||
public $import_key;
|
public $import_key;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Contains data to manage extrafields
|
* @var mixed Contains data to manage extrafields
|
||||||
*/
|
*/
|
||||||
public $array_options=array();
|
public $array_options=array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int[][] Array of linked objects ids. Loaded by ->fetchObjectLinked
|
* @var int[][] Array of linked objects ids. Loaded by ->fetchObjectLinked
|
||||||
*/
|
*/
|
||||||
public $linkedObjectsIds;
|
public $linkedObjectsIds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var mixed Array of linked objects. Loaded by ->fetchObjectLinked
|
* @var mixed Array of linked objects. Loaded by ->fetchObjectLinked
|
||||||
*/
|
*/
|
||||||
public $linkedObjects;
|
public $linkedObjects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Object To store a cloned copy of object before to edit it and keep track of old properties
|
* @var Object To store a cloned copy of object before to edit it and keep track of old properties
|
||||||
*/
|
*/
|
||||||
@ -116,11 +127,13 @@ abstract class CommonObject
|
|||||||
* @see fetch_projet()
|
* @see fetch_projet()
|
||||||
*/
|
*/
|
||||||
public $project;
|
public $project;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int The related project ID
|
* @var int The related project ID
|
||||||
* @see setProject(), project
|
* @see setProject(), project
|
||||||
*/
|
*/
|
||||||
public $fk_project;
|
public $fk_project;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* @deprecated
|
||||||
* @see project
|
* @see project
|
||||||
@ -132,6 +145,7 @@ abstract class CommonObject
|
|||||||
* @see fetch_contact()
|
* @see fetch_contact()
|
||||||
*/
|
*/
|
||||||
public $contact;
|
public $contact;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int The related contact ID
|
* @var int The related contact ID
|
||||||
* @see fetch_contact()
|
* @see fetch_contact()
|
||||||
@ -165,14 +179,17 @@ abstract class CommonObject
|
|||||||
* @var string The object's reference
|
* @var string The object's reference
|
||||||
*/
|
*/
|
||||||
public $ref;
|
public $ref;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string The object's previous reference
|
* @var string The object's previous reference
|
||||||
*/
|
*/
|
||||||
public $ref_previous;
|
public $ref_previous;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string The object's next reference
|
* @var string The object's next reference
|
||||||
*/
|
*/
|
||||||
public $ref_next;
|
public $ref_next;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string An external reference for the object
|
* @var string An external reference for the object
|
||||||
*/
|
*/
|
||||||
@ -189,36 +206,43 @@ abstract class CommonObject
|
|||||||
* @see getFullAddress()
|
* @see getFullAddress()
|
||||||
*/
|
*/
|
||||||
public $country;
|
public $country;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int
|
* @var int
|
||||||
* @see getFullAddress(), country
|
* @see getFullAddress(), country
|
||||||
*/
|
*/
|
||||||
public $country_id;
|
public $country_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see getFullAddress(), isInEEC(), country
|
* @see getFullAddress(), isInEEC(), country
|
||||||
*/
|
*/
|
||||||
public $country_code;
|
public $country_code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see getFullAddress()
|
* @see getFullAddress()
|
||||||
*/
|
*/
|
||||||
public $state;
|
public $state;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int
|
* @var int
|
||||||
* @see getFullAddress(), state
|
* @see getFullAddress(), state
|
||||||
*/
|
*/
|
||||||
public $state_id;
|
public $state_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see getFullAddress(), state
|
* @see getFullAddress(), state
|
||||||
*/
|
*/
|
||||||
public $state_code;
|
public $state_code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see getFullAddress(), region
|
* @see getFullAddress(), region
|
||||||
*/
|
*/
|
||||||
public $region;
|
public $region;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see getFullAddress(), region
|
* @see getFullAddress(), region
|
||||||
@ -230,16 +254,19 @@ abstract class CommonObject
|
|||||||
* @see fetch_barcode()
|
* @see fetch_barcode()
|
||||||
*/
|
*/
|
||||||
public $barcode_type;
|
public $barcode_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see fetch_barcode(), barcode_type
|
* @see fetch_barcode(), barcode_type
|
||||||
*/
|
*/
|
||||||
public $barcode_type_code;
|
public $barcode_type_code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see fetch_barcode(), barcode_type
|
* @see fetch_barcode(), barcode_type
|
||||||
*/
|
*/
|
||||||
public $barcode_type_label;
|
public $barcode_type_label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see fetch_barcode(), barcode_type
|
* @see fetch_barcode(), barcode_type
|
||||||
@ -257,6 +284,7 @@ abstract class CommonObject
|
|||||||
* @see setPaymentTerms()
|
* @see setPaymentTerms()
|
||||||
*/
|
*/
|
||||||
public $cond_reglement_id;
|
public $cond_reglement_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int Payment terms ID
|
* @var int Payment terms ID
|
||||||
* @deprecated Kept for compatibility
|
* @deprecated Kept for compatibility
|
||||||
@ -294,11 +322,13 @@ abstract class CommonObject
|
|||||||
* @see update_note()
|
* @see update_note()
|
||||||
*/
|
*/
|
||||||
public $note_public;
|
public $note_public;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Private note
|
* @var string Private note
|
||||||
* @see update_note()
|
* @see update_note()
|
||||||
*/
|
*/
|
||||||
public $note_private;
|
public $note_private;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* @deprecated
|
||||||
* @see note_public
|
* @see note_public
|
||||||
@ -310,21 +340,25 @@ abstract class CommonObject
|
|||||||
* @see update_price()
|
* @see update_price()
|
||||||
*/
|
*/
|
||||||
public $total_ht;
|
public $total_ht;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float Total VAT amount
|
* @var float Total VAT amount
|
||||||
* @see update_price()
|
* @see update_price()
|
||||||
*/
|
*/
|
||||||
public $total_tva;
|
public $total_tva;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float Total local tax 1 amount
|
* @var float Total local tax 1 amount
|
||||||
* @see update_price()
|
* @see update_price()
|
||||||
*/
|
*/
|
||||||
public $total_localtax1;
|
public $total_localtax1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float Total local tax 2 amount
|
* @var float Total local tax 2 amount
|
||||||
* @see update_price()
|
* @see update_price()
|
||||||
*/
|
*/
|
||||||
public $total_localtax2;
|
public $total_localtax2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float Total amount with taxes
|
* @var float Total amount with taxes
|
||||||
* @see update_price()
|
* @see update_price()
|
||||||
@ -347,11 +381,13 @@ abstract class CommonObject
|
|||||||
* @see setIncoterms()
|
* @see setIncoterms()
|
||||||
*/
|
*/
|
||||||
public $fk_incoterms;
|
public $fk_incoterms;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see SetIncoterms()
|
* @see SetIncoterms()
|
||||||
*/
|
*/
|
||||||
public $libelle_incoterms;
|
public $libelle_incoterms;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @see display_incoterms()
|
* @see display_incoterms()
|
||||||
@ -1115,8 +1151,8 @@ abstract class CommonObject
|
|||||||
$sql.= " ".MAIN_DB_PREFIX."c_type_contact as tc";
|
$sql.= " ".MAIN_DB_PREFIX."c_type_contact as tc";
|
||||||
$sql.= " WHERE ec.element_id = ".$id;
|
$sql.= " WHERE ec.element_id = ".$id;
|
||||||
$sql.= " AND ec.fk_socpeople = c.rowid";
|
$sql.= " AND ec.fk_socpeople = c.rowid";
|
||||||
if ($source == 'internal') $sql.= " AND c.entity IN (0,".$conf->entity.")";
|
if ($source == 'internal') $sql.= " AND c.entity IN (".getEntity('user').")";
|
||||||
if ($source == 'external') $sql.= " AND c.entity IN (".getEntity('socpeople').")";
|
if ($source == 'external') $sql.= " AND c.entity IN (".getEntity('societe').")";
|
||||||
$sql.= " AND ec.fk_c_type_contact = tc.rowid";
|
$sql.= " AND ec.fk_c_type_contact = tc.rowid";
|
||||||
$sql.= " AND tc.element = '".$element."'";
|
$sql.= " AND tc.element = '".$element."'";
|
||||||
$sql.= " AND tc.source = '".$source."'";
|
$sql.= " AND tc.source = '".$source."'";
|
||||||
@ -3721,7 +3757,7 @@ abstract class CommonObject
|
|||||||
|
|
||||||
$num = count($this->lines);
|
$num = count($this->lines);
|
||||||
|
|
||||||
//Line extrafield
|
// Line extrafield
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
$extrafieldsline = new ExtraFields($this->db);
|
$extrafieldsline = new ExtraFields($this->db);
|
||||||
$extralabelslines=$extrafieldsline->fetch_name_optionals_label($this->table_element_line);
|
$extralabelslines=$extrafieldsline->fetch_name_optionals_label($this->table_element_line);
|
||||||
@ -3730,6 +3766,7 @@ abstract class CommonObject
|
|||||||
$reshook = $hookmanager->executeHooks('printObjectLineTitle', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
|
$reshook = $hookmanager->executeHooks('printObjectLineTitle', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
|
||||||
if (empty($reshook))
|
if (empty($reshook))
|
||||||
{
|
{
|
||||||
|
// Title line
|
||||||
print "<thead>\n";
|
print "<thead>\n";
|
||||||
|
|
||||||
print '<tr class="liste_titre nodrag nodrop">';
|
print '<tr class="liste_titre nodrag nodrop">';
|
||||||
@ -3821,7 +3858,6 @@ abstract class CommonObject
|
|||||||
//Line extrafield
|
//Line extrafield
|
||||||
$line->fetch_optionals();
|
$line->fetch_optionals();
|
||||||
|
|
||||||
|
|
||||||
//if (is_object($hookmanager) && (($line->product_type == 9 && ! empty($line->special_code)) || ! empty($line->fk_parent_line)))
|
//if (is_object($hookmanager) && (($line->product_type == 9 && ! empty($line->special_code)) || ! empty($line->fk_parent_line)))
|
||||||
if (is_object($hookmanager)) // Old code is commented on preceding line.
|
if (is_object($hookmanager)) // Old code is commented on preceding line.
|
||||||
{
|
{
|
||||||
@ -4815,6 +4851,9 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//dol_syslog("attributeLabel=".$attributeLabel, LOG_DEBUG);
|
||||||
|
//dol_syslog("attributeType=".$attributeType, LOG_DEBUG);
|
||||||
|
|
||||||
switch ($attributeType)
|
switch ($attributeType)
|
||||||
{
|
{
|
||||||
case 'int':
|
case 'int':
|
||||||
@ -4828,6 +4867,21 @@ abstract class CommonObject
|
|||||||
$new_array_options[$key] = null;
|
$new_array_options[$key] = null;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'double':
|
||||||
|
$value = price2num($value);
|
||||||
|
if (!is_numeric($value) && $value!='')
|
||||||
|
{
|
||||||
|
dol_syslog($langs->trans("ExtraFieldHasWrongValue")." sur ".$attributeLabel."(".$value."is not '".$attributeType."')", LOG_DEBUG);
|
||||||
|
$this->errors[]=$langs->trans("ExtraFieldHasWrongValue", $attributeLabel);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
elseif ($value=='')
|
||||||
|
{
|
||||||
|
$new_array_options[$key] = null;
|
||||||
|
}
|
||||||
|
//dol_syslog("double value"." sur ".$attributeLabel."(".$value." is '".$attributeType."')", LOG_DEBUG);
|
||||||
|
$new_array_options[$key] = $value;
|
||||||
|
break;
|
||||||
/*case 'select': // Not required, we chosed value='0' for undefined values
|
/*case 'select': // Not required, we chosed value='0' for undefined values
|
||||||
if ($value=='-1')
|
if ($value=='-1')
|
||||||
{
|
{
|
||||||
@ -5022,6 +5076,9 @@ abstract class CommonObject
|
|||||||
$attributeParam = $extrafields->attributes[$this->table_element]['param'][$key];
|
$attributeParam = $extrafields->attributes[$this->table_element]['param'][$key];
|
||||||
$attributeRequired = $extrafields->attributes[$this->table_element]['required'][$key];
|
$attributeRequired = $extrafields->attributes[$this->table_element]['required'][$key];
|
||||||
|
|
||||||
|
//dol_syslog("attributeLabel=".$attributeLabel, LOG_DEBUG);
|
||||||
|
//dol_syslog("attributeType=".$attributeType, LOG_DEBUG);
|
||||||
|
|
||||||
switch ($attributeType)
|
switch ($attributeType)
|
||||||
{
|
{
|
||||||
case 'int':
|
case 'int':
|
||||||
@ -5035,6 +5092,21 @@ abstract class CommonObject
|
|||||||
$this->array_options["options_".$key] = null;
|
$this->array_options["options_".$key] = null;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'double':
|
||||||
|
$value = price2num($value);
|
||||||
|
if (!is_numeric($value) && $value!='')
|
||||||
|
{
|
||||||
|
dol_syslog($langs->trans("ExtraFieldHasWrongValue")." sur ".$attributeLabel."(".$value."is not '".$attributeType."')", LOG_DEBUG);
|
||||||
|
$this->errors[]=$langs->trans("ExtraFieldHasWrongValue", $attributeLabel);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
elseif ($value=='')
|
||||||
|
{
|
||||||
|
$this->array_options["options_".$key] = null;
|
||||||
|
}
|
||||||
|
//dol_syslog("double value"." sur ".$attributeLabel."(".$value." is '".$attributeType."')", LOG_DEBUG);
|
||||||
|
$this->array_options["options_".$key] = $value;
|
||||||
|
break;
|
||||||
/*case 'select': // Not required, we chosed value='0' for undefined values
|
/*case 'select': // Not required, we chosed value='0' for undefined values
|
||||||
if ($value=='-1')
|
if ($value=='-1')
|
||||||
{
|
{
|
||||||
@ -7044,15 +7116,12 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update extrafield
|
// Update extrafield
|
||||||
if (! $error)
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0)
|
||||||
{
|
{
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
$result=$this->insertExtraFields();
|
||||||
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
$result=$this->insertExtraFields();
|
$error++;
|
||||||
if ($result < 0)
|
|
||||||
{
|
|
||||||
$error++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -519,6 +519,9 @@ class Conf
|
|||||||
// By default, we open card if one found
|
// By default, we open card if one found
|
||||||
if (! isset($this->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE)) $this->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE=1;
|
if (! isset($this->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE)) $this->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE=1;
|
||||||
|
|
||||||
|
// By default, we show state code in combo list
|
||||||
|
if (! isset($this->global->MAIN_SHOW_STATE_CODE)) $this->global->MAIN_SHOW_STATE_CODE=1;
|
||||||
|
|
||||||
// Define list of limited modules (value must be key found for "name" property of module, so for example 'supplierproposal' for Module "Supplier Proposal"
|
// Define list of limited modules (value must be key found for "name" property of module, so for example 'supplierproposal' for Module "Supplier Proposal"
|
||||||
if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,societe,propal,commande,facture,categorie,supplierproposal,fournisseur,contact,projet,contrat,ficheinter,expedition,agenda,resource,adherent,blockedlog'; // '' means 'all'. Note that contact is added here as it should be a module later.
|
if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,societe,propal,commande,facture,categorie,supplierproposal,fournisseur,contact,projet,contrat,ficheinter,expedition,agenda,resource,adherent,blockedlog'; // '' means 'all'. Note that contact is added here as it should be a module later.
|
||||||
if (! empty($this->modules_parts['moduleforexternal'])) // Module part to include an external module into the MAIN_MODULES_FOR_EXTERNAL list
|
if (! empty($this->modules_parts['moduleforexternal'])) // Module part to include an external module into the MAIN_MODULES_FOR_EXTERNAL list
|
||||||
|
|||||||
@ -924,7 +924,7 @@ class DolGraph
|
|||||||
var percent=Math.round(series.percent);
|
var percent=Math.round(series.percent);
|
||||||
var number=series.data[0][1];
|
var number=series.data[0][1];
|
||||||
return \'';
|
return \'';
|
||||||
$this->stringtoshow.='<div style="font-size:8pt;text-align:center;padding:2px;color:black;">';
|
$this->stringtoshow.='<span style="font-size:8pt;text-align:center;padding:2px;color:black;">';
|
||||||
if ($urltemp) $this->stringtoshow.='<a style="color: #FFFFFF;" border="0" href="'.$urltemp.'">';
|
if ($urltemp) $this->stringtoshow.='<a style="color: #FFFFFF;" border="0" href="'.$urltemp.'">';
|
||||||
$this->stringtoshow.='\'+';
|
$this->stringtoshow.='\'+';
|
||||||
$this->stringtoshow.=($showlegend?'':'label+\' \'+'); // Hide label if already shown in legend
|
$this->stringtoshow.=($showlegend?'':'label+\' \'+'); // Hide label if already shown in legend
|
||||||
@ -932,7 +932,7 @@ class DolGraph
|
|||||||
$this->stringtoshow.=($showpercent?'\'<br/>\'+percent+\'%\'+':'');
|
$this->stringtoshow.=($showpercent?'\'<br/>\'+percent+\'%\'+':'');
|
||||||
$this->stringtoshow.='\'';
|
$this->stringtoshow.='\'';
|
||||||
if ($urltemp) $this->stringtoshow.='</a>';
|
if ($urltemp) $this->stringtoshow.='</a>';
|
||||||
$this->stringtoshow.='</div>\';
|
$this->stringtoshow.='</span>\';
|
||||||
},
|
},
|
||||||
background: {
|
background: {
|
||||||
opacity: 0.0,
|
opacity: 0.0,
|
||||||
|
|||||||
@ -657,11 +657,22 @@ class ExtraFields
|
|||||||
$params='';
|
$params='';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_del = "DELETE FROM ".MAIN_DB_PREFIX."extrafields";
|
if ($entity === '' || $entity != '0')
|
||||||
$sql_del.= " WHERE name = '".$attrname."'";
|
{
|
||||||
$sql_del.= " AND entity = ".($entity===''?$conf->entity:$entity);
|
// We dont want on all entities, we delete all and current
|
||||||
$sql_del.= " AND elementtype = '".$elementtype."'";
|
$sql_del = "DELETE FROM ".MAIN_DB_PREFIX."extrafields";
|
||||||
|
$sql_del.= " WHERE name = '".$attrname."'";
|
||||||
|
$sql_del.= " AND entity IN (0, ".($entity===''?$conf->entity:$entity).")";
|
||||||
|
$sql_del.= " AND elementtype = '".$elementtype."'";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// We want on all entities ($entities = '0'), we delete on all only (we keep setup specific to each entity)
|
||||||
|
$sql_del = "DELETE FROM ".MAIN_DB_PREFIX."extrafields";
|
||||||
|
$sql_del.= " WHERE name = '".$attrname."'";
|
||||||
|
$sql_del.= " AND entity = 0";
|
||||||
|
$sql_del.= " AND elementtype = '".$elementtype."'";
|
||||||
|
}
|
||||||
$resql1=$this->db->query($sql_del);
|
$resql1=$this->db->query($sql_del);
|
||||||
|
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(";
|
||||||
|
|||||||
@ -1078,7 +1078,11 @@ class Form
|
|||||||
$outarray=array();
|
$outarray=array();
|
||||||
|
|
||||||
// Clean $filter that may contains sql conditions so sql code
|
// Clean $filter that may contains sql conditions so sql code
|
||||||
if (function_exists('test_sql_and_script_inject')) $filter = test_sql_and_script_inject($filter, 3);
|
if (function_exists('test_sql_and_script_inject')) {
|
||||||
|
if (test_sql_and_script_inject($filter, 3)>0) {
|
||||||
|
$filter ='';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// On recherche les societes
|
// On recherche les societes
|
||||||
$sql = "SELECT s.rowid, s.nom as name, s.name_alias, s.client, s.fournisseur, s.code_client, s.code_fournisseur";
|
$sql = "SELECT s.rowid, s.nom as name, s.name_alias, s.client, s.fournisseur, s.code_client, s.code_fournisseur";
|
||||||
@ -1106,8 +1110,9 @@ class Form
|
|||||||
if (count($scrit) > 1) $sql.=")";
|
if (count($scrit) > 1) $sql.=")";
|
||||||
if (! empty($conf->barcode->enabled))
|
if (! empty($conf->barcode->enabled))
|
||||||
{
|
{
|
||||||
$sql .= " OR s.barcode LIKE '".$this->db->escape($filterkey)."%'";
|
$sql .= " OR s.barcode LIKE '".$this->db->escape($prefix.$filterkey)."%'";
|
||||||
}
|
}
|
||||||
|
$sql.= " OR s.code_client LIKE '".$this->db->escape($prefix.$filterkey)."%' OR s.code_fournisseur LIKE '".$this->db->escape($prefix.$filterkey)."%'";
|
||||||
$sql.=")";
|
$sql.=")";
|
||||||
}
|
}
|
||||||
$sql.=$this->db->order("nom","ASC");
|
$sql.=$this->db->order("nom","ASC");
|
||||||
@ -1539,9 +1544,12 @@ class Form
|
|||||||
if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX) || $noactive) $sql.= " AND u.statut <> 0";
|
if (! empty($conf->global->USER_HIDE_INACTIVE_IN_COMBOBOX) || $noactive) $sql.= " AND u.statut <> 0";
|
||||||
if (! empty($morefilter)) $sql.=" ".$morefilter;
|
if (! empty($morefilter)) $sql.=" ".$morefilter;
|
||||||
|
|
||||||
if(empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)){
|
if (empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)) // MAIN_FIRSTNAME_NAME_POSITION is 0 means firstname+lastname
|
||||||
|
{
|
||||||
$sql.= " ORDER BY u.firstname ASC";
|
$sql.= " ORDER BY u.firstname ASC";
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
$sql.= " ORDER BY u.lastname ASC";
|
$sql.= " ORDER BY u.lastname ASC";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1588,9 +1596,11 @@ class Form
|
|||||||
$out.= '>';
|
$out.= '>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$fullNameMode = 0; //Lastname + firstname
|
// $fullNameMode is 0=Lastname+Firstname (MAIN_FIRSTNAME_NAME_POSITION=1), 1=Firstname+Lastname (MAIN_FIRSTNAME_NAME_POSITION=0)
|
||||||
if(empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)){
|
$fullNameMode = 0;
|
||||||
$fullNameMode = 1; //firstname + lastname
|
if (empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION))
|
||||||
|
{
|
||||||
|
$fullNameMode = 1; //Firstname+lastname
|
||||||
}
|
}
|
||||||
$out.= $userstatic->getFullName($langs, $fullNameMode, -1, $maxlength);
|
$out.= $userstatic->getFullName($langs, $fullNameMode, -1, $maxlength);
|
||||||
|
|
||||||
@ -4701,6 +4711,10 @@ class Form
|
|||||||
$tmpthirdparty=new Societe($this->db);
|
$tmpthirdparty=new Societe($this->db);
|
||||||
$defaulttx=get_default_tva($societe_vendeuse, (is_object($societe_acheteuse)?$societe_acheteuse:$tmpthirdparty), $idprod);
|
$defaulttx=get_default_tva($societe_vendeuse, (is_object($societe_acheteuse)?$societe_acheteuse:$tmpthirdparty), $idprod);
|
||||||
$defaultnpr=get_default_npr($societe_vendeuse, (is_object($societe_acheteuse)?$societe_acheteuse:$tmpthirdparty), $idprod);
|
$defaultnpr=get_default_npr($societe_vendeuse, (is_object($societe_acheteuse)?$societe_acheteuse:$tmpthirdparty), $idprod);
|
||||||
|
if (preg_match('/\((.*)\)/', $defaulttx, $reg)) {
|
||||||
|
$defaultcode=$reg[1];
|
||||||
|
$defaulttx=preg_replace('/\s*\(.*\)/','',$defaulttx);
|
||||||
|
}
|
||||||
if (empty($defaulttx)) $defaultnpr=0;
|
if (empty($defaulttx)) $defaultnpr=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -203,7 +203,7 @@ class FormCompany
|
|||||||
*
|
*
|
||||||
* @param string $selected Code state preselected (mus be state id)
|
* @param string $selected Code state preselected (mus be state id)
|
||||||
* @param integer $country_codeid Country code or id: 0=list for all countries, otherwise country code or country rowid to show
|
* @param integer $country_codeid Country code or id: 0=list for all countries, otherwise country code or country rowid to show
|
||||||
* @param string $htmlname Id of department
|
* @param string $htmlname Id of department. If '', we want only the string with <option>
|
||||||
* @return string String with HTML select
|
* @return string String with HTML select
|
||||||
* @see select_country
|
* @see select_country
|
||||||
*/
|
*/
|
||||||
@ -217,7 +217,7 @@ class FormCompany
|
|||||||
|
|
||||||
$out='';
|
$out='';
|
||||||
|
|
||||||
// On recherche les departements/cantons/province active d'une region et pays actif
|
// Serch departements/cantons/province active d'une region et pays actif
|
||||||
$sql = "SELECT d.rowid, d.code_departement as code, d.nom as name, d.active, c.label as country, c.code as country_code, r.nom as region_name FROM";
|
$sql = "SELECT d.rowid, d.code_departement as code, d.nom as name, d.active, c.label as country, c.code as country_code, r.nom as region_name FROM";
|
||||||
$sql .= " ".MAIN_DB_PREFIX ."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r,".MAIN_DB_PREFIX."c_country as c";
|
$sql .= " ".MAIN_DB_PREFIX ."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r,".MAIN_DB_PREFIX."c_country as c";
|
||||||
$sql .= " WHERE d.fk_region=r.code_region and r.fk_pays=c.rowid";
|
$sql .= " WHERE d.fk_region=r.code_region and r.fk_pays=c.rowid";
|
||||||
@ -226,7 +226,6 @@ class FormCompany
|
|||||||
if ($country_codeid && ! is_numeric($country_codeid)) $sql .= " AND c.code = '".$this->db->escape($country_codeid)."'";
|
if ($country_codeid && ! is_numeric($country_codeid)) $sql .= " AND c.code = '".$this->db->escape($country_codeid)."'";
|
||||||
$sql .= " ORDER BY c.code, d.code_departement";
|
$sql .= " ORDER BY c.code, d.code_departement";
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::select_departement", LOG_DEBUG);
|
|
||||||
$result=$this->db->query($sql);
|
$result=$this->db->query($sql);
|
||||||
if ($result)
|
if ($result)
|
||||||
{
|
{
|
||||||
@ -267,7 +266,7 @@ class FormCompany
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Si traduction existe, on l'utilise, sinon on prend le libelle par defaut
|
// Si traduction existe, on l'utilise, sinon on prend le libelle par defaut
|
||||||
if(!empty($conf->global->MAIN_SHOW_STATE_CODE) &&
|
if (!empty($conf->global->MAIN_SHOW_STATE_CODE) &&
|
||||||
($conf->global->MAIN_SHOW_STATE_CODE == 1 || $conf->global->MAIN_SHOW_STATE_CODE == 2 || $conf->global->MAIN_SHOW_STATE_CODE === 'all')) {
|
($conf->global->MAIN_SHOW_STATE_CODE == 1 || $conf->global->MAIN_SHOW_STATE_CODE == 2 || $conf->global->MAIN_SHOW_STATE_CODE === 'all')) {
|
||||||
if(!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1) {
|
if(!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1) {
|
||||||
$out.= $obj->region_name . ' - ' . $obj->code . ' - ' . ($langs->trans($obj->code)!=$obj->code?$langs->trans($obj->code):($obj->name!='-'?$obj->name:''));
|
$out.= $obj->region_name . ' - ' . $obj->code . ' - ' . ($langs->trans($obj->code)!=$obj->code?$langs->trans($obj->code):($obj->name!='-'?$obj->name:''));
|
||||||
@ -298,9 +297,12 @@ class FormCompany
|
|||||||
dol_print_error($this->db);
|
dol_print_error($this->db);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make select dynamic
|
// Make select dynamic
|
||||||
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
|
if (! empty($htmlname))
|
||||||
$out .= ajax_combobox($htmlname);
|
{
|
||||||
|
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
|
||||||
|
$out .= ajax_combobox($htmlname);
|
||||||
|
}
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -778,7 +778,8 @@ class FormFile
|
|||||||
$out.= '<td class="right nowraponall">';
|
$out.= '<td class="right nowraponall">';
|
||||||
if ($delallowed)
|
if ($delallowed)
|
||||||
{
|
{
|
||||||
$out.= '<a href="'.$urlsource.(strpos($urlsource,'?')?'&':'?').'action=remove_file&file='.urlencode($relativepath);
|
$tmpurlsource = preg_replace('/#[a-zA-Z0-9_]*$/', '', $urlsource);
|
||||||
|
$out.= '<a href="'.$tmpurlsource.(strpos($tmpurlsource,'?')?'&':'?').'action=remove_file&file='.urlencode($relativepath);
|
||||||
$out.= ($param?'&'.$param:'');
|
$out.= ($param?'&'.$param:'');
|
||||||
//$out.= '&modulepart='.$modulepart; // TODO obsolete ?
|
//$out.= '&modulepart='.$modulepart; // TODO obsolete ?
|
||||||
//$out.= '&urlsource='.urlencode($urlsource); // TODO obsolete ?
|
//$out.= '&urlsource='.urlencode($urlsource); // TODO obsolete ?
|
||||||
@ -814,7 +815,7 @@ class FormFile
|
|||||||
|
|
||||||
$this->numoffiles++;
|
$this->numoffiles++;
|
||||||
}
|
}
|
||||||
// Loop on each file found
|
// Loop on each link found
|
||||||
if (is_array($link_list))
|
if (is_array($link_list))
|
||||||
{
|
{
|
||||||
$colspan=2;
|
$colspan=2;
|
||||||
@ -1304,8 +1305,7 @@ class FormFile
|
|||||||
if (! empty($conf->dol_use_jmobile)) $useajax=0;
|
if (! empty($conf->dol_use_jmobile)) $useajax=0;
|
||||||
if (empty($conf->use_javascript_ajax)) $useajax=0;
|
if (empty($conf->use_javascript_ajax)) $useajax=0;
|
||||||
if (! empty($conf->global->MAIN_ECM_DISABLE_JS)) $useajax=0;
|
if (! empty($conf->global->MAIN_ECM_DISABLE_JS)) $useajax=0;
|
||||||
|
print '<a href="'.(($useinecm && $useajax)?'#':($url.'?action=delete&urlfile='.urlencode($filepath).$param)).'" class="deletefilelink" rel="'.$filepath.'">'.img_delete().'</a>';
|
||||||
print '<a href="'.(($useinecm && $useajax)?'#':$url.'?action=delete&urlfile='.urlencode($filepath).$param).'" class="deletefilelink" rel="'.$filepath.'">'.img_delete().'</a>';
|
|
||||||
}
|
}
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
|
|||||||
@ -286,7 +286,7 @@ class FormMail extends Form
|
|||||||
|
|
||||||
$disablebademails=1;
|
$disablebademails=1;
|
||||||
|
|
||||||
// Define output language
|
// Define output language
|
||||||
$outputlangs = $langs;
|
$outputlangs = $langs;
|
||||||
$newlang = '';
|
$newlang = '';
|
||||||
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $this->param['langsmodels'];
|
if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $this->param['langsmodels'];
|
||||||
@ -939,6 +939,7 @@ class FormMail extends Form
|
|||||||
|
|
||||||
if (count($validpaymentmethod) > 0 && $paymenturl)
|
if (count($validpaymentmethod) > 0 && $paymenturl)
|
||||||
{
|
{
|
||||||
|
$langs->load('other');
|
||||||
$this->substit['__ONLINE_PAYMENT_TEXT_AND_URL__']=str_replace('\n',"\n",$langs->transnoentities("PredefinedMailContentLink", $paymenturl));
|
$this->substit['__ONLINE_PAYMENT_TEXT_AND_URL__']=str_replace('\n',"\n",$langs->transnoentities("PredefinedMailContentLink", $paymenturl));
|
||||||
$this->substit['__ONLINE_PAYMENT_URL__']=$paymenturl;
|
$this->substit['__ONLINE_PAYMENT_URL__']=$paymenturl;
|
||||||
}
|
}
|
||||||
@ -1082,7 +1083,7 @@ class FormMail extends Form
|
|||||||
$sql.= " AND (private = 0 OR fk_user = ".$user->id.")"; // Get all public or private owned
|
$sql.= " AND (private = 0 OR fk_user = ".$user->id.")"; // Get all public or private owned
|
||||||
if ($active >= 0) $sql.=" AND active = ".$active;
|
if ($active >= 0) $sql.=" AND active = ".$active;
|
||||||
if ($label) $sql.=" AND label ='".$db->escape($label)."'";
|
if ($label) $sql.=" AND label ='".$db->escape($label)."'";
|
||||||
if (is_object($outputlangs)) $sql.= " AND (lang = '".$db->escape($outputlangs->defaultlang)."' OR lang IS NULL OR lang = '')";
|
if (! ($id > 0) && is_object($outputlangs)) $sql.= " AND (lang = '".$db->escape($outputlangs->defaultlang)."' OR lang IS NULL OR lang = '')";
|
||||||
if ($id > 0) $sql.= " AND rowid=".$id;
|
if ($id > 0) $sql.= " AND rowid=".$id;
|
||||||
if ($id == -1) $sql.= " AND position=0";
|
if ($id == -1) $sql.= " AND position=0";
|
||||||
if (is_object($outputlangs)) $sql.= $db->order("position,lang,label","ASC,DESC,ASC"); // We want line with lang set first, then with lang null or ''
|
if (is_object($outputlangs)) $sql.= $db->order("position,lang,label","ASC,DESC,ASC"); // We want line with lang set first, then with lang null or ''
|
||||||
|
|||||||
@ -1706,7 +1706,7 @@ function email_admin_prepare_head()
|
|||||||
}
|
}
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT."/admin/mails_templates.php";
|
$head[$h][0] = DOL_URL_ROOT."/admin/mails_templates.php";
|
||||||
$head[$h][1] = $langs->trans("DictionaryEMailTemplates");
|
$head[$h][1] = $langs->trans("EMailTemplates");
|
||||||
$head[$h][2] = 'templates';
|
$head[$h][2] = 'templates';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
|
|||||||
@ -131,7 +131,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
|
|||||||
print '<td class="nowrap" style="padding-bottom: 2px;">';
|
print '<td class="nowrap" style="padding-bottom: 2px;">';
|
||||||
print $langs->trans("Project").' ';
|
print $langs->trans("Project").' ';
|
||||||
print '</td><td class="nowrap" style="padding-bottom: 2px;">';
|
print '</td><td class="nowrap" style="padding-bottom: 2px;">';
|
||||||
$formproject->select_projects($socid?$socid:-1, $pid, 'projectid', 0);
|
print $formproject->select_projects($socid?$socid:-1, $pid, 'projectid', 0, 0, 1, 0, 0, 0, 0, '', 1, 0, 'maxwidth500');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -89,7 +89,7 @@ function societe_prepare_head(Societe $object)
|
|||||||
$head[$h][0] = DOL_URL_ROOT.'/comm/card.php?socid='.$object->id;
|
$head[$h][0] = DOL_URL_ROOT.'/comm/card.php?socid='.$object->id;
|
||||||
$head[$h][1] = '';
|
$head[$h][1] = '';
|
||||||
if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && ($object->client==2 || $object->client==3)) $head[$h][1] .= $langs->trans("Prospect");
|
if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && ($object->client==2 || $object->client==3)) $head[$h][1] .= $langs->trans("Prospect");
|
||||||
if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && $object->client==3) $head[$h][1] .= '/';
|
if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && $object->client==3) $head[$h][1] .= ' | ';
|
||||||
if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && ($object->client==1 || $object->client==3)) $head[$h][1] .= $langs->trans("Customer");
|
if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && ($object->client==1 || $object->client==3)) $head[$h][1] .= $langs->trans("Customer");
|
||||||
$head[$h][2] = 'customer';
|
$head[$h][2] = 'customer';
|
||||||
$h++;
|
$h++;
|
||||||
@ -1485,16 +1485,17 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint=
|
|||||||
{
|
{
|
||||||
$delay_warning=$conf->global->MAIN_DELAY_ACTIONS_TODO*24*60*60;
|
$delay_warning=$conf->global->MAIN_DELAY_ACTIONS_TODO*24*60*60;
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
||||||
|
|
||||||
$formactions=new FormActions($db);
|
$formactions=new FormActions($db);
|
||||||
|
|
||||||
$actionstatic=new ActionComm($db);
|
$actionstatic=new ActionComm($db);
|
||||||
$userstatic=new User($db);
|
$userstatic=new User($db);
|
||||||
$contactstatic = new Contact($db);
|
$contactstatic = new Contact($db);
|
||||||
|
|
||||||
|
|||||||
@ -4955,7 +4955,7 @@ function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller, $firstparamisi
|
|||||||
*
|
*
|
||||||
* @param int $idprod Id of product or 0 if not a predefined product
|
* @param int $idprod Id of product or 0 if not a predefined product
|
||||||
* @param Societe $thirdparty_seller Thirdparty with a ->country_code defined (FR, US, IT, ...)
|
* @param Societe $thirdparty_seller Thirdparty with a ->country_code defined (FR, US, IT, ...)
|
||||||
* @param int $idprodfournprice Id product_fournisseur_price (for "supplier" order/invoice)
|
* @param int $idprodfournprice Id product_fournisseur_price (for "supplier" proposal/order/invoice)
|
||||||
* @return float|string Vat rate to use with format 5.0 or '5.0 (XXX)'
|
* @return float|string Vat rate to use with format 5.0 or '5.0 (XXX)'
|
||||||
* @see get_product_localtax_for_country
|
* @see get_product_localtax_for_country
|
||||||
*/
|
*/
|
||||||
@ -4976,7 +4976,7 @@ function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournpr
|
|||||||
|
|
||||||
if ($mysoc->country_code == $thirdparty_seller->country_code) // If selling country is ours
|
if ($mysoc->country_code == $thirdparty_seller->country_code) // If selling country is ours
|
||||||
{
|
{
|
||||||
if ($idprodfournprice > 0) // We want vat for product for a "supplier" order or invoice
|
if ($idprodfournprice > 0) // We want vat for product for a "supplier" object
|
||||||
{
|
{
|
||||||
$product->get_buyprice($idprodfournprice,0,0,0);
|
$product->get_buyprice($idprodfournprice,0,0,0);
|
||||||
$ret=$product->vatrate_supplier;
|
$ret=$product->vatrate_supplier;
|
||||||
@ -5001,7 +5001,7 @@ function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournpr
|
|||||||
if (empty($conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS))
|
if (empty($conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS))
|
||||||
{
|
{
|
||||||
// If vat of product for the country not found or not defined, we return the first higher vat of country.
|
// If vat of product for the country not found or not defined, we return the first higher vat of country.
|
||||||
$sql = "SELECT taux as vat_rate";
|
$sql = "SELECT t.taux as vat_rate, t.code as default_vat_code";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
$sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
|
||||||
$sql.= " WHERE t.active=1 AND t.fk_pays = c.rowid AND c.code='".$thirdparty_seller->country_code."'";
|
$sql.= " WHERE t.active=1 AND t.fk_pays = c.rowid AND c.code='".$thirdparty_seller->country_code."'";
|
||||||
$sql.= " ORDER BY t.taux DESC, t.code ASC, t.recuperableonly ASC";
|
$sql.= " ORDER BY t.taux DESC, t.code ASC, t.recuperableonly ASC";
|
||||||
@ -5014,6 +5014,7 @@ function get_product_vat_for_country($idprod, $thirdparty_seller, $idprodfournpr
|
|||||||
if ($obj)
|
if ($obj)
|
||||||
{
|
{
|
||||||
$ret=$obj->vat_rate;
|
$ret=$obj->vat_rate;
|
||||||
|
if ($obj->default_vat_code) $ret.=' ('.$obj->default_vat_code.')';
|
||||||
}
|
}
|
||||||
$db->free($sql);
|
$db->free($sql);
|
||||||
}
|
}
|
||||||
@ -6063,7 +6064,7 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob
|
|||||||
{
|
{
|
||||||
// Set the online payment url link into __ONLINE_PAYMENT_URL__ key
|
// Set the online payment url link into __ONLINE_PAYMENT_URL__ key
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
|
||||||
$outputlangs->load('paypal');
|
$outputlangs->loadLangs(array('paypal','other'));
|
||||||
$typeforonlinepayment='free';
|
$typeforonlinepayment='free';
|
||||||
if (is_object($object) && $object->element == 'commande') $typeforonlinepayment='order';
|
if (is_object($object) && $object->element == 'commande') $typeforonlinepayment='order';
|
||||||
if (is_object($object) && $object->element == 'facture') $typeforonlinepayment='invoice';
|
if (is_object($object) && $object->element == 'facture') $typeforonlinepayment='invoice';
|
||||||
@ -6325,7 +6326,7 @@ function dolGetFirstLastname($firstname,$lastname,$nameorder=-1)
|
|||||||
|
|
||||||
$ret='';
|
$ret='';
|
||||||
// If order not defined, we use the setup
|
// If order not defined, we use the setup
|
||||||
if ($nameorder < 0) $nameorder=$conf->global->MAIN_FIRSTNAME_NAME_POSITION;
|
if ($nameorder < 0) $nameorder=(empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?1:0);
|
||||||
if ($nameorder && ((string) $nameorder != '2'))
|
if ($nameorder && ((string) $nameorder != '2'))
|
||||||
{
|
{
|
||||||
$ret.=$firstname;
|
$ret.=$firstname;
|
||||||
|
|||||||
@ -1770,7 +1770,7 @@ function getSoapParams()
|
|||||||
*/
|
*/
|
||||||
function dolGetElementUrl($objectid,$objecttype,$withpicto=0,$option='')
|
function dolGetElementUrl($objectid,$objecttype,$withpicto=0,$option='')
|
||||||
{
|
{
|
||||||
global $db,$conf;
|
global $db, $conf, $langs;
|
||||||
|
|
||||||
$ret='';
|
$ret='';
|
||||||
|
|
||||||
|
|||||||
@ -329,7 +329,7 @@ function htmlPrintOnlinePaymentFooter($fromcompany, $langs, $addformmessage=0, $
|
|||||||
print '<font style="font-size: 10px;"><br><hr>'."\n";
|
print '<font style="font-size: 10px;"><br><hr>'."\n";
|
||||||
print $fromcompany->name.'<br>';
|
print $fromcompany->name.'<br>';
|
||||||
print $line1;
|
print $line1;
|
||||||
if (strlen($line1+$line2) > 50) print '<br>';
|
if (strlen($line1.$line2) > 50) print '<br>';
|
||||||
else print ' - ';
|
else print ' - ';
|
||||||
print $line2;
|
print $line2;
|
||||||
print '</font></div>'."\n";
|
print '</font></div>'."\n";
|
||||||
|
|||||||
@ -392,6 +392,48 @@ function pdf_build_address($outputlangs,$sourcecompany,$targetcompany='',$target
|
|||||||
// Web
|
// Web
|
||||||
if ($sourcecompany->url) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Web").": ".$outputlangs->convToOutputCharset($sourcecompany->url);
|
if ($sourcecompany->url) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Web").": ".$outputlangs->convToOutputCharset($sourcecompany->url);
|
||||||
}
|
}
|
||||||
|
// Intra VAT
|
||||||
|
if (! empty($conf->global->MAIN_TVAINTRA_IN_SOURCE_ADDRESS))
|
||||||
|
{
|
||||||
|
if ($sourcecompany->tva_intra) $stringaddress.=($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("VATIntraShort").': '.$outputlangs->convToOutputCharset($sourcecompany->tva_intra);
|
||||||
|
}
|
||||||
|
// Professionnal Ids
|
||||||
|
if (! empty($conf->global->MAIN_PROFID1_IN_SOURCE_ADDRESS) && ! empty($sourcecompany->idprof1))
|
||||||
|
{
|
||||||
|
$tmp=$outputlangs->transcountrynoentities("ProfId1",$sourcecompany->country_code);
|
||||||
|
if (preg_match('/\((.+)\)/',$tmp,$reg)) $tmp=$reg[1];
|
||||||
|
$stringaddress.=($stringaddress ? "\n" : '' ).$tmp.': '.$outputlangs->convToOutputCharset($sourcecompany->idprof1);
|
||||||
|
}
|
||||||
|
if (! empty($conf->global->MAIN_PROFID2_IN_SOURCE_ADDRESS) && ! empty($sourcecompany->idprof2))
|
||||||
|
{
|
||||||
|
$tmp=$outputlangs->transcountrynoentities("ProfId2",$sourcecompany->country_code);
|
||||||
|
if (preg_match('/\((.+)\)/',$tmp,$reg)) $tmp=$reg[1];
|
||||||
|
$stringaddress.=($stringaddress ? "\n" : '' ).$tmp.': '.$outputlangs->convToOutputCharset($sourcecompany->idprof2);
|
||||||
|
}
|
||||||
|
if (! empty($conf->global->MAIN_PROFID3_IN_SOURCE_ADDRESS) && ! empty($sourcecompany->idprof3))
|
||||||
|
{
|
||||||
|
$tmp=$outputlangs->transcountrynoentities("ProfId3",$sourcecompany->country_code);
|
||||||
|
if (preg_match('/\((.+)\)/',$tmp,$reg)) $tmp=$reg[1];
|
||||||
|
$stringaddress.=($stringaddress ? "\n" : '' ).$tmp.': '.$outputlangs->convToOutputCharset($sourcecompany->idprof3);
|
||||||
|
}
|
||||||
|
if (! empty($conf->global->MAIN_PROFID4_IN_SOURCE_ADDRESS) && ! empty($sourcecompany->idprof4))
|
||||||
|
{
|
||||||
|
$tmp=$outputlangs->transcountrynoentities("ProfId4",$sourcecompany->country_code);
|
||||||
|
if (preg_match('/\((.+)\)/',$tmp,$reg)) $tmp=$reg[1];
|
||||||
|
$stringaddress.=($stringaddress ? "\n" : '' ).$tmp.': '.$outputlangs->convToOutputCharset($sourcecompany->idprof4);
|
||||||
|
}
|
||||||
|
if (! empty($conf->global->MAIN_PROFID5_IN_SOURCE_ADDRESS) && ! empty($sourcecompany->idprof5))
|
||||||
|
{
|
||||||
|
$tmp=$outputlangs->transcountrynoentities("ProfId5",$sourcecompany->country_code);
|
||||||
|
if (preg_match('/\((.+)\)/',$tmp,$reg)) $tmp=$reg[1];
|
||||||
|
$stringaddress.=($stringaddress ? "\n" : '' ).$tmp.': '.$outputlangs->convToOutputCharset($sourcecompany->idprof5);
|
||||||
|
}
|
||||||
|
if (! empty($conf->global->MAIN_PROFID6_IN_SOURCE_ADDRESS) && ! empty($sourcecompany->idprof6))
|
||||||
|
{
|
||||||
|
$tmp=$outputlangs->transcountrynoentities("ProfId6",$sourcecompany->country_code);
|
||||||
|
if (preg_match('/\((.+)\)/',$tmp,$reg)) $tmp=$reg[1];
|
||||||
|
$stringaddress.=($stringaddress ? "\n" : '' ).$tmp.': '.$outputlangs->convToOutputCharset($sourcecompany->idprof6);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode == 'target' || preg_match('/targetwithdetails/',$mode))
|
if ($mode == 'target' || preg_match('/targetwithdetails/',$mode))
|
||||||
@ -402,8 +444,17 @@ function pdf_build_address($outputlangs,$sourcecompany,$targetcompany='',$target
|
|||||||
|
|
||||||
if (!empty($targetcontact->address)) {
|
if (!empty($targetcontact->address)) {
|
||||||
$stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->convToOutputCharset(dol_format_address($targetcontact));
|
$stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->convToOutputCharset(dol_format_address($targetcontact));
|
||||||
}else {
|
} else {
|
||||||
$stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->convToOutputCharset(dol_format_address($targetcompany));
|
$companytouseforaddress = $targetcompany;
|
||||||
|
|
||||||
|
// Contact on a thirdparty that is a different thirdparty than the thirdparty of object
|
||||||
|
if ($targetcontact->socid > 0 && $targetcontact->socid != $targetcompany->id)
|
||||||
|
{
|
||||||
|
$targetcontact->fetch_thirparty();
|
||||||
|
$companytouseforaddress = $targetcontact->thirdparty;
|
||||||
|
}
|
||||||
|
|
||||||
|
$stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->convToOutputCharset(dol_format_address($companytouseforaddress));
|
||||||
}
|
}
|
||||||
// Country
|
// Country
|
||||||
if (!empty($targetcontact->country_code) && $targetcontact->country_code != $sourcecompany->country_code) {
|
if (!empty($targetcontact->country_code) && $targetcontact->country_code != $sourcecompany->country_code) {
|
||||||
@ -1875,13 +1926,13 @@ function pdf_getlinetotalexcltax($object,$i,$outputlangs,$hidedetails=0)
|
|||||||
{
|
{
|
||||||
$prev_progress = 0;
|
$prev_progress = 0;
|
||||||
$progress = 1;
|
$progress = 1;
|
||||||
if (method_exists($object, 'get_prev_progress'))
|
if (method_exists($object->lines[$i], 'get_prev_progress'))
|
||||||
{
|
{
|
||||||
$prev_progress = $object->lines[$i]->get_prev_progress($object->id);
|
$prev_progress = $object->lines[$i]->get_prev_progress($object->id);
|
||||||
$progress = ($object->lines[$i]->situation_percent - $prev_progress) / 100;
|
$progress = ($object->lines[$i]->situation_percent - $prev_progress) / 100;
|
||||||
}
|
}
|
||||||
$result.=price($sign * ($total_ht/($object->lines[$i]->situation_percent/100)) * $progress, 0, $outputlangs);
|
$result.=price($sign * ($total_ht/($object->lines[$i]->situation_percent/100)) * $progress, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$result.=price($sign * $total_ht, 0, $outputlangs);
|
$result.=price($sign * $total_ht, 0, $outputlangs);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -163,6 +163,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt
|
|||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($pu === '') $pu=0;
|
||||||
// pu_devise calculation from pu
|
// pu_devise calculation from pu
|
||||||
if (empty($pu_devise) && !empty($multicurrency_tx)) {
|
if (empty($pu_devise) && !empty($multicurrency_tx)) {
|
||||||
if (is_numeric($pu) && is_numeric($multicurrency_tx)) $pu_devise = $pu * $multicurrency_tx;
|
if (is_numeric($pu) && is_numeric($multicurrency_tx)) $pu_devise = $pu * $multicurrency_tx;
|
||||||
|
|||||||
@ -104,9 +104,24 @@ function project_prepare_head($object)
|
|||||||
$head[$h][2] = 'tasks';
|
$head[$h][2] = 'tasks';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
|
$nbTimeSpent=0;
|
||||||
|
$sql = "SELECT t.rowid";
|
||||||
|
//$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t, ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."user as u";
|
||||||
|
//$sql .= " WHERE t.fk_user = u.rowid AND t.fk_task = pt.rowid";
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t, ".MAIN_DB_PREFIX."projet_task as pt";
|
||||||
|
$sql .= " WHERE t.fk_task = pt.rowid";
|
||||||
|
$sql .= " AND pt.fk_projet =".$object->id;
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$obj = $db->fetch_object($resql);
|
||||||
|
if ($obj) $nbTimeSpent=1;
|
||||||
|
}
|
||||||
|
else dol_print_error($db);
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/projet/tasks/time.php?withproject=1&projectid='.$object->id;
|
$head[$h][0] = DOL_URL_ROOT.'/projet/tasks/time.php?withproject=1&projectid='.$object->id;
|
||||||
$head[$h][1] = $langs->trans("TimeSpent");
|
$head[$h][1] = $langs->trans("TimeSpent");
|
||||||
//if ($nbTasks > 0) $head[$h][1].= ' <span class="badge">'.($nbTasks).'</span>';
|
if ($nbTimeSpent > 0) $head[$h][1].= ' <span class="badge">...</span>';
|
||||||
$head[$h][2] = 'timespent';
|
$head[$h][2] = 'timespent';
|
||||||
$h++;
|
$h++;
|
||||||
}
|
}
|
||||||
@ -165,9 +180,10 @@ function task_prepare_head($object)
|
|||||||
// Is there timespent ?
|
// Is there timespent ?
|
||||||
$nbTimeSpent=0;
|
$nbTimeSpent=0;
|
||||||
$sql = "SELECT t.rowid";
|
$sql = "SELECT t.rowid";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t, ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."user as u";
|
//$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t, ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."user as u";
|
||||||
$sql .= " WHERE t.fk_user = u.rowid AND t.fk_task = pt.rowid";
|
//$sql .= " WHERE t.fk_user = u.rowid AND t.fk_task = pt.rowid";
|
||||||
$sql .= " AND t.fk_task =".$object->id;
|
$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t";
|
||||||
|
$sql .= " WHERE t.fk_task =".$object->id;
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -198,11 +198,11 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
|
|||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'billing', '', 2000__+MAX_llx_menu__, '/don/list.php?leftmenu=donations&mainmenu=billing', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'billing', '', 2000__+MAX_llx_menu__, '/don/list.php?leftmenu=donations&mainmenu=billing', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__);
|
||||||
-- insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'billing', '', 2000__+MAX_llx_menu__, '/don/stats/index.php?leftmenu=donations&mainmenu=billing', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__);
|
-- insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'billing', '', 2000__+MAX_llx_menu__, '/don/stats/index.php?leftmenu=donations&mainmenu=billing', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__);
|
||||||
-- Special expenses
|
-- Special expenses
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled || $conf->banque->enabled', __HANDLER__, 'left', 2200__+MAX_llx_menu__, 'billing', 'tax', 6__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax&mainmenu=billing', 'MenuSpecialExpenses', 0, 'compta', '(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read) || (! empty($conf->loan->enabled) && $user->rights->loan->read) || (! empty($conf->banque->enabled) && $user->rights->banque->lire)', '', 0, 6, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled || $conf->banque->enabled', __HANDLER__, 'left', 2200__+MAX_llx_menu__, 'billing', 'tax', 6__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax&mainmenu=billing', 'MenuSpecialExpenses', 0, 'compta', '(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && ! empty($user->rights->salaries->read)) || (! empty($conf->loan->enabled) && $user->rights->loan->read) || (! empty($conf->banque->enabled) && $user->rights->banque->lire)', '', 0, 6, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'billing', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=billing', 'Salaries', 1, 'salaries', '$user->rights->salaries->payment->read', '', 0, 1, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'billing', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=billing', 'Salaries', 1, 'salaries', '$user->rights->salaries->read', '', 0, 1, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2211__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/card.php?leftmenu=tax_salary&action=create', 'NewPayment', 2, 'companies', '$user->rights->salaries->payment->write', '', 0, 2, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2211__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/card.php?leftmenu=tax_salary&action=create', 'NewPayment', 2, 'companies', '$user->rights->salaries->write', '', 0, 2, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2212__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->salaries->payment->read', '', 0, 3, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2212__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->salaries->read', '', 0, 3, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2213__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/stats/index.php?leftmenu=tax_salary', 'Statistics', 2, 'companies', '$user->rights->salaries->payment->read', '', 0, 4, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2213__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/stats/index.php?leftmenu=tax_salary', 'Statistics', 2, 'companies', '$user->rights->salaries->read', '', 0, 4, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'billing', 'tax_loan', 2200__+MAX_llx_menu__, '/loan/index.php?leftmenu=tax_loan&mainmenu=billing', 'Loans', 1, 'loan', '$user->rights->loan->read', '', 0, 1, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'billing', 'tax_loan', 2200__+MAX_llx_menu__, '/loan/index.php?leftmenu=tax_loan&mainmenu=billing', 'Loans', 1, 'loan', '$user->rights->loan->read', '', 0, 1, __ENTITY__);
|
||||||
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'billing', '', 2220__+MAX_llx_menu__, '/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__);
|
insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'billing', '', 2220__+MAX_llx_menu__, '/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__);
|
||||||
--insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'billing', '', 2220__+MAX_llx_menu__, '/loan/payment/list.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__);
|
--insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'billing', '', 2220__+MAX_llx_menu__, '/loan/payment/list.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__);
|
||||||
|
|||||||
@ -75,6 +75,21 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode
|
|||||||
if (! empty($conf->global->THEME_TOPMENU_DISABLE_IMAGE)) $titlehome = ' <span class="fa fa-home"></span> ';
|
if (! empty($conf->global->THEME_TOPMENU_DISABLE_IMAGE)) $titlehome = ' <span class="fa fa-home"></span> ';
|
||||||
$menu->add('/index.php?mainmenu=home&leftmenu=home', $titlehome, 0, $showmode, $atarget, "home", '', 10, $id, $idsel, $classname);
|
$menu->add('/index.php?mainmenu=home&leftmenu=home', $titlehome, 0, $showmode, $atarget, "home", '', 10, $id, $idsel, $classname);
|
||||||
|
|
||||||
|
// Members
|
||||||
|
$tmpentry=array('enabled'=>(! empty($conf->adherent->enabled)),
|
||||||
|
'perms'=>(! empty($user->rights->adherent->lire)),
|
||||||
|
'module'=>'adherent');
|
||||||
|
$showmode=isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal);
|
||||||
|
if ($showmode)
|
||||||
|
{
|
||||||
|
$classname="";
|
||||||
|
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "members") { $classname='class="tmenusel"'; $_SESSION['idmenu']=''; }
|
||||||
|
else $classname = 'class="tmenu"';
|
||||||
|
$idsel='members';
|
||||||
|
|
||||||
|
$menu->add('/adherents/index.php?mainmenu=members&leftmenu=', $langs->trans("MenuMembers"), 0, $showmode, $atarget, "members", '', 18, $id, $idsel, $classname);
|
||||||
|
}
|
||||||
|
|
||||||
// Third parties
|
// Third parties
|
||||||
$tmpentry=array('enabled'=>(( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)), 'perms'=>(! empty($user->rights->societe->lire) || ! empty($user->rights->fournisseur->lire)), 'module'=>'societe|fournisseur');
|
$tmpentry=array('enabled'=>(( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)), 'perms'=>(! empty($user->rights->societe->lire) || ! empty($user->rights->fournisseur->lire)), 'module'=>'societe|fournisseur');
|
||||||
$showmode=isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal);
|
$showmode=isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal);
|
||||||
@ -150,11 +165,10 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode
|
|||||||
if (! empty($conf->salaries->enabled)) $menuqualified++;
|
if (! empty($conf->salaries->enabled)) $menuqualified++;
|
||||||
if (! empty($conf->supplier_invoice->enabled)) $menuqualified++;
|
if (! empty($conf->supplier_invoice->enabled)) $menuqualified++;
|
||||||
if (! empty($conf->loan->enabled)) $menuqualified++;
|
if (! empty($conf->loan->enabled)) $menuqualified++;
|
||||||
if (! empty($conf->banque->enabled)) $menuqualified++;
|
|
||||||
$tmpentry=array(
|
$tmpentry=array(
|
||||||
'enabled'=>$menuqualified,
|
'enabled'=>$menuqualified,
|
||||||
'perms'=>(! empty($user->rights->facture->lire) || ! empty($user->rights->don->lire) || ! empty($user->rights->tax->charges->lire) || ! empty($user->rights->salaries->read) || ! empty($user->rights->fournisseur->facture->lire) || ! empty($user->rights->loan->read) || ! empty($user->rights->banque->lire)),
|
'perms'=>(! empty($user->rights->facture->lire) || ! empty($user->rights->don->lire) || ! empty($user->rights->tax->charges->lire) || ! empty($user->rights->salaries->read) || ! empty($user->rights->fournisseur->facture->lire) || ! empty($user->rights->loan->read)),
|
||||||
'module'=>'facture|supplier_invoice|don|tax|salaries|loan|banque');
|
'module'=>'facture|supplier_invoice|don|tax|salaries|loan');
|
||||||
$showmode=isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal);
|
$showmode=isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal);
|
||||||
if ($showmode)
|
if ($showmode)
|
||||||
{
|
{
|
||||||
@ -242,8 +256,6 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode
|
|||||||
$menu->add('/hrm/index.php?mainmenu=hrm&leftmenu=', $langs->trans("HRM"), 0, $showmode, $atarget, "hrm", '', 80, $id, $idsel, $classname);
|
$menu->add('/hrm/index.php?mainmenu=hrm&leftmenu=', $langs->trans("HRM"), 0, $showmode, $atarget, "hrm", '', 80, $id, $idsel, $classname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Tools
|
// Tools
|
||||||
$tmpentry=array(
|
$tmpentry=array(
|
||||||
'enabled'=>1,
|
'enabled'=>1,
|
||||||
@ -262,21 +274,6 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode
|
|||||||
$menu->add('/core/tools.php?mainmenu=tools&leftmenu=', $langs->trans("Tools"), 0, $showmode, $atarget, "tools", '', 90, $id, $idsel, $classname);
|
$menu->add('/core/tools.php?mainmenu=tools&leftmenu=', $langs->trans("Tools"), 0, $showmode, $atarget, "tools", '', 90, $id, $idsel, $classname);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Members
|
|
||||||
$tmpentry=array('enabled'=>(! empty($conf->adherent->enabled)),
|
|
||||||
'perms'=>(! empty($user->rights->adherent->lire)),
|
|
||||||
'module'=>'adherent');
|
|
||||||
$showmode=isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal);
|
|
||||||
if ($showmode)
|
|
||||||
{
|
|
||||||
$classname="";
|
|
||||||
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "members") { $classname='class="tmenusel"'; $_SESSION['idmenu']=''; }
|
|
||||||
else $classname = 'class="tmenu"';
|
|
||||||
$idsel='members';
|
|
||||||
|
|
||||||
$menu->add('/adherents/index.php?mainmenu=members&leftmenu=', $langs->trans("MenuMembers"), 0, $showmode, $atarget, "members", '', 100, $id, $idsel, $classname);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Show personalized menus
|
// Show personalized menus
|
||||||
$menuArbo = new Menubase($db,'eldy');
|
$menuArbo = new Menubase($db,'eldy');
|
||||||
$newTabMenu = $menuArbo->menuTopCharger('','',$type_user,'eldy',$tabMenu); // Return tabMenu with only top entries
|
$newTabMenu = $menuArbo->menuTopCharger('','',$type_user,'eldy',$tabMenu); // Return tabMenu with only top entries
|
||||||
@ -884,7 +881,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
{
|
{
|
||||||
global $mysoc;
|
global $mysoc;
|
||||||
|
|
||||||
$permtoshowmenu=((! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read) || (! empty($conf->loan->enabled) && $user->rights->loan->read) || (! empty($conf->banque->enabled) && $user->rights->banque->lire));
|
$permtoshowmenu=((! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && ! empty($user->rights->salaries->read)) || (! empty($conf->loan->enabled) && $user->rights->loan->read) || (! empty($conf->banque->enabled) && $user->rights->banque->lire));
|
||||||
$newmenu->add("/compta/charges/index.php?leftmenu=tax&mainmenu=billing",$langs->trans("MenuSpecialExpenses"), 0, $permtoshowmenu, '', $mainmenu, 'tax');
|
$newmenu->add("/compta/charges/index.php?leftmenu=tax&mainmenu=billing",$langs->trans("MenuSpecialExpenses"), 0, $permtoshowmenu, '', $mainmenu, 'tax');
|
||||||
|
|
||||||
// Social contributions
|
// Social contributions
|
||||||
@ -932,10 +929,10 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
if (! empty($conf->salaries->enabled))
|
if (! empty($conf->salaries->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("salaries");
|
$langs->load("salaries");
|
||||||
$newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=billing",$langs->trans("Salaries"),1,$user->rights->salaries->payment->read, '', $mainmenu, 'tax_salary');
|
$newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=billing",$langs->trans("Salaries"),1,$user->rights->salaries->read, '', $mainmenu, 'tax_salary');
|
||||||
if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->payment->write);
|
if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->write);
|
||||||
if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->payment->read);
|
if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read);
|
||||||
if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/stats/index.php?leftmenu=tax_salary", $langs->trans("Statistics"),2,$user->rights->salaries->payment->read);
|
if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/stats/index.php?leftmenu=tax_salary", $langs->trans("Statistics"),2,$user->rights->salaries->read);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loan
|
// Loan
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
|
* Copyright (C) 2018 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -1322,11 +1323,11 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
$unitfrequency = isset($this->cronjobs[$key]['unitfrequency'])?$this->cronjobs[$key]['unitfrequency']:'';
|
$unitfrequency = isset($this->cronjobs[$key]['unitfrequency'])?$this->cronjobs[$key]['unitfrequency']:'';
|
||||||
$status = isset($this->cronjobs[$key]['status'])?$this->cronjobs[$key]['status']:'';
|
$status = isset($this->cronjobs[$key]['status'])?$this->cronjobs[$key]['status']:'';
|
||||||
$priority = isset($this->cronjobs[$key]['priority'])?$this->cronjobs[$key]['priority']:'';
|
$priority = isset($this->cronjobs[$key]['priority'])?$this->cronjobs[$key]['priority']:'';
|
||||||
$test = isset($this->cronjobs[$key]['test'])?$this->cronjobs[$key]['test']:''; // Line must be visible
|
$test = isset($this->cronjobs[$key]['test'])?$this->cronjobs[$key]['test']:''; // Line must be enabled or not (so visible or not)
|
||||||
|
|
||||||
// Search if boxes def already present
|
// Search if boxes def already present
|
||||||
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."cronjob";
|
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."cronjob";
|
||||||
$sql.= " WHERE module_name = '".$this->db->escape($this->rights_class)."'";
|
$sql.= " WHERE module_name = '".$this->db->escape(empty($this->rights_class)?strtolower($this->name):$this->rights_class)."'";
|
||||||
if ($class) $sql.= " AND classesname = '".$this->db->escape($class)."'";
|
if ($class) $sql.= " AND classesname = '".$this->db->escape($class)."'";
|
||||||
if ($objectname) $sql.= " AND objectname = '".$this->db->escape($objectname)."'";
|
if ($objectname) $sql.= " AND objectname = '".$this->db->escape($objectname)."'";
|
||||||
if ($method) $sql.= " AND methodename = '".$this->db->escape($method)."'";
|
if ($method) $sql.= " AND methodename = '".$this->db->escape($method)."'";
|
||||||
@ -1352,7 +1353,7 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
if(is_int($status)){ $sql.= ' status,'; }
|
if(is_int($status)){ $sql.= ' status,'; }
|
||||||
$sql.= " entity, test)";
|
$sql.= " entity, test)";
|
||||||
$sql.= " VALUES (";
|
$sql.= " VALUES (";
|
||||||
$sql.= "'".$this->db->escape($this->rights_class)."', ";
|
$sql.= "'".$this->db->escape(empty($this->rights_class)?strtolower($this->name):$this->rights_class)."', ";
|
||||||
$sql.= "'".$this->db->idate($now)."', ";
|
$sql.= "'".$this->db->idate($now)."', ";
|
||||||
$sql.= "'".$this->db->idate($now)."', ";
|
$sql.= "'".$this->db->idate($now)."', ";
|
||||||
$sql.= "'".$this->db->escape($label)."', ";
|
$sql.= "'".$this->db->escape($label)."', ";
|
||||||
@ -1414,8 +1415,10 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
if (is_array($this->cronjobs))
|
if (is_array($this->cronjobs))
|
||||||
{
|
{
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."cronjob";
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."cronjob";
|
||||||
$sql.= " WHERE module_name = '".$this->db->escape($this->rights_class)."'";
|
$sql.= " WHERE module_name = '".$this->db->escape(empty($this->rights_class)?strtolower($this->name):$this->rights_class)."'";
|
||||||
$sql.= " AND entity = ".$conf->entity;
|
$sql.= " AND entity = ".$conf->entity;
|
||||||
|
$sql.= " AND test = 1"; // We delete on lines that are not set with a complete test that is '$conf->module->enabled' so when module is disabled, the cron is also removed.
|
||||||
|
// For crons declared with a '$conf->module->enabled', there is no need to delete the line, so we don't loose setup if we reenable module.
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::delete_cronjobs", LOG_DEBUG);
|
dol_syslog(get_class($this)."::delete_cronjobs", LOG_DEBUG);
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
@ -1792,7 +1795,7 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
$err=0;
|
$err=0;
|
||||||
|
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."rights_def";
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."rights_def";
|
||||||
$sql.= " WHERE module = '".$this->db->escape($this->rights_class)."'";
|
$sql.= " WHERE module = '".$this->db->escape(empty($this->rights_class)?strtolower($this->name):$this->rights_class)."'";
|
||||||
$sql.= " AND entity = ".$conf->entity;
|
$sql.= " AND entity = ".$conf->entity;
|
||||||
dol_syslog(get_class($this)."::delete_permissions", LOG_DEBUG);
|
dol_syslog(get_class($this)."::delete_permissions", LOG_DEBUG);
|
||||||
if (! $this->db->query($sql))
|
if (! $this->db->query($sql))
|
||||||
@ -1830,7 +1833,7 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
$menu->menu_handler='all';
|
$menu->menu_handler='all';
|
||||||
|
|
||||||
//$menu->module=strtolower($this->name); TODO When right_class will be same than module name
|
//$menu->module=strtolower($this->name); TODO When right_class will be same than module name
|
||||||
$menu->module=$this->rights_class;
|
$menu->module=empty($this->rights_class)?strtolower($this->name):$this->rights_class;
|
||||||
|
|
||||||
if (! $this->menu[$key]['fk_menu'])
|
if (! $this->menu[$key]['fk_menu'])
|
||||||
{
|
{
|
||||||
@ -1926,7 +1929,7 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
$err=0;
|
$err=0;
|
||||||
|
|
||||||
//$module=strtolower($this->name); TODO When right_class will be same than module name
|
//$module=strtolower($this->name); TODO When right_class will be same than module name
|
||||||
$module=$this->rights_class;
|
$module=empty($this->rights_class)?strtolower($this->name):$this->rights_class;
|
||||||
|
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."menu";
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."menu";
|
||||||
$sql.= " WHERE module = '".$this->db->escape($module)."'";
|
$sql.= " WHERE module = '".$this->db->escape($module)."'";
|
||||||
|
|||||||
@ -849,7 +849,7 @@ class pdf_einstein extends ModelePDFCommandes
|
|||||||
$pdf->SetXY($col1x, $tab2_top + 0);
|
$pdf->SetXY($col1x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
||||||
|
|
||||||
$total_ht = ($conf->multicurrency->enabled && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht);
|
$total_ht = (($conf->multicurrency->enabled && isset($object->mylticurrency_tx) && $object->mylticurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht);
|
||||||
$pdf->SetXY($col2x, $tab2_top + 0);
|
$pdf->SetXY($col2x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (! empty($object->remise)?$object->remise:0), 0, $outputlangs), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (! empty($object->remise)?$object->remise:0), 0, $outputlangs), 0, 'R', 1);
|
||||||
|
|
||||||
|
|||||||
@ -1079,7 +1079,7 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
$pdf->SetXY($col1x, $tab2_top + 0);
|
$pdf->SetXY($col1x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
||||||
|
|
||||||
$total_ht = ($conf->multicurrency->enabled && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht);
|
$total_ht = (($conf->multicurrency->enabled && isset($object->mylticurrency_tx) && $object->mylticurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht);
|
||||||
$pdf->SetXY($col2x, $tab2_top + 0);
|
$pdf->SetXY($col2x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($total_ht + (! empty($object->remise)?$object->remise:0)), 0, $outputlangs), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($total_ht + (! empty($object->remise)?$object->remise:0)), 0, $outputlangs), 0, 'R', 1);
|
||||||
|
|
||||||
@ -1304,7 +1304,6 @@ class pdf_crabe extends ModelePDFFactures
|
|||||||
}
|
}
|
||||||
|
|
||||||
$pdf->SetTextColor(0,0,0);
|
$pdf->SetTextColor(0,0,0);
|
||||||
|
|
||||||
$creditnoteamount=$object->getSumCreditNotesUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); // Warning, this also include excess received
|
$creditnoteamount=$object->getSumCreditNotesUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); // Warning, this also include excess received
|
||||||
$depositsamount=$object->getSumDepositsUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0);
|
$depositsamount=$object->getSumDepositsUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0);
|
||||||
//print "x".$creditnoteamount."-".$depositsamount;exit;
|
//print "x".$creditnoteamount."-".$depositsamount;exit;
|
||||||
|
|||||||
@ -349,12 +349,12 @@ class modAdherent extends DolibarrModules
|
|||||||
// Cronjobs
|
// Cronjobs
|
||||||
$this->cronjobs = array(
|
$this->cronjobs = array(
|
||||||
0=>array(
|
0=>array(
|
||||||
'label'=>'SendReminderForExpiredSubscription',
|
'label'=>'SendReminderForExpiredSubscriptionTitle',
|
||||||
'jobtype'=>'method', 'class'=>'adherents/class/adherent.class.php',
|
'jobtype'=>'method', 'class'=>'adherents/class/adherent.class.php',
|
||||||
'objectname'=>'Adherent',
|
'objectname'=>'Adherent',
|
||||||
'method'=>'sendReminderForExpiredSubscription',
|
'method'=>'sendReminderForExpiredSubscription',
|
||||||
'parameters'=>'10',
|
'parameters'=>'10',
|
||||||
'comment'=>'sendReminderForExpiredSubscription',
|
'comment'=>'SendReminderForExpiredSubscription',
|
||||||
'frequency'=>1,
|
'frequency'=>1,
|
||||||
'unitfrequency'=> 3600 * 24,
|
'unitfrequency'=> 3600 * 24,
|
||||||
'priority'=>50,
|
'priority'=>50,
|
||||||
|
|||||||
@ -89,7 +89,7 @@ class modAgenda extends DolibarrModules
|
|||||||
$resql = $this->db->query($sqlreadactions);
|
$resql = $this->db->query($sqlreadactions);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
while ($obj = $this->db->fetch_object($sqlreadactions))
|
while ($obj = $this->db->fetch_object($resql))
|
||||||
{
|
{
|
||||||
//if (preg_match('/_CREATE$/',$obj->code) && (! in_array($obj->code, array('COMPANY_CREATE','PRODUCT_CREATE','TASK_CREATE')))) continue; // We don't track such events (*_CREATE) by default, we prefer validation (except thirdparty/product/task creation because there is no validation).
|
//if (preg_match('/_CREATE$/',$obj->code) && (! in_array($obj->code, array('COMPANY_CREATE','PRODUCT_CREATE','TASK_CREATE')))) continue; // We don't track such events (*_CREATE) by default, we prefer validation (except thirdparty/product/task creation because there is no validation).
|
||||||
if (preg_match('/^TASK_/',$obj->code)) continue; // We don't track such events by default.
|
if (preg_match('/^TASK_/',$obj->code)) continue; // We don't track such events by default.
|
||||||
@ -113,7 +113,7 @@ class modAgenda extends DolibarrModules
|
|||||||
// Cronjobs
|
// Cronjobs
|
||||||
//------------
|
//------------
|
||||||
$this->cronjobs = array(
|
$this->cronjobs = array(
|
||||||
0=>array('label'=>'SendEmailsReminders', 'jobtype'=>'method', 'class'=>'comm/action/class/actioncomm.class.php', 'objectname'=>'ActionComm', 'method'=>'sendEmailsReminder', 'parameters'=>'', 'comment'=>'SendEMailsReminder', 'frequency'=>10, 'unitfrequency'=>60, 'priority'=>10, 'status'=>1, 'test'=>'1'),
|
0=>array('label'=>'SendEmailsReminders', 'jobtype'=>'method', 'class'=>'comm/action/class/actioncomm.class.php', 'objectname'=>'ActionComm', 'method'=>'sendEmailsReminder', 'parameters'=>'', 'comment'=>'SendEMailsReminder', 'frequency'=>10, 'unitfrequency'=>60, 'priority'=>10, 'status'=>1, 'test'=>'$conf->agenda->enabled'),
|
||||||
// 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24)
|
// 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -116,7 +116,7 @@ class modFacture extends DolibarrModules
|
|||||||
|
|
||||||
// Cronjobs
|
// Cronjobs
|
||||||
$this->cronjobs = array(
|
$this->cronjobs = array(
|
||||||
0=>array('label'=>'RecurringInvoices', 'jobtype'=>'method', 'class'=>'compta/facture/class/facture-rec.class.php', 'objectname'=>'FactureRec', 'method'=>'createRecurringInvoices', 'parameters'=>'', 'comment'=>'Generate recurring invoices', 'frequency'=>1, 'unitfrequency'=>3600 * 24, 'priority'=>50, 'status'=>1, 'test'=>true),
|
0=>array('label'=>'RecurringInvoices', 'jobtype'=>'method', 'class'=>'compta/facture/class/facture-rec.class.php', 'objectname'=>'FactureRec', 'method'=>'createRecurringInvoices', 'parameters'=>'', 'comment'=>'Generate recurring invoices', 'frequency'=>1, 'unitfrequency'=>3600 * 24, 'priority'=>50, 'status'=>1, 'test'=>'$conf->facture->enabled'),
|
||||||
// 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600)
|
// 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -50,7 +50,7 @@ class modSalaries extends DolibarrModules
|
|||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->numero = 510; // Perms from 501..519
|
$this->numero = 510; // Perms from 501..519
|
||||||
|
|
||||||
$this->family = "hr";
|
$this->family = "compta";
|
||||||
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
$this->name = preg_replace('/^mod/i','',get_class($this));
|
$this->name = preg_replace('/^mod/i','',get_class($this));
|
||||||
// Module description used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
// Module description used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
|
||||||
@ -97,55 +97,32 @@ class modSalaries extends DolibarrModules
|
|||||||
$r=0;
|
$r=0;
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->rights[$r][0] = 501;
|
$this->rights[$r][0] = 511;
|
||||||
$this->rights[$r][1] = 'Read employee contracts/salaries';
|
$this->rights[$r][1] = 'Read payments of employee salaries';
|
||||||
$this->rights[$r][2] = 'r';
|
$this->rights[$r][2] = 'r';
|
||||||
$this->rights[$r][3] = 0;
|
$this->rights[$r][3] = 0;
|
||||||
$this->rights[$r][4] = 'read';
|
$this->rights[$r][4] = 'read';
|
||||||
$this->rights[$r][5] = '';
|
$this->rights[$r][5] = '';
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->rights[$r][0] = 502;
|
$this->rights[$r][0] = 512;
|
||||||
$this->rights[$r][1] = 'Create/modify employee contracts/salaries';
|
$this->rights[$r][1] = 'Create/modify payments of empoyee salaries';
|
||||||
$this->rights[$r][2] = 'w';
|
$this->rights[$r][2] = 'w';
|
||||||
$this->rights[$r][3] = 0;
|
$this->rights[$r][3] = 0;
|
||||||
$this->rights[$r][4] = 'write';
|
$this->rights[$r][4] = 'write';
|
||||||
$this->rights[$r][5] = '';
|
$this->rights[$r][5] = '';
|
||||||
|
|
||||||
$r++;
|
|
||||||
$this->rights[$r][0] = 511;
|
|
||||||
$this->rights[$r][1] = 'Read payment of salaries';
|
|
||||||
$this->rights[$r][2] = 'w';
|
|
||||||
$this->rights[$r][3] = 0;
|
|
||||||
$this->rights[$r][4] = 'payment';
|
|
||||||
$this->rights[$r][5] = 'read';
|
|
||||||
|
|
||||||
$r++;
|
|
||||||
$this->rights[$r][0] = 512;
|
|
||||||
$this->rights[$r][1] = 'Create/modify payment of salaries';
|
|
||||||
$this->rights[$r][2] = 'w';
|
|
||||||
$this->rights[$r][3] = 0;
|
|
||||||
$this->rights[$r][4] = 'payment';
|
|
||||||
$this->rights[$r][5] = 'write';
|
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->rights[$r][0] = 514;
|
$this->rights[$r][0] = 514;
|
||||||
$this->rights[$r][1] = 'Delete contracts/salaries';
|
$this->rights[$r][1] = 'Delete payments of employee salary';
|
||||||
$this->rights[$r][2] = 'd';
|
$this->rights[$r][2] = 'd';
|
||||||
$this->rights[$r][3] = 0;
|
$this->rights[$r][3] = 0;
|
||||||
$this->rights[$r][4] = 'delete';
|
$this->rights[$r][4] = 'delete';
|
||||||
$this->rights[$r][5] = '';
|
$this->rights[$r][5] = '';
|
||||||
|
|
||||||
$this->rights[$r][0] = 515;
|
|
||||||
$this->rights[$r][1] = 'Read all salaries';
|
|
||||||
$this->rights[$r][2] = 'r';
|
|
||||||
$this->rights[$r][3] = 0;
|
|
||||||
$this->rights[$r][4] = 'payment';
|
|
||||||
$this->rights[$r][5] = 'readall';
|
|
||||||
|
|
||||||
$r++;
|
$r++;
|
||||||
$this->rights[$r][0] = 517;
|
$this->rights[$r][0] = 517;
|
||||||
$this->rights[$r][1] = 'Export employee contracts and salaries payments';
|
$this->rights[$r][1] = 'Export payments of employee salaries';
|
||||||
$this->rights[$r][2] = 'r';
|
$this->rights[$r][2] = 'r';
|
||||||
$this->rights[$r][3] = 0;
|
$this->rights[$r][3] = 0;
|
||||||
$this->rights[$r][4] = 'export';
|
$this->rights[$r][4] = 'export';
|
||||||
|
|||||||
@ -42,7 +42,7 @@ class modService extends DolibarrModules
|
|||||||
*/
|
*/
|
||||||
function __construct($db)
|
function __construct($db)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf, $mysoc;
|
||||||
|
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->numero = 53;
|
$this->numero = 53;
|
||||||
|
|||||||
@ -314,7 +314,7 @@ class modSociete extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' AND (sc.fk_user = '.$user->id.' ';
|
$this->export_sql_end[$r] .=' AND (sc.fk_user = '.$user->id.' ';
|
||||||
if (! empty($conf->global->SOCIETE_EXPORT_SUBORDINATES_CHILDS)) {
|
if (! empty($conf->global->SOCIETE_EXPORT_SUBORDINATES_CHILDS)) {
|
||||||
$subordinatesids = $user->getAllChildIds();
|
$subordinatesids = $user->getAllChildIds();
|
||||||
$this->export_sql_end[$r] .=count($subronidatesids)>0 ? ' OR (sc.fk_user IN ('.implode(',',$subronidatesids).')' : '';
|
$this->export_sql_end[$r] .=count($subordinatesids)>0 ? ' OR (sc.fk_user IN ('.implode(',',$subordinatesids).')' : '';
|
||||||
}
|
}
|
||||||
$this->export_sql_end[$r] .=')';
|
$this->export_sql_end[$r] .=')';
|
||||||
}
|
}
|
||||||
@ -365,7 +365,7 @@ class modSociete extends DolibarrModules
|
|||||||
$this->export_sql_end[$r] .=' AND (sc.fk_user = '.$user->id.' ';
|
$this->export_sql_end[$r] .=' AND (sc.fk_user = '.$user->id.' ';
|
||||||
if (! empty($conf->global->SOCIETE_EXPORT_SUBORDINATES_CHILDS)) {
|
if (! empty($conf->global->SOCIETE_EXPORT_SUBORDINATES_CHILDS)) {
|
||||||
$subordinatesids = $user->getAllChildIds();
|
$subordinatesids = $user->getAllChildIds();
|
||||||
$this->export_sql_end[$r] .=count($subronidatesids)>0 ? ' OR (sc.fk_user IN ('.implode(',',$subronidatesids).')' : '';
|
$this->export_sql_end[$r] .=count($subordinatesids)>0 ? ' OR (sc.fk_user IN ('.implode(',',$subordinatesids).')' : '';
|
||||||
}
|
}
|
||||||
$this->export_sql_end[$r] .=')';
|
$this->export_sql_end[$r] .=')';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,7 +82,7 @@ class modSyslog extends DolibarrModules
|
|||||||
|
|
||||||
// Cronjobs
|
// Cronjobs
|
||||||
$this->cronjobs = array(
|
$this->cronjobs = array(
|
||||||
0=>array('label'=>'CompressSyslogs', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'compressSyslogs', 'parameters'=>'', 'comment'=>'Compress and archive log files', 'frequency'=>1, 'unitfrequency'=> 3600 * 24, 'priority'=>50, 'status'=>0, 'test'=>true),
|
0=>array('label'=>'CompressSyslogs', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'compressSyslogs', 'parameters'=>'', 'comment'=>'Compress and archive log files. Warning: batch must be run with same account than your web server to avoid to get log files with different owner than required by web server. Another solution is to set web server Operating System group as the group of directory documents and set GROUP permission "rws" on this directory so log files will always have the group and permissions of the web server Operating System group', 'frequency'=>1, 'unitfrequency'=> 3600 * 24, 'priority'=>50, 'status'=>0, 'test'=>true),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -130,12 +130,9 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
$array_key.'_statut'=>$object->getLibStatut()
|
$array_key.'_statut'=>$object->getLibStatut()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Retrieve extrafields
|
|
||||||
$extrafieldkey=$object->element;
|
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
$extrafields = new ExtraFields($this->db);
|
$extrafields = new ExtraFields($this->db);
|
||||||
$extralabels = $extrafields->fetch_name_optionals_label($extrafieldkey,true);
|
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element,true);
|
||||||
$object->fetch_optionals();
|
$object->fetch_optionals();
|
||||||
|
|
||||||
$resarray = $this->fill_substitutionarray_with_extrafields($object,$resarray,$extrafields,$array_key,$outputlangs);
|
$resarray = $this->fill_substitutionarray_with_extrafields($object,$resarray,$extrafields,$array_key,$outputlangs);
|
||||||
@ -154,7 +151,7 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
return array(
|
$resarray = array(
|
||||||
'task_ref'=>$task->ref,
|
'task_ref'=>$task->ref,
|
||||||
'task_fk_project'=>$task->fk_project,
|
'task_fk_project'=>$task->fk_project,
|
||||||
'task_projectref'=>$task->projectref,
|
'task_projectref'=>$task->projectref,
|
||||||
@ -163,6 +160,7 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
'task_description'=>$task->description,
|
'task_description'=>$task->description,
|
||||||
'task_fk_parent'=>$task->fk_parent,
|
'task_fk_parent'=>$task->fk_parent,
|
||||||
'task_duration'=>$task->duration,
|
'task_duration'=>$task->duration,
|
||||||
|
'task_duration_hour'=>convertSecondToTime($task->duration,'all'),
|
||||||
'task_progress'=>$task->progress,
|
'task_progress'=>$task->progress,
|
||||||
'task_public'=>$task->public,
|
'task_public'=>$task->public,
|
||||||
'task_date_start'=>dol_print_date($task->date_start,'day'),
|
'task_date_start'=>dol_print_date($task->date_start,'day'),
|
||||||
@ -170,6 +168,16 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
'task_note_private'=>$task->note_private,
|
'task_note_private'=>$task->note_private,
|
||||||
'task_note_public'=>$task->note_public
|
'task_note_public'=>$task->note_public
|
||||||
);
|
);
|
||||||
|
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||||
|
$extrafields = new ExtraFields($this->db);
|
||||||
|
$extralabels = $extrafields->fetch_name_optionals_label($task->table_element,true);
|
||||||
|
$task->fetch_optionals($task->id,$extralabels);
|
||||||
|
|
||||||
|
$resarray = $this->fill_substitutionarray_with_extrafields($task,$resarray,$extrafields,'task',$outputlangs);
|
||||||
|
|
||||||
|
return $resarray;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -310,7 +318,10 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
'tasktime_fk_user'=>$tasktime['fk_user'],
|
'tasktime_fk_user'=>$tasktime['fk_user'],
|
||||||
'tasktime_user_name'=>$tasktime['name'],
|
'tasktime_user_name'=>$tasktime['name'],
|
||||||
'tasktime_user_first'=>$tasktime['firstname'],
|
'tasktime_user_first'=>$tasktime['firstname'],
|
||||||
'tasktime_fullcivname'=>$tasktime['fullcivname']
|
'tasktime_fullcivname'=>$tasktime['fullcivname'],
|
||||||
|
'tasktime_amountht'=>$tasktime['amountht'],
|
||||||
|
'tasktime_amountttc'=>$tasktime['amountttc'],
|
||||||
|
'tasktime_thm'=>$tasktime['thm'],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -691,7 +702,7 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
|
|
||||||
//Time ressources
|
//Time ressources
|
||||||
$sql = "SELECT t.rowid, t.task_date, t.task_duration, t.fk_user, t.note";
|
$sql = "SELECT t.rowid, t.task_date, t.task_duration, t.fk_user, t.note";
|
||||||
$sql.= ", u.lastname, u.firstname";
|
$sql.= ", u.lastname, u.firstname, t.thm";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t";
|
||||||
$sql .= " , ".MAIN_DB_PREFIX."user as u";
|
$sql .= " , ".MAIN_DB_PREFIX."user as u";
|
||||||
$sql .= " WHERE t.fk_task =".$task->id;
|
$sql .= " WHERE t.fk_task =".$task->id;
|
||||||
@ -705,6 +716,35 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
$tasks = array();
|
$tasks = array();
|
||||||
$listlinestasktime = $listlines->__get('taskstimes');
|
$listlinestasktime = $listlines->__get('taskstimes');
|
||||||
|
if (empty($num)) {
|
||||||
|
$row['rowid']='';
|
||||||
|
$row['task_date']='';
|
||||||
|
$row['task_duration']='';
|
||||||
|
$row['$tasktime']='';
|
||||||
|
$row['note']='';
|
||||||
|
$row['fk_user']='';
|
||||||
|
$row['name']='';
|
||||||
|
$row['firstname']='';
|
||||||
|
$row['fullcivname']='';
|
||||||
|
$row['amountht']='';
|
||||||
|
$row['amountttc']='';
|
||||||
|
$row['thm']='';
|
||||||
|
$tmparray=$this->get_substitutionarray_taskstime($row,$outputlangs);
|
||||||
|
foreach($tmparray as $key => $val)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$listlinestasktime->setVars($key, $val, true, 'UTF-8');
|
||||||
|
}
|
||||||
|
catch(OdfException $e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
catch(SegmentException $e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$listlinestasktime->merge();
|
||||||
|
}
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$row = $this->db->fetch_array($resql);
|
$row = $this->db->fetch_array($resql);
|
||||||
@ -716,6 +756,16 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
$row['fullcivname']='';
|
$row['fullcivname']='';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($row['thm'])) {
|
||||||
|
$row['amountht']=($row['task_duration'] / 3600) * $row['thm'];
|
||||||
|
$defaultvat = get_default_tva($mysoc, $mysoc);
|
||||||
|
$row['amountttc']=price2num($row['amountht'] * (1 + ($defaultvat / 100)),'MT');;
|
||||||
|
} else {
|
||||||
|
$row['amountht']=0;
|
||||||
|
$row['amountttc']=0;
|
||||||
|
$row['thm']=0;
|
||||||
|
}
|
||||||
|
|
||||||
$tmparray=$this->get_substitutionarray_taskstime($row,$outputlangs);
|
$tmparray=$this->get_substitutionarray_taskstime($row,$outputlangs);
|
||||||
|
|
||||||
foreach($tmparray as $key => $val)
|
foreach($tmparray as $key => $val)
|
||||||
@ -877,60 +927,114 @@ class doc_generic_project_odt extends ModelePDFProjects
|
|||||||
|
|
||||||
//List of referent
|
//List of referent
|
||||||
|
|
||||||
$listofreferent=array(
|
$listofreferent = array(
|
||||||
'propal'=>array(
|
'propal' => array(
|
||||||
'title'=>"ListProposalsAssociatedProject",
|
'title' => "ListProposalsAssociatedProject",
|
||||||
'class'=>'Propal',
|
'class' => 'Propal',
|
||||||
'table'=>'propal',
|
'table' => 'propal',
|
||||||
'test'=>$conf->propal->enabled && $user->rights->propale->lire),
|
'test' => $conf->propal->enabled && $user->rights->propale->lire
|
||||||
'order'=>array(
|
),
|
||||||
'title'=>"ListOrdersAssociatedProject",
|
'order' => array(
|
||||||
'class'=>'Commande',
|
'title' => "ListOrdersAssociatedProject",
|
||||||
'table'=>'commande',
|
'class' => 'Commande',
|
||||||
'test'=>$conf->commande->enabled && $user->rights->commande->lire),
|
'table' => 'commande',
|
||||||
'invoice'=>array(
|
'test' => $conf->commande->enabled && $user->rights->commande->lire
|
||||||
'title'=>"ListInvoicesAssociatedProject",
|
),
|
||||||
'class'=>'Facture',
|
'invoice' => array(
|
||||||
'table'=>'facture',
|
'title' => "ListInvoicesAssociatedProject",
|
||||||
'test'=>$conf->facture->enabled && $user->rights->facture->lire),
|
'class' => 'Facture',
|
||||||
'invoice_predefined'=>array(
|
'table' => 'facture',
|
||||||
'title'=>"ListPredefinedInvoicesAssociatedProject",
|
'test' => $conf->facture->enabled && $user->rights->facture->lire
|
||||||
'class'=>'FactureRec',
|
),
|
||||||
'table'=>'facture_rec',
|
'invoice_predefined' => array(
|
||||||
'test'=>$conf->facture->enabled && $user->rights->facture->lire),
|
'title' => "ListPredefinedInvoicesAssociatedProject",
|
||||||
'order_supplier'=>array(
|
'class' => 'FactureRec',
|
||||||
'title'=>"ListSupplierOrdersAssociatedProject",
|
'table' => 'facture_rec',
|
||||||
'table'=>'commande_fournisseur',
|
'test' => $conf->facture->enabled && $user->rights->facture->lire
|
||||||
'class'=>'CommandeFournisseur',
|
),
|
||||||
'test'=>$conf->fournisseur->enabled && $user->rights->fournisseur->commande->lire),
|
'proposal_supplier' => array(
|
||||||
'invoice_supplier'=>array(
|
'title' => "ListSupplierProposalsAssociatedProject",
|
||||||
'title'=>"ListSupplierInvoicesAssociatedProject",
|
'class' => 'SupplierProposal',
|
||||||
'table'=>'facture_fourn',
|
'table' => 'supplier_proposal',
|
||||||
'class'=>'FactureFournisseur',
|
'test' => $conf->supplier_proposal->enabled && $user->rights->supplier_proposal->lire
|
||||||
'test'=>$conf->fournisseur->enabled && $user->rights->fournisseur->facture->lire),
|
),
|
||||||
'contract'=>array(
|
'order_supplier' => array(
|
||||||
'title'=>"ListContractAssociatedProject",
|
'title' => "ListSupplierOrdersAssociatedProject",
|
||||||
'class'=>'Contrat',
|
'table' => 'commande_fournisseur',
|
||||||
'table'=>'contrat',
|
'class' => 'CommandeFournisseur',
|
||||||
'test'=>$conf->contrat->enabled && $user->rights->contrat->lire),
|
'test' => $conf->fournisseur->enabled && $user->rights->fournisseur->commande->lire
|
||||||
'intervention'=>array(
|
),
|
||||||
'title'=>"ListFichinterAssociatedProject",
|
'invoice_supplier' => array(
|
||||||
'class'=>'Fichinter',
|
'title' => "ListSupplierInvoicesAssociatedProject",
|
||||||
'table'=>'fichinter',
|
'table' => 'facture_fourn',
|
||||||
'disableamount'=>1,
|
'class' => 'FactureFournisseur',
|
||||||
'test'=>$conf->ficheinter->enabled && $user->rights->ficheinter->lire),
|
'test' => $conf->fournisseur->enabled && $user->rights->fournisseur->facture->lire
|
||||||
'trip'=>array(
|
),
|
||||||
'title'=>"ListTripAssociatedProject",
|
'contract' => array(
|
||||||
'class'=>'Deplacement',
|
'title' => "ListContractAssociatedProject",
|
||||||
'table'=>'deplacement',
|
'class' => 'Contrat',
|
||||||
'disableamount'=>1,
|
'table' => 'contrat',
|
||||||
'test'=>$conf->deplacement->enabled && $user->rights->deplacement->lire),
|
'test' => $conf->contrat->enabled && $user->rights->contrat->lire
|
||||||
'agenda'=>array(
|
),
|
||||||
'title'=>"ListActionsAssociatedProject",
|
'intervention' => array(
|
||||||
'class'=>'ActionComm',
|
'title' => "ListFichinterAssociatedProject",
|
||||||
'table'=>'actioncomm',
|
'class' => 'Fichinter',
|
||||||
'disableamount'=>1,
|
'table' => 'fichinter',
|
||||||
'test'=>$conf->agenda->enabled && $user->rights->agenda->allactions->lire)
|
'disableamount' => 1,
|
||||||
|
'test' => $conf->ficheinter->enabled && $user->rights->ficheinter->lire
|
||||||
|
),
|
||||||
|
'shipping' => array(
|
||||||
|
'title' => "ListShippingAssociatedProject",
|
||||||
|
'class' => 'Expedition',
|
||||||
|
'table' => 'expedition',
|
||||||
|
'disableamount' => 1,
|
||||||
|
'test' => $conf->expedition->enabled && $user->rights->expedition->lire
|
||||||
|
),
|
||||||
|
'trip' => array(
|
||||||
|
'title' => "ListTripAssociatedProject",
|
||||||
|
'class' => 'Deplacement',
|
||||||
|
'table' => 'deplacement',
|
||||||
|
'disableamount' => 1,
|
||||||
|
'test' => $conf->deplacement->enabled && $user->rights->deplacement->lire
|
||||||
|
),
|
||||||
|
'expensereport' => array(
|
||||||
|
'title' => "ListExpenseReportsAssociatedProject",
|
||||||
|
'class' => 'ExpenseReportLine',
|
||||||
|
'table' => 'expensereport_det',
|
||||||
|
'test' => $conf->expensereport->enabled && $user->rights->expensereport->lire
|
||||||
|
),
|
||||||
|
'donation' => array(
|
||||||
|
'title' => "ListDonationsAssociatedProject",
|
||||||
|
'class' => 'Don',
|
||||||
|
'table' => 'don',
|
||||||
|
'test' => $conf->don->enabled && $user->rights->don->lire
|
||||||
|
),
|
||||||
|
'loan' => array(
|
||||||
|
'title' => "ListLoanAssociatedProject",
|
||||||
|
'class' => 'Loan',
|
||||||
|
'table' => 'loan',
|
||||||
|
'test' => $conf->loan->enabled && $user->rights->loan->read
|
||||||
|
),
|
||||||
|
'chargesociales' => array(
|
||||||
|
'title' => "ListSocialContributionAssociatedProject",
|
||||||
|
'class' => 'ChargeSociales',
|
||||||
|
'table' => 'chargesociales',
|
||||||
|
'urlnew' => DOL_URL_ROOT . '/compta/sociales/card.php?action=create&projectid=' . $id,
|
||||||
|
'test' => $conf->tax->enabled && $user->rights->tax->charges->lire
|
||||||
|
),
|
||||||
|
'stock_mouvement' => array(
|
||||||
|
'title' => "ListMouvementStockProject",
|
||||||
|
'class' => 'MouvementStock',
|
||||||
|
'table' => 'stock_mouvement',
|
||||||
|
'test' => ($conf->stock->enabled && $user->rights->stock->mouvement->lire && ! empty($conf->global->STOCK_MOVEMENT_INTO_PROJECT_OVERVIEW))
|
||||||
|
),
|
||||||
|
'agenda' => array(
|
||||||
|
'title' => "ListActionsAssociatedProject",
|
||||||
|
'class' => 'ActionComm',
|
||||||
|
'table' => 'actioncomm',
|
||||||
|
'disableamount' => 1,
|
||||||
|
'test' => $conf->agenda->enabled && $user->rights->agenda->allactions->lire
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
//Insert reference
|
//Insert reference
|
||||||
|
|||||||
@ -1002,7 +1002,7 @@ class pdf_azur extends ModelePDFPropales
|
|||||||
$pdf->SetXY($col1x, $tab2_top + 0);
|
$pdf->SetXY($col1x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
||||||
|
|
||||||
$total_ht = ($conf->multicurrency->enabled && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht);
|
$total_ht = (($conf->multicurrency->enabled && isset($object->mylticurrency_tx) && $object->mylticurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht);
|
||||||
$pdf->SetXY($col2x, $tab2_top + 0);
|
$pdf->SetXY($col2x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (! empty($object->remise)?$object->remise:0), 0, $outputlangs), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (! empty($object->remise)?$object->remise:0), 0, $outputlangs), 0, 'R', 1);
|
||||||
|
|
||||||
|
|||||||
@ -591,7 +591,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
|
|||||||
$pdf->SetXY($col1x, $tab2_top + 0);
|
$pdf->SetXY($col1x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
||||||
|
|
||||||
$total_ht = ($conf->multicurrency->enabled && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht);
|
$total_ht = (($conf->multicurrency->enabled && isset($object->mylticurrency_tx) && $object->mylticurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht);
|
||||||
$pdf->SetXY($col2x, $tab2_top + 0);
|
$pdf->SetXY($col2x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + $object->remise), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + $object->remise), 0, 'R', 1);
|
||||||
|
|
||||||
|
|||||||
@ -763,7 +763,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
|||||||
$pdf->SetXY($col1x, $tab2_top + 0);
|
$pdf->SetXY($col1x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1);
|
||||||
|
|
||||||
$total_ht = ($conf->multicurrency->enabled && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht);
|
$total_ht = (($conf->multicurrency->enabled && isset($object->mylticurrency_tx) && $object->mylticurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht);
|
||||||
$pdf->SetXY($col2x, $tab2_top + 0);
|
$pdf->SetXY($col2x, $tab2_top + 0);
|
||||||
$pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (! empty($object->remise)?$object->remise:0)), 0, 'R', 1);
|
$pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (! empty($object->remise)?$object->remise:0)), 0, 'R', 1);
|
||||||
|
|
||||||
|
|||||||
@ -260,13 +260,13 @@ $domData .= ' data-product_type="'.$line->product_type.'"';
|
|||||||
<?php if ($line->special_code == 3) { ?>
|
<?php if ($line->special_code == 3) { ?>
|
||||||
<td align="right" class="linecoloption nowrap"><?php $coldisplay++; ?><?php echo $langs->trans('Option'); ?></td>
|
<td align="right" class="linecoloption nowrap"><?php $coldisplay++; ?><?php echo $langs->trans('Option'); ?></td>
|
||||||
<?php } else { ?>
|
<?php } else { ?>
|
||||||
<td align="right" class="liencolht nowrap"><?php $coldisplay++; ?><?php echo price($line->total_ht); ?></td>
|
<td align="right" class="linecolht nowrap"><?php $coldisplay++; ?><?php echo price($line->total_ht); ?></td>
|
||||||
<?php if (!empty($conf->multicurrency->enabled) && $this->multicurrency_code != $conf->currency) { ?>
|
<?php if (!empty($conf->multicurrency->enabled) && $this->multicurrency_code != $conf->currency) { ?>
|
||||||
<td align="right" class="linecolutotalht_currency nowrap"><?php $coldisplay++; ?><?php echo price($line->multicurrency_total_ht); ?></td>
|
<td align="right" class="linecolutotalht_currency nowrap"><?php $coldisplay++; ?><?php echo price($line->multicurrency_total_ht); ?></td>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php if ($outputalsopricetotalwithtax) { ?>
|
<?php if ($outputalsopricetotalwithtax) { ?>
|
||||||
<td align="right" class="liencolht nowrap"><?php $coldisplay++; ?><?php echo price($line->total_ttc); ?></td>
|
<td align="right" class="linecolht nowrap"><?php $coldisplay++; ?><?php echo price($line->total_ttc); ?></td>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -134,7 +134,7 @@ class InterfaceStripe
|
|||||||
$servicestatus = 1;
|
$servicestatus = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If customer is linked to Strip, we update/delete Stripe too
|
// If customer is linked to Stripe, we update/delete Stripe too
|
||||||
if ($action == 'COMPANY_MODIFY') {
|
if ($action == 'COMPANY_MODIFY') {
|
||||||
dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id);
|
dol_syslog("Trigger '" . $this->name . "' for action '$action' launched by " . __FILE__ . ". id=" . $object->id);
|
||||||
|
|
||||||
@ -170,12 +170,17 @@ class InterfaceStripe
|
|||||||
$stripeacc = $stripe->getStripeAccount($service); // No need of network access for this
|
$stripeacc = $stripe->getStripeAccount($service); // No need of network access for this
|
||||||
|
|
||||||
$customer = $stripe->customerStripe($object, $stripeacc, $servicestatus);
|
$customer = $stripe->customerStripe($object, $stripeacc, $servicestatus);
|
||||||
if ($customer) {
|
if ($customer)
|
||||||
|
{
|
||||||
$customer->delete();
|
$customer->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."societe_account";
|
||||||
|
$sql.= " WHERE site='stripe' AND fk_soc = " . $object->id;
|
||||||
|
$this->db->query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If payment mode is linked to Strip, we update/delete Stripe too
|
// If payment mode is linked to Stripee, we update/delete Stripe too
|
||||||
if ($action == 'COMPANYPAYMENTMODE_MODIFY' && $object->type == 'card') {
|
if ($action == 'COMPANYPAYMENTMODE_MODIFY' && $object->type == 'card') {
|
||||||
|
|
||||||
// For creation of credit card, we do not create in Stripe automatically
|
// For creation of credit card, we do not create in Stripe automatically
|
||||||
|
|||||||
@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT."/core/class/html.formcron.class.php";
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/cron.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/cron.lib.php';
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array('admin', 'cron'));
|
$langs->loadLangs(array('admin', 'cron', 'members'));
|
||||||
|
|
||||||
if (!$user->rights->cron->create) accessforbidden();
|
if (!$user->rights->cron->create) accessforbidden();
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/cron/class/cronjob.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/cron.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/cron.lib.php';
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("admin","cron","bills"));
|
$langs->loadLangs(array("admin","cron","bills","members"));
|
||||||
|
|
||||||
if (!$user->rights->cron->read) accessforbidden();
|
if (!$user->rights->cron->read) accessforbidden();
|
||||||
|
|
||||||
@ -355,7 +355,7 @@ else
|
|||||||
print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_setup', 0, $newcardbutton, '', $limit);
|
print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_setup', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
|
|
||||||
print $langs->trans('CronInfo').'<br>';
|
print '<span class="opacitymedium">'.$langs->trans('CronInfo').'</span><br>';
|
||||||
|
|
||||||
$text =$langs->trans("HoursOnThisPageAreOnServerTZ").' '.$stringcurrentdate.'<br>';
|
$text =$langs->trans("HoursOnThisPageAreOnServerTZ").' '.$stringcurrentdate.'<br>';
|
||||||
if (! empty($conf->global->CRON_WARNING_DELAY_HOURS)) $text.=$langs->trans("WarningCronDelayed", $conf->global->CRON_WARNING_DELAY_HOURS);
|
if (! empty($conf->global->CRON_WARNING_DELAY_HOURS)) $text.=$langs->trans("WarningCronDelayed", $conf->global->CRON_WARNING_DELAY_HOURS);
|
||||||
|
|||||||
1
htdocs/dav/index.html
Normal file
1
htdocs/dav/index.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
||||||
@ -9,7 +9,7 @@
|
|||||||
* Copyright (C) 2014 Cedric GROSS <c.gross@kreiz-it.fr>
|
* Copyright (C) 2014 Cedric GROSS <c.gross@kreiz-it.fr>
|
||||||
* Copyright (C) 2014-2017 Francis Appels <francis.appels@yahoo.com>
|
* Copyright (C) 2014-2017 Francis Appels <francis.appels@yahoo.com>
|
||||||
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
|
* Copyright (C) 2015 Claudio Aschieri <c.aschieri@19.coop>
|
||||||
* Copyright (C) 2016 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2016-2018 Ferran Marcet <fmarcet@2byte.es>
|
||||||
* Copyright (C) 2016 Yasser Carreón <yacasia@gmail.com>
|
* Copyright (C) 2016 Yasser Carreón <yacasia@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -1041,7 +1041,7 @@ if ($action == 'create')
|
|||||||
if ($object->fetch_optionals() > 0) {
|
if ($object->fetch_optionals() > 0) {
|
||||||
$expe->array_options = array_merge($expe->array_options, $object->array_options);
|
$expe->array_options = array_merge($expe->array_options, $object->array_options);
|
||||||
}
|
}
|
||||||
print $object->showOptionals($extrafields, 'edit');
|
print $expe->showOptionals($extrafields, 'edit');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -313,7 +313,7 @@ class Expedition extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Actions on extra fields
|
// Actions on extra fields
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))
|
||||||
{
|
{
|
||||||
$result=$this->insertExtraFields();
|
$result=$this->insertExtraFields();
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
@ -541,8 +541,7 @@ class Expedition extends CommonObject
|
|||||||
*/
|
*/
|
||||||
$result=$this->fetch_thirdparty();
|
$result=$this->fetch_thirdparty();
|
||||||
|
|
||||||
// Retreive all extrafield
|
// Retreive extrafields
|
||||||
// fetch optionals attributes and labels
|
|
||||||
$this->fetch_optionals();
|
$this->fetch_optionals();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2412,7 +2411,8 @@ class ExpeditionLigne extends CommonObjectLine
|
|||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."expeditiondet");
|
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."expeditiondet");
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
|
||||||
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))
|
||||||
{
|
{
|
||||||
$result=$this->insertExtraFields();
|
$result=$this->insertExtraFields();
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
|
|||||||
@ -139,7 +139,7 @@ class ExpenseReport extends CommonObject
|
|||||||
// List of language codes for status
|
// List of language codes for status
|
||||||
$this->statuts_short = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
|
$this->statuts_short = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
|
||||||
$this->statuts = array(0 => 'Draft', 2 => 'ValidatedWaitingApproval', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
|
$this->statuts = array(0 => 'Draft', 2 => 'ValidatedWaitingApproval', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
|
||||||
$this->statuts_logo = array(0 => 'statut0', 2 => 'statut1', 4 => 'statut5', 5 => 'statut3', 6 => 'statut6', 99 => 'statut8');
|
$this->statuts_logo = array(0 => 'statut0', 2 => 'statut1', 4 => 'statut5', 5 => 'statut3', 6 => 'statut6', 99 => 'statut5');
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -222,7 +222,7 @@ class Fichinter extends CommonObject
|
|||||||
if (! $resql) $error++;
|
if (! $resql) $error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))
|
||||||
{
|
{
|
||||||
$result=$this->insertExtraFields();
|
$result=$this->insertExtraFields();
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
@ -278,6 +278,7 @@ class Fichinter extends CommonObject
|
|||||||
*/
|
*/
|
||||||
function update($user, $notrigger=0)
|
function update($user, $notrigger=0)
|
||||||
{
|
{
|
||||||
|
global $conf;
|
||||||
if (! is_numeric($this->duration)) {
|
if (! is_numeric($this->duration)) {
|
||||||
$this->duration = 0;
|
$this->duration = 0;
|
||||||
}
|
}
|
||||||
@ -285,6 +286,8 @@ class Fichinter extends CommonObject
|
|||||||
$this->fk_project = 0;
|
$this->fk_project = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."fichinter SET ";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."fichinter SET ";
|
||||||
@ -299,8 +302,16 @@ class Fichinter extends CommonObject
|
|||||||
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
||||||
if ($this->db->query($sql))
|
if ($this->db->query($sql))
|
||||||
{
|
{
|
||||||
|
if (! $error && empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
|
||||||
|
{
|
||||||
|
$result=$this->insertExtraFields();
|
||||||
|
if ($result < 0)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (! $notrigger)
|
if (! $error && ! $notrigger)
|
||||||
{
|
{
|
||||||
// Call trigger
|
// Call trigger
|
||||||
$result=$this->call_trigger('FICHINTER_MODIFY',$user);
|
$result=$this->call_trigger('FICHINTER_MODIFY',$user);
|
||||||
@ -372,8 +383,7 @@ class Fichinter extends CommonObject
|
|||||||
|
|
||||||
if ($this->statut == 0) $this->brouillon = 1;
|
if ($this->statut == 0) $this->brouillon = 1;
|
||||||
|
|
||||||
// Retreive all extrafield
|
// Retreive extrafields
|
||||||
// fetch optionals attributes and labels
|
|
||||||
$this->fetch_optionals();
|
$this->fetch_optionals();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user