Merge pull request #2986 from CihanSenturk/import/export-improvements
Import/export improvements
This commit is contained in:
		@@ -48,13 +48,18 @@ abstract class Export implements FromCollection, HasLocalePreference, ShouldAuto
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        $map = [];
 | 
					        $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 = ['=', '+', '-', '@'];
 | 
					        $evil_chars = ['=', '+', '-', '@'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        foreach ($this->fields as $field) {
 | 
					        foreach ($this->fields as $field) {
 | 
				
			||||||
            $value = $model->$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)) {
 | 
					            if (in_array($field, $date_fields)) {
 | 
				
			||||||
                $value = ExcelDate::PHPToExcel(Date::parse($value)->format('Y-m-d'));
 | 
					                $value = ExcelDate::PHPToExcel(Date::parse($value)->format('Y-m-d'));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,12 @@ abstract class Import implements HasLocalePreference, ShouldQueue, SkipsEmptyRow
 | 
				
			|||||||
    public function map($row): array
 | 
					    public function map($row): array
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $row['company_id'] = company_id();
 | 
					        $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';
 | 
					        $row['created_from'] = $this->getSourcePrefix() . 'import';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Make enabled field integer
 | 
					        // Make enabled field integer
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,6 +22,8 @@ class Customers extends Export
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $model->country = $country;
 | 
					        $model->country = $country;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $model->can_login = $model->user_id ? true : false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return parent::map($model);
 | 
					        return parent::map($model);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,6 +43,7 @@ class Customers extends Export
 | 
				
			|||||||
            'currency_code',
 | 
					            'currency_code',
 | 
				
			||||||
            'reference',
 | 
					            'reference',
 | 
				
			||||||
            'enabled',
 | 
					            'enabled',
 | 
				
			||||||
 | 
					            'can_login',
 | 
				
			||||||
        ];
 | 
					        ];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@
 | 
				
			|||||||
namespace App\Imports\Sales;
 | 
					namespace App\Imports\Sales;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use App\Abstracts\Import;
 | 
					use App\Abstracts\Import;
 | 
				
			||||||
 | 
					use App\Models\Auth\User;
 | 
				
			||||||
use App\Http\Requests\Common\Contact as Request;
 | 
					use App\Http\Requests\Common\Contact as Request;
 | 
				
			||||||
use App\Models\Common\Contact as Model;
 | 
					use App\Models\Common\Contact as Model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -26,6 +27,10 @@ class Customers extends Import
 | 
				
			|||||||
        $row['currency_code'] = $this->getCurrencyCode($row);
 | 
					        $row['currency_code'] = $this->getCurrencyCode($row);
 | 
				
			||||||
        $row['user_id'] = null;
 | 
					        $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;
 | 
					        return $row;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,7 @@ use App\Jobs\Common\CreateItem;
 | 
				
			|||||||
use App\Jobs\Setting\CreateCategory;
 | 
					use App\Jobs\Setting\CreateCategory;
 | 
				
			||||||
use App\Jobs\Setting\CreateCurrency;
 | 
					use App\Jobs\Setting\CreateCurrency;
 | 
				
			||||||
use App\Jobs\Setting\CreateTax;
 | 
					use App\Jobs\Setting\CreateTax;
 | 
				
			||||||
 | 
					use App\Models\Auth\User;
 | 
				
			||||||
use App\Models\Banking\Account;
 | 
					use App\Models\Banking\Account;
 | 
				
			||||||
use App\Models\Common\Contact;
 | 
					use App\Models\Common\Contact;
 | 
				
			||||||
use App\Models\Common\Item;
 | 
					use App\Models\Common\Item;
 | 
				
			||||||
@@ -110,6 +111,17 @@ trait Import
 | 
				
			|||||||
        return $currency->code;
 | 
					        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)
 | 
					    public function getDocumentId($row)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $id = isset($row['document_id']) ? $row['document_id'] : null;
 | 
					        $id = isset($row['document_id']) ? $row['document_id'] : null;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user