diff --git a/htdocs/accountancy/class/accountancyimport.class.php b/htdocs/accountancy/class/accountancyimport.class.php index bd771742f26..4e058136c66 100644 --- a/htdocs/accountancy/class/accountancyimport.class.php +++ b/htdocs/accountancy/class/accountancyimport.class.php @@ -67,10 +67,12 @@ class AccountancyImport * @param int $record_key Record key * @return int <0 if KO, >0 if OK */ - public function cleanAmount(&$arrayrecord, $fieldname, &$listfields, &$listvalues, $record_key) + public function cleanAmount(&$arrayrecord, $fieldname, $listfields, $listvalues, $record_key) { $value_trim = trim($arrayrecord[$record_key]['val']); $arrayrecord[$record_key]['val'] = floatval($value_trim); + + return 1; } /** @@ -83,9 +85,11 @@ class AccountancyImport * @param int $record_key Record key * @return int <0 if KO, >0 if OK */ - public function cleanValue(&$arrayrecord, $fieldname, &$listfields, &$listvalues, $record_key) + public function cleanValue(&$arrayrecord, $fieldname, $listfields, $listvalues, $record_key) { $arrayrecord[$record_key]['val'] = trim($arrayrecord[$record_key]['val']); + + return 1; } /** @@ -104,22 +108,23 @@ class AccountancyImport $fieldname = $fieldArr[1]; } - $debit_index = 11; - $credit_index = 12; - $debit_val = trim($arrayrecord[$debit_index]['val']); - $credit_val = trim($arrayrecord[$credit_index]['val']); - $debit = floatval($debit_val); - $credit = floatval($credit_val); - if (!empty($debit)) { - $amount = $debit; - } else { - $amount = $credit; - } - $listvalues[$debit_index] = "'" . $debit . "'"; - $listvalues[$credit_index] = "'" . $credit . "'"; + // get fields indexes + $field_index_list = array_flip($listfields); + if (isset($field_index_list['debit']) && isset($field_index_list['credit'])) { + $debit_index = $field_index_list['debit']; + $credit_index = $field_index_list['credit']; - $listfields[] = $fieldname; - $listvalues[] = "'" . abs($amount) . "'"; + $debit = floatval($arrayrecord[$debit_index]['val']); + $credit = floatval($arrayrecord[$credit_index]['val']); + if (!empty($debit)) { + $amount = $debit; + } else { + $amount = $credit; + } + + $listfields[] = $fieldname; + $listvalues[] = "'" . $this->db->escape(abs($amount)) . "'"; + } return 1; } @@ -141,15 +146,20 @@ class AccountancyImport $fieldname = $fieldArr[1]; } - $debit = floatval(trim($arrayrecord[11]['val'])); - if (!empty($debit)) { - $sens = 'D'; - } else { - $sens = 'C'; - } + $field_index_list = array_flip($listfields); + if (isset($field_index_list['debit'])) { + $debit_index = $field_index_list['debit']; - $listfields[] = $fieldname; - $listvalues[] = "'" . $sens . "'"; + $debit = floatval($arrayrecord[$debit_index]['val']); + if (!empty($debit)) { + $sens = 'D'; + } else { + $sens = 'C'; + } + + $listfields[] = $fieldname; + $listvalues[] = "'" . $this->db->escape($sens) . "'"; + } return 1; } diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 0ff69e9ffa0..5cb0f6e8426 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -612,7 +612,7 @@ class ImportCsv extends ModeleImports break; } $classinstance = new $class($this->db); - $res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord, $fieldname, &$listfields, &$listvalues, $key - 1)); + $res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord, $fieldname, $listfields, $listvalues, $key - 1)); if ($res < 0) { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) { $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 804b4b00c2c..28eda4c5207 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -653,7 +653,7 @@ class ImportXlsx extends ModeleImports break; } $classinstance = new $class($this->db); - $res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord, $fieldname, &$listfields, &$listvalues, $key - 1)); + $res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord, $fieldname, $listfields, $listvalues, $key - 1)); if ($res < 0) { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) { $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index 2331d4da118..5e30978693e 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -357,6 +357,8 @@ class modAccounting extends DolibarrModules 'b.piece_num' => array('rule' => 'compute', 'classfile' => '/accountancy/class/accountancyimport.class.php', 'class' => 'AccountancyImport', 'method' => 'cleanValue', 'element' => 'Accountancy'), 'b.numero_compte'=>array('rule'=>'accountingaccount'), 'b.subledger_account'=>array('rule'=>'accountingaccount'), + 'b.debit' => array('rule' => 'compute', 'classfile' => '/accountancy/class/accountancyimport.class.php', 'class' => 'AccountancyImport', 'method' => 'cleanAmount', 'element' => 'Accountancy'), + 'b.credit' => array('rule' => 'compute', 'classfile' => '/accountancy/class/accountancyimport.class.php', 'class' => 'AccountancyImport', 'method' => 'cleanAmount', 'element' => 'Accountancy'), 'b.multicurrency_amount' => array('rule' => 'compute', 'classfile' => '/accountancy/class/accountancyimport.class.php', 'class' => 'AccountancyImport', 'method' => 'cleanAmount', 'element' => 'Accountancy'), 'b.montant' => array('rule' => 'compute', 'classfile' => '/accountancy/class/accountancyimport.class.php', 'class' => 'AccountancyImport', 'method' => 'computeAmount', 'element' => 'Accountancy'), 'b.sens' => array('rule' => 'compute', 'classfile' => '/accountancy/class/accountancyimport.class.php', 'class' => 'AccountancyImport', 'method' => 'computeDirection', 'element' => 'Accountancy'),