Merge pull request #2986 from CihanSenturk/import/export-improvements

Import/export improvements
This commit is contained in:
Cüneyt Şentürk 2023-06-19 09:44:20 +03:00 committed by GitHub
commit 1d7b1404a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 2 deletions

View File

@ -48,13 +48,18 @@ abstract class Export implements FromCollection, HasLocalePreference, ShouldAuto
{
$map = [];
$date_fields = ['paid_at', 'invoiced_at', 'billed_at', 'due_at', 'issued_at', 'created_at', 'transferred_at'];
$date_fields = ['paid_at', 'invoiced_at', 'billed_at', 'due_at', 'issued_at', 'transferred_at'];
$evil_chars = ['=', '+', '-', '@'];
foreach ($this->fields as $field) {
$value = $model->$field;
// created_by is equal to the owner id. Therefore, the value in export is owner email.
if ($field == 'created_by') {
$value = $model->owner->email ?? null;
}
if (in_array($field, $date_fields)) {
$value = ExcelDate::PHPToExcel(Date::parse($value)->format('Y-m-d'));
}

View File

@ -39,7 +39,12 @@ abstract class Import implements HasLocalePreference, ShouldQueue, SkipsEmptyRow
public function map($row): array
{
$row['company_id'] = company_id();
$row['created_by'] = $this->user->id;
// created_by is equal to the owner id. Therefore, the value in export is owner email.
if (isset($row['created_by'])) {
$row['created_by'] = $this->getCreatedById($row);
}
$row['created_from'] = $this->getSourcePrefix() . 'import';
// Make enabled field integer

View File

@ -22,6 +22,8 @@ class Customers extends Export
$model->country = $country;
$model->can_login = $model->user_id ? true : false;
return parent::map($model);
}
@ -41,6 +43,7 @@ class Customers extends Export
'currency_code',
'reference',
'enabled',
'can_login',
];
}
}

View File

@ -3,6 +3,7 @@
namespace App\Imports\Sales;
use App\Abstracts\Import;
use App\Models\Auth\User;
use App\Http\Requests\Common\Contact as Request;
use App\Models\Common\Contact as Model;
@ -26,6 +27,10 @@ class Customers extends Import
$row['currency_code'] = $this->getCurrencyCode($row);
$row['user_id'] = null;
if (isset($row['can_login']) && isset($row['email'])) {
$row['user_id'] = User::where('email', $row['email'])->first()?->id ?? null;
}
return $row;
}
}

View File

@ -14,6 +14,7 @@ use App\Jobs\Common\CreateItem;
use App\Jobs\Setting\CreateCategory;
use App\Jobs\Setting\CreateCurrency;
use App\Jobs\Setting\CreateTax;
use App\Models\Auth\User;
use App\Models\Banking\Account;
use App\Models\Common\Contact;
use App\Models\Common\Item;
@ -110,6 +111,17 @@ trait Import
return $currency->code;
}
public function getCreatedById($row)
{
$user = User::where('email', $row['created_by'])->first();
if (! empty($user)) {
return $user->id;
}
return $this->user->id;
}
public function getDocumentId($row)
{
$id = isset($row['document_id']) ? $row['document_id'] : null;