From ae144a69101586788476c7bedfd293ada5f572b3 Mon Sep 17 00:00:00 2001 From: VESSILLER Date: Thu, 8 Aug 2019 17:31:16 +0200 Subject: [PATCH] NEW compute column value from others columns in import module --- .../modules/import/import_csv.modules.php | 23 +++++++++++++++++-- .../modules/import/import_xlsx.modules.php | 23 +++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 0a60d9dc0ae..606b23e2767 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -581,8 +581,27 @@ class ImportCsv extends ModeleImports if (is_numeric($defaultref) && $defaultref <= 0) $defaultref=''; $newval=$defaultref; } - - + elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='compute') + { + $file=(empty($objimport->array_import_convertvalue[0][$val]['classfile'])?$objimport->array_import_convertvalue[0][$val]['file']:$objimport->array_import_convertvalue[0][$val]['classfile']); + $class=$objimport->array_import_convertvalue[0][$val]['class']; + $method=$objimport->array_import_convertvalue[0][$val]['method']; + $resultload = dol_include_once($file); + if (empty($resultload)) + { + dol_print_error('', 'Error trying to call file='.$file.', class='.$class.', method='.$method); + break; + } + $classinstance=new $class($this->db); + $res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord)); + 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'])); + else $this->errors[$error]['lib']='ErrorFieldValueNotIn'; + $this->errors[$error]['type']='FOREIGNKEY'; + $errorforthistable++; + $error++; + } + } elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='numeric') { $newval = price2num($newval); diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index af9c0e2c412..66670247a4c 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -608,8 +608,27 @@ class ImportXlsx extends ModeleImports if (is_numeric($defaultref) && $defaultref <= 0) $defaultref=''; $newval=$defaultref; } - - + elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='compute') + { + $file=(empty($objimport->array_import_convertvalue[0][$val]['classfile'])?$objimport->array_import_convertvalue[0][$val]['file']:$objimport->array_import_convertvalue[0][$val]['classfile']); + $class=$objimport->array_import_convertvalue[0][$val]['class']; + $method=$objimport->array_import_convertvalue[0][$val]['method']; + $resultload = dol_include_once($file); + if (empty($resultload)) + { + dol_print_error('', 'Error trying to call file='.$file.', class='.$class.', method='.$method); + break; + } + $classinstance=new $class($this->db); + $res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord)); + 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'])); + else $this->errors[$error]['lib']='ErrorFieldValueNotIn'; + $this->errors[$error]['type']='FOREIGNKEY'; + $errorforthistable++; + $error++; + } + } elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='numeric') { $newval = price2num($newval);