NEW clean values and amount in FEC import

This commit is contained in:
lvessiller 2022-03-16 10:49:16 +01:00
parent 92f82c7474
commit 6d6e6ff70c
4 changed files with 41 additions and 5 deletions

View File

@ -39,6 +39,35 @@
*/
class AccountancyImport
{
/**
* Clean amount
*
* @param array $arrayrecord Array of read values: [fieldpos] => (['val']=>val, ['type']=>-1=null,0=blank,1=string), [fieldpos+1]...
* @param string $fieldname Field name with alias
* @param array $listfields Fields list to add
* @param array $listvalues Values list to add
* @param int $record_key Record key
* @return int <0 if KO, >0 if OK
*/
public function cleanAmount(&$arrayrecord, $fieldname, &$listfields, &$listvalues, $record_key) {
$value_trim = trim($arrayrecord[$record_key]['val']);
$arrayrecord[$record_key]['val'] = floatval($value_trim);
}
/**
* Clean value with trim
*
* @param array $arrayrecord Array of read values: [fieldpos] => (['val']=>val, ['type']=>-1=null,0=blank,1=string), [fieldpos+1]...
* @param string $fieldname Field name with alias
* @param array $listfields Fields list to add
* @param array $listvalues Values list to add
* @param int $record_key Record key
* @return int <0 if KO, >0 if OK
*/
public function cleanValue(&$arrayrecord, $fieldname, &$listfields, &$listvalues, $record_key) {
$arrayrecord[$record_key]['val'] = trim($arrayrecord[$record_key]['val']);
}
/**
* Compute amount
*
@ -55,13 +84,19 @@ class AccountancyImport
$fieldname = $fieldArr[1];
}
$debit = floatval(trim($arrayrecord[11]['val']));
$credit = floatval(trim($arrayrecord[12]['val']));
$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 . "'";
$listfields[] = $fieldname;
$listvalues[] = "'" . abs($amount) . "'";
@ -69,7 +104,6 @@ class AccountancyImport
return 1;
}
/**
* Compute sens
*

View File

@ -612,7 +612,7 @@ class ImportCsv extends ModeleImports
break;
}
$classinstance = new $class($this->db);
$res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord));
$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']));

View File

@ -653,7 +653,7 @@ class ImportXlsx extends ModeleImports
break;
}
$classinstance = new $class($this->db);
$res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord));
$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']));

View File

@ -354,8 +354,10 @@ class modAccounting extends DolibarrModules
'b.sens'=>'rule-computeDirection'
); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
$this->import_convertvalue_array[$r]=array(
'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.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'),
);