Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur 2022-11-30 00:17:39 +01:00
commit 83c0b44468
3 changed files with 64 additions and 24 deletions

View File

@ -9,6 +9,7 @@
* Copyright (C) 2015-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
* Copyright (C) 2016 Ferran Marcet <fmarcet@2byte.es>
* Copyright (C) 2019 JC Prieto <jcprieto@virtual20.com><prietojc@gmail.com>
* Copyright (C) 2022 Frédéric France <frederic.france@netlogic.fr>
*
* 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
@ -852,7 +853,7 @@ class Account extends CommonObject
$sql .= ",min_allowed = ".($this->min_allowed != '' ? price2num($this->min_allowed) : "null");
$sql .= ",min_desired = ".($this->min_desired != '' ? price2num($this->min_desired) : "null");
$sql .= ",comment = '".$this->db->escape($this->comment)."'";
$sql .= ",comment = '".$this->db->escape($this->comment)."'";
$sql .= ",state_id = ".($this->state_id > 0 ? ((int) $this->state_id) : "null");
$sql .= ",fk_pays = ".($this->country_id > 0 ? ((int) $this->country_id) : "null");
@ -1926,18 +1927,18 @@ class AccountLine extends CommonObject
$obj = $this->db->fetch_object($result);
if ($obj) {
$this->id = $obj->rowid;
$this->rowid = $obj->rowid;
$this->rowid = $obj->rowid;
$this->ref = $obj->rowid;
$this->datec = $obj->datec;
$this->datev = $obj->datev;
$this->dateo = $obj->dateo;
$this->datec = $obj->datec;
$this->datev = $obj->datev;
$this->dateo = $obj->dateo;
$this->amount = $obj->amount;
$this->label = $obj->label;
$this->note = $obj->note;
$this->label = $obj->label;
$this->note = $obj->note;
$this->fk_user_author = $obj->fk_user_author;
$this->fk_user_rappro = $obj->fk_user_rappro;
$this->fk_user_author = $obj->fk_user_author;
$this->fk_user_rappro = $obj->fk_user_rappro;
$this->fk_type = $obj->fk_type; // Type of transaction
$this->rappro = $obj->rappro;
@ -1948,9 +1949,13 @@ class AccountLine extends CommonObject
$this->fk_bordereau = $obj->fk_bordereau;
$this->fk_account = $obj->fk_account;
$this->bank_account_ref = $obj->bank_account_ref;
$this->bank_account_ref = $obj->bank_account_ref;
$this->bank_account_label = $obj->bank_account_label;
// Retrieve all extrafield
// fetch optionals attributes and labels
$this->fetch_optionals();
$ret = 1;
}
$this->db->free($result);
@ -1967,6 +1972,10 @@ class AccountLine extends CommonObject
*/
public function insert()
{
$error = 0;
$this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank (";
$sql .= "datec";
$sql .= ", dateo";
@ -2002,15 +2011,26 @@ class AccountLine extends CommonObject
dol_syslog(get_class($this)."::insert", LOG_DEBUG);
$resql = $this->db->query($sql);
if (!$resql) {
if ($resql) {
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'bank');
// Actions on extra fields (by external module or standard code)
$result = $this->insertExtraFields();
if ($result < 0) {
$error++;
}
} else {
$error++;
$this->error = $this->db->lasterror();
return -1;
dol_print_error($this->db);
}
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'bank');
return $this->id;
if (!$error) {
$this->db->commit();
return $this->id;
} else {
$this->db->rollback();
return -1 * $error;
}
}
/**
@ -2064,6 +2084,12 @@ class AccountLine extends CommonObject
$nbko++;
}
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_extrafields WHERE fk_object=".(int) $this->rowid;
$result = $this->db->query($sql);
if (!$result) {
$nbko++;
}
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank WHERE rowid=".(int) $this->rowid;
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$result = $this->db->query($sql);

View File

@ -35,6 +35,7 @@ require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
// Load translation files required by the page
$langs->loadLangs(array('banks', 'categories', 'compta', 'bills', 'other'));
@ -77,7 +78,9 @@ if (empty($user->rights->banque->lire) && empty($user->rights->banque->consolida
}
$hookmanager->initHooks(array('bankline'));
$object = new AccountLine($db);
$extrafields = new ExtraFields($db);
$extrafields->fetch_name_optionals_label($object->element);
/*
* Actions
@ -125,18 +128,17 @@ if ($action == 'confirm_delete_categ' && $confirm == "yes" && $user->rights->ban
if ($user->rights->banque->modifier && $action == "update") {
$error = 0;
$acline = new AccountLine($db);
$result = $acline->fetch($rowid);
$result = $object->fetch($rowid);
if ($result <= 0) {
dol_syslog('Failed to read bank line with id '.$rowid, LOG_WARNING); // This happens due to old bug that has set fk_account to null.
$acline->id = $rowid;
$object->id = $rowid;
}
$acsource = new Account($db);
$acsource->fetch($accountoldid);
$actarget = new Account($db);
if (GETPOST('accountid', 'int') > 0 && !$acline->rappro && !$acline->getVentilExportCompta()) { // We ask to change bank account
if (GETPOST('accountid', 'int') > 0 && !$object->rappro && !$object->getVentilExportCompta()) { // We ask to change bank account
$actarget->fetch(GETPOST('accountid', 'int'));
} else {
$actarget->fetch($accountoldid);
@ -173,7 +175,7 @@ if ($user->rights->banque->modifier && $action == "update") {
$sql .= " emetteur='".$db->escape(GETPOST("emetteur"))."',";
}
// Blocked when conciliated
if (!$acline->rappro) {
if (!$object->rappro) {
if (GETPOSTISSET('label')) {
$sql .= " label = '".$db->escape(GETPOST("label"))."',";
}
@ -188,7 +190,7 @@ if ($user->rights->banque->modifier && $action == "update") {
}
}
$sql .= " fk_account = ".((int) $actarget->id);
$sql .= " WHERE rowid = ".((int) $acline->id);
$sql .= " WHERE rowid = ".((int) $object->id);
$result = $db->query($sql);
if (!$result) {
@ -214,6 +216,11 @@ if ($user->rights->banque->modifier && $action == "update") {
}
}
if (!$error) {
$extrafields->setOptionalsFromPost(null, $object, '@GETPOSTISSET');
$object->insertExtraFields();
}
if (!$error) {
setEventMessages($langs->trans("RecordSaved"), null, 'mesgs');
$db->commit();
@ -601,6 +608,13 @@ if ($result) {
print "</td></tr>";
}
// Other attributes
$parameters = array();
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $bankline, $action); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
if (empty($reshook)) {
print $bankline->showOptionals($extrafields, ($objp->rappro ? 'view' : 'create'), $parameters);
}
print "</table>";
// Code to adjust value date with plus and less picto using an Ajax call instead of a full reload of page

View File

@ -9364,7 +9364,7 @@ function complete_head_from_modules($conf, $langs, $object, &$head, &$h, $type,
// No need to make a return $head. Var is modified as a reference
if (!empty($hookmanager)) {
$parameters = array('object' => $object, 'mode' => $mode, 'head' => &$head);
$parameters = array('object' => $object, 'mode' => $mode, 'head' => &$head, 'filterorigmodule' => $filterorigmodule);
$reshook = $hookmanager->executeHooks('completeTabsHead', $parameters);
if ($reshook > 0) { // Hook ask to replace completely the array
$head = $hookmanager->resArray;