| Server IP : 103.161.17.216 / Your IP : 216.73.216.1 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/app.houseland.info/application/libraries/import/ |
Upload File : |
<?php
defined('BASEPATH') or exit('No direct script access allowed');
require_once(APPPATH . 'libraries/import/App_import.php');
class Import_items extends App_import
{
protected $notImportableFields = ['id'];
protected $requiredFields = ['description', 'rate'];
public function __construct()
{
$this->addItemsGuidelines();
parent::__construct();
}
public function perform()
{
$this->initialize();
$databaseFields = $this->getImportableDatabaseFields();
$totalDatabaseFields = count($databaseFields);
foreach ($this->getRows() as $rowNumber => $row) {
$insert = [];
for ($i = 0; $i < $totalDatabaseFields; $i++) {
$row[$i] = $this->checkNullValueAddedByUser($row[$i]);
if ($databaseFields[$i] == 'description' && $row[$i] == '') {
$row[$i] = '/';
} elseif (startsWith($databaseFields[$i], 'rate') && !is_numeric($row[$i])) {
$row[$i] = 0;
} elseif ($databaseFields[$i] == 'group_id') {
$row[$i] = $this->groupValue($row[$i]);
} elseif ($databaseFields[$i] == 'tax' || $databaseFields[$i] == 'tax2') {
$row[$i] = $this->taxValue($row[$i]);
}
$insert[$databaseFields[$i]] = $row[$i];
}
$insert = $this->trimInsertValues($insert);
if (count($insert) > 0) {
$this->incrementImported();
if (!empty($insert['tax2']) && empty($insert['tax'])) {
$insert['tax'] = $insert['tax2'];
$insert['tax2'] = 0;
}
$id = null;
if (!$this->isSimulation()) {
$this->ci->db->insert(db_prefix().'items', $insert);
$id = $this->ci->db->insert_id();
} else {
$this->simulationData[$rowNumber] = $this->formatValuesForSimulation($insert);
}
$this->handleCustomFieldsInsert($id, $row, $i, $rowNumber, 'items_pr');
}
if ($this->isSimulation() && $rowNumber >= $this->maxSimulationRows) {
break;
}
}
}
public function formatFieldNameForHeading($field)
{
$this->ci->load->model('currencies_model');
if (strtolower($field) == 'group_id') {
return 'Group';
} elseif (startsWith($field, 'rate')) {
$str = 'Rate - ';
// Base currency
if ($field == 'rate') {
$str .= $this->ci->currencies_model->get_base_currency()->name;
} else {
$str .= $this->ci->currencies_model->get(strafter($field, 'rate_currency_'))->name;
}
return $str;
}
return parent::formatFieldNameForHeading($field);
}
protected function failureRedirectURL()
{
return admin_url('invoice_items/import');
}
private function addItemsGuidelines()
{
$this->addImportGuidelinesInfo('In the column <b>Tax</b> and <b>Tax2</b>, you <b>must</b> add either the <b>TAX NAME or the TAX ID</b>, which you can get them by navigating to <a href="' . admin_url('taxes') . '" target="_blank">Setup->Finance->Taxes</a>.');
$this->addImportGuidelinesInfo('In the column <b>Group</b>, you <b>must</b> add either the <b>GROUP NAME or the GROUP ID</b>, which you can get them by clicking <a href="' . admin_url('invoice_items?groups_modal=true') . '" target="_blank">here</a>.');
}
private function formatValuesForSimulation($values)
{
foreach ($values as $column => $val) {
if ($column == 'group_id' && !empty($val) && is_numeric($val)) {
$group = $this->getGroupBy('id', $val);
if ($group) {
$values[$column] = $group->name;
}
} elseif (($column == 'tax' || $column == 'tax2') && !empty($val) && is_numeric($val)) {
$tax = $this->getTaxBy('id', $val);
if ($tax) {
$values[$column] = $tax->name . ' (' . $tax->taxrate . '%)';
}
}
}
return $values;
}
private function getTaxBy($field, $idOrName)
{
$this->ci->db->where($field, $idOrName);
return $this->ci->db->get(db_prefix().'taxes')->row();
}
private function getGroupBy($field, $idOrName)
{
$this->ci->db->where($field, $idOrName);
return $this->ci->db->get(db_prefix().'items_groups')->row();
}
private function taxValue($value)
{
if ($value != '') {
if (!is_numeric($value)) {
$tax = $this->getTaxBy('name', $value);
$value = $tax ? $tax->id : 0;
}
} else {
$value = 0;
}
return $value;
}
private function groupValue($value)
{
if ($value != '') {
if (!is_numeric($value)) {
$group = $this->getGroupBy('name', $value);
$value = $group ? $group->id : 0;
}
} else {
$value = 0;
}
return $value;
}
}