diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 104c0215c2f..0fe47b9d837 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -987,6 +987,11 @@ if (empty($reshook)) if (GETPOST('model')) { $object->setDocModel($user, GETPOST('model')); } + if (GETPOST('fk_bank')) { // this field may come from an external module + $object->fk_bank = GETPOST('fk_bank'); + } else { + $object->fk_bank = $object->fk_account; + } // Define output language $outputlangs = $langs; diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 5f57170eef5..9d17d65910d 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -96,6 +96,7 @@ $permissionnote = $user->rights->commande->creer; // Used by the include of acti $permissionedit = $user->rights->commande->creer; // Used by the include of actions_lineupdown.inc.php + /* * Actions */ @@ -1053,16 +1054,16 @@ if (empty($reshook)) if ($action == 'builddoc') // In get or post { - /* - * Generate order document - * define into /core/modules/commande/modules_commande.php - */ - // Save last template used to generate document if (GETPOST('model')) $object->setDocModel($user, GETPOST('model', 'alpha')); + if (GETPOST('fk_bank')) { // this field may come from an external module + $object->fk_bank = GETPOST('fk_bank'); + } else { + $object->fk_bank = $object->fk_account; + } - // Define output language + // Define output language $outputlangs = $langs; $newlang = ''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index fa7f50c0628..2c361467d14 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -3857,13 +3857,13 @@ if ($action == 'create') $formmail->withdeliveryreceipt = 1; $formmail->withcancel = 1; // Tableau des substitutions - $formmail->substit ['__FACREF__'] = $object->ref; - $formmail->substit ['__SIGNATURE__'] = $user->signature; - $formmail->substit ['__REFCLIENT__'] = $object->ref_client; - $formmail->substit ['__THIRPARTY_NAME__'] = $object->thirdparty->name; - $formmail->substit ['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:''); - $formmail->substit ['__PERSONALIZED__'] = ''; - $formmail->substit ['__CONTACTCIVNAME__'] = ''; + $formmail->substit['__FACREF__'] = $object->ref; + $formmail->substit['__SIGNATURE__'] = $user->signature; + $formmail->substit['__REFCLIENT__'] = $object->ref_client; + $formmail->substit['__THIRPARTY_NAME__'] = $object->thirdparty->name; + $formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:''); + $formmail->substit['__PERSONALIZED__'] = ''; + $formmail->substit['__CONTACTCIVNAME__'] = ''; // Find the good contact adress $custcontact = ''; @@ -3872,7 +3872,7 @@ if ($action == 'create') if (is_array($contactarr) && count($contactarr) > 0) { foreach ($contactarr as $contact) { - if ($contact ['libelle'] == $langs->trans('TypeContact_facture_external_BILLING')) { // TODO Use code and not label + if ($contact['libelle'] == $langs->trans('TypeContact_facture_external_BILLING')) { // TODO Use code and not label require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php'; @@ -3883,15 +3883,15 @@ if ($action == 'create') } if (! empty($custcontact)) { - $formmail->substit ['__CONTACTCIVNAME__'] = $custcontact; + $formmail->substit['__CONTACTCIVNAME__'] = $custcontact; } } // Tableau des parametres complementaires du post - $formmail->param ['action'] = $action; - $formmail->param ['models'] = $modelmail; - $formmail->param ['facid'] = $object->id; - $formmail->param ['returnurl'] = $_SERVER["PHP_SELF"] . '?id=' . $object->id; + $formmail->param['action'] = $action; + $formmail->param['models'] = $modelmail; + $formmail->param['facid'] = $object->id; + $formmail->param['returnurl'] = $_SERVER["PHP_SELF"] . '?id=' . $object->id; // Init list of files if (GETPOST("mode") == 'init') { diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 238cd171a5a..67b5b8147d5 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -54,6 +54,10 @@ class Conf public $modules_parts = array('css'=>array(),'js'=>array(),'tabs'=>array(),'triggers'=>array(),'login'=>array(),'substitutions'=>array(),'menus'=>array(),'theme'=>array(),'sms'=>array(),'tpl'=>array(),'barcode'=>array(),'models'=>array(),'societe'=>array(),'hooks'=>array(),'dir'=>array()); var $logbuffer = array(); + + /** + * @var LogHandlerInterface[] + */ var $loghandlers = array(); //! To store properties of multi-company diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 3a898a3f3f5..7dc29b5821b 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -44,6 +44,7 @@ include_once DOL_DOCUMENT_ROOT .'/core/lib/json.lib.php'; * @param string $class Class name * @param string $member Name of property * @return mixed Return value of static property + * @deprecated Dolibarr now requires 5.3.0+ */ function getStaticMember($class, $member) { @@ -418,7 +419,7 @@ function dol_size($size,$type='') * * @param string $str String to clean * @param string $newstr String to replace bad chars with - * @param string $unaccent 1=Remove also accent (default), 0 do not remove them + * @param int $unaccent 1=Remove also accent (default), 0 do not remove them * @return string String cleaned (a-zA-Z_) * * @see dol_string_nospecial, dol_string_unaccent @@ -520,8 +521,8 @@ function dolEscapeXML($string) * Returns text escaped for inclusion into javascript code * * @param string $stringtoescape String to escape - * @param string $mode 0=Escape also ' and " into ', 1=Escape ' but not " for usage into 'string', 2=Escape " but not ' for usage into "string", 3=Escape ' and " with \ - * @param string $noescapebackslashn 0=Escape also \n. 1=Do not escape \n. + * @param int $mode 0=Escape also ' and " into ', 1=Escape ' but not " for usage into 'string', 2=Escape " but not ' for usage into "string", 3=Escape ' and " with \ + * @param int $noescapebackslashn 0=Escape also \n. 1=Do not escape \n. * @return string Escaped string. Both ' and " are escaped into ' if they are escaped. */ function dol_escape_js($stringtoescape, $mode=0, $noescapebackslashn=0) @@ -605,7 +606,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename=' global $conf, $user; // If syslog module enabled - if (empty($conf->syslog->enabled)) return false; + if (empty($conf->syslog->enabled)) return; if (! empty($level)) { @@ -615,7 +616,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename=' { throw new Exception('Incorrect log level'); } - if ($level > $conf->global->SYSLOG_LEVEL) return false; + if ($level > $conf->global->SYSLOG_LEVEL) return; // If adding log inside HTML page is required if (! empty($_REQUEST['logtohtml']) && ! empty($conf->global->MAIN_LOGTOHTML)) @@ -623,6 +624,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename=' $conf->logbuffer[] = dol_print_date(time(),"%Y-%m-%d %H:%M:%S")." ".$message; } + //TODO: Remove this. MAIN_ENABLE_LOG_HTML should be deprecated and use a HTML handler // If enable html log tag enabled and url parameter log defined, we show output log on HTML comments if (! empty($conf->global->MAIN_ENABLE_LOG_HTML) && ! empty($_GET["log"])) { @@ -848,7 +850,7 @@ function dol_bc($var,$moreclass='') * @param Object $object A company or contact object * @param int $withcountry 1=Add country into address string * @param string $sep Separator to use to build string - * @param Tranlsate $outputlangs Object lang that contains language for text translation. + * @param Translate $outputlangs Object lang that contains language for text translation. * @return string Formated string */ function dol_format_address($object,$withcountry=0,$sep="\n",$outputlangs='') @@ -1429,7 +1431,7 @@ function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64) * @param string $country Country code to use for formatting * @param int $cid Id of contact if known * @param int $socid Id of third party if known - * @param int $addlink ''=no link to create action, 'AC_TEL'=add link to clicktodial (if module enabled) and add link to create event (if conf->global->AGENDA_ADDACTIONFORPHONE set) + * @param string $addlink ''=no link to create action, 'AC_TEL'=add link to clicktodial (if module enabled) and add link to create event (if conf->global->AGENDA_ADDACTIONFORPHONE set) * @param string $separ Separation between numbers for a better visibility example : xx.xx.xx.xx.xx * @param string $withpicto Show picto * @return string Formated phone number @@ -1646,6 +1648,7 @@ function isValidEmail($address) /** * Return true if phone number syntax is ok * + * TODO: Decide what to do with this * @param string $phone phone (Ex: "0601010101") * @return boolean true if phone syntax is OK, false if KO or empty string */ @@ -2733,7 +2736,7 @@ function print_fiche_titre($title, $mesg='', $picto='title.png', $pictoisfullpat * @param int $id To force an id on html objects * @return string */ -function load_fiche_titre($titre, $mesg='', $picto='title.png', $pictoisfullpath=0, $id='') +function load_fiche_titre($titre, $mesg='', $picto='title.png', $pictoisfullpath=0, $id=0) { global $conf; @@ -3279,7 +3282,7 @@ function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller) { global $db; - dol_syslog("getLocalTaxesFromRate vatrate=".$vatrate." local=".$local." thirdparty id=".(is_object($thirdparty)?$thirdparty->id:'')); + dol_syslog("getLocalTaxesFromRate vatrate=".$vatrate." local=".$local); // Search local taxes $sql = "SELECT t.localtax1, t.localtax1_type, t.localtax2, t.localtax2_type, t.accountancy_code_sell, t.accountancy_code_buy"; @@ -3337,30 +3340,6 @@ function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller) return array($obj->localtax1_type, $obj->localtax1, $obj->localtax2_type, $obj->localtax2,$obj->accountancy_code_sell,$obj->accountancy_code_buy); } } - - if(! isOnlyOneLocalTax(2)) - { - if(! isOnlyOneLocalTax(1)) - { - return array($obj->localtax2_type, get_localtax($vatrate, 1, $buyer, $seller), $obj->localtax2_type, get_localtax($vatrate, 2, $buyer, $seller),$obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - else - { - return array($obj->localtax2_type, get_localtax($vatrate, 1, $buyer, $seller), $obj->localtax2_type, $obj->localtax2,$obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - } - else - { - if(! isOnlyOneLocalTax(1)) - { - return array($obj->localtax2_type, $obj->localtax2, $obj->localtax1_type,get_localtax($vatrate, 1, $buyer, $seller) ,$obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - else - { - return array($obj->localtax2_type, $obj->localtax2, $obj->localtax1_type, $obj->localtax1,$obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - } - } } @@ -4101,7 +4080,7 @@ function dol_textishtml($msg,$option=0) * * @param string $text1 Text 1 * @param string $text2 Text 2 - * @param string $forxml false=Use
, true=Use
+ * @param bool $forxml false=Use
, true=Use
* @return string Text 1 + new line + Text2 * @see dol_textishtml */ @@ -4143,7 +4122,7 @@ function make_substitutions($chaine,$substitutionarray) * * @param array $substitutionarray Array substitution old value => new value value * @param Translate $outputlangs If we want substitution from special constants, we provide a language - * @param Object $object If we want substitution from special constants, we provide data in a source object + * @param object $object If we want substitution from special constants, we provide data in a source object * @param Mixed $parameters Add more parameters (useful to pass product lines) * @param string $callfunc What is the name of the custom function that will be called? (default: completesubstitutionarray) * @return void @@ -4186,8 +4165,8 @@ function complete_substitutions_array(&$substitutionarray,$outputlangs,$object=' /** * Format output for start and end date * - * @param timestamp $date_start Start date - * @param timestamp $date_end End date + * @param int $date_start Start date + * @param int $date_end End date * @param string $format Output format * @param Translate $outputlangs Output language * @return void @@ -4200,8 +4179,8 @@ function print_date_range($date_start,$date_end,$format = '',$outputlangs='') /** * Format output for start and end date * - * @param timestamp $date_start Start date - * @param timestamp $date_end End date + * @param int $date_start Start date + * @param int $date_end End date * @param string $format Output format * @param Translate $outputlangs Output language * @param string $withparenthesis 1=Add parenthesis, 0=non parenthesis diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index f6d28a4f135..cbe711ab7df 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -718,19 +718,20 @@ class pdf_einstein extends ModelePDFCommandes // If payment mode not forced or forced to VIR, show payment with BAN if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'VIR') { - if (! empty($conf->global->FACTURE_RIB_NUMBER)) - { - $account = new Account($this->db); - $account->fetch($conf->global->FACTURE_RIB_NUMBER); + if (! empty($object->fk_bank) || ! empty($conf->global->FACTURE_RIB_NUMBER)) + { + $bankid=(empty($object->fk_bank)?$conf->global->FACTURE_RIB_NUMBER:$object->fk_bank); + $account = new Account($this->db); + $account->fetch($bankid); - $curx=$this->marge_gauche; - $cury=$posy; + $curx=$this->marge_gauche; + $cury=$posy; - $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account,0,$default_font_size); + $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account,0,$default_font_size); - $posy+=2; - } - } + $posy+=2; + } + } return $posy; }