Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

akaunting/akaunting

9348 stars
7 code files
View akaunting/akaunting on GitHub

composer.json

Open in GitHub
{
//
"require": {
"php": "^7.3.0",
//
"maatwebsite/excel": "3.1.*",
//
}
//
}

routes/admin.php

Open in GitHub
use Illuminate\Support\Facades\Route;
 
//
Route::group(['prefix' => 'purchases'], function () {
//
Route::post('payments/import', 'Purchases\Payments@import')->name('payments.import');
//
});
//

app/Http/Controllers/Purchases/Payments.php

Open in GitHub
use App\Abstracts\Http\Controller;
use App\Http\Requests\Common\Import as ImportRequest;
use App\Imports\Purchases\Payments as Import;
 
class Payments extends Controller
{
//
public function import(ImportRequest $request)
{
$response = $this->importExcel(new Import, $request, trans_choice('general.payments', 2));
 
if ($response['success']) {
$response['redirect'] = route('payments.index');
 
flash($response['message'])->success();
} else {
$response['redirect'] = route('import.create', ['purchases', 'payments']);
 
flash($response['message'])->error()->important();
}
 
return response()->json($response);
}
//
}

app/Imports/Purchases/Payments.php

Open in GitHub
use App\Abstracts\Import;
use App\Http\Requests\Banking\Transaction as Request;
use App\Models\Banking\Transaction as Model;
 
class Payments extends Import
{
public function model(array $row)
{
return new Model($row);
}
 
public function map($row): array
{
$row = parent::map($row);
 
$row['type'] = 'expense';
$row['account_id'] = $this->getAccountId($row);
$row['category_id'] = $this->getCategoryId($row, 'expense');
$row['contact_id'] = $this->getContactId($row, 'vendor');
$row['document_id'] = $this->getDocumentId($row);
 
return $row;
}
 
public function rules(): array
{
return (new Request())->rules();
}
}

app/Http/Requests/Common/Import.php

Open in GitHub
use Illuminate\Foundation\Http\FormRequest;
 
class Import extends FormRequest
{
public function rules()
{
return [
'import' => 'required|file|extension:' . config('excel.imports.extensions'),
];
}
}

app/Imports/Purchases/Payments.php

Open in GitHub
use App\Abstracts\Import;
use App\Http\Requests\Banking\Transaction as Request;
use App\Models\Banking\Transaction as Model;
 
class Payments extends Import
{
public function model(array $row)
{
return new Model($row);
}
 
public function map($row): array
{
$row = parent::map($row);
 
$row['type'] = 'expense';
$row['account_id'] = $this->getAccountId($row);
$row['category_id'] = $this->getCategoryId($row, 'expense');
$row['contact_id'] = $this->getContactId($row, 'vendor');
$row['document_id'] = $this->getDocumentId($row);
 
return $row;
}
 
public function rules(): array
{
return (new Request())->rules();
}
}

resources/views/common/import/create.blade.php

Open in GitHub
@extends('layouts.admin')
 
@section('title', trans('import.title', ['type' => $title_type]))
 
@section('content')
<div class="card">
{!! Form::open($form_params) !!}
 
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="alert alert-warning alert-important">
{!! trans('import.limitations', ['extensions' => strtoupper(config('excel.imports.extensions')), 'row_limit' => config('excel.imports.row_limit')]) !!}
</div>
</div>
<div class="col-md-12">
<div class="alert alert-info alert-important">
{!! trans('import.sample_file', ['download_link' => $sample_file]) !!}
</div>
</div>
 
{{ Form::fileGroup('import', '', 'plus', ['dropzone-class' => 'form-file', 'options' => ['acceptedFiles' => '.xls,.xlsx']], null, 'col-md-12') }}
</div>
</div>
 
<div class="card-footer">
<div class="row save-buttons">
<div class="col-xs-12 col-sm-12">
@if (!empty($route))
<a href="{{ route(\Str::replaceFirst('.import', '.index', $route)) }}" class="btn btn-outline-secondary">
{{ trans('general.cancel') }}
</a>
@else
<a href="{{ url($path) }}" class="btn btn-outline-secondary">
{{ trans('general.cancel') }}
</a>
@endif
 
{!! Form::button(
'<span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span> <span :class="[{\'ml-0\': form.loading}]" class="btn-inner--text">' . trans('import.import') . '</span>',
[':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success']) !!}
</div>
</div>
</div>
 
{!! Form::close() !!}
</div>
@endsection
 
@push('scripts_start')
<script src="{{ asset('public/js/common/imports.js?v=' . version('short')) }}"></script>
@endpush

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.