Merge pull request #2185 from cuneytsenturk/show-transfer

Added transfer show page
This commit is contained in:
Cüneyt Şentürk 2021-07-11 12:36:08 +03:00 committed by GitHub
commit 61b72b0a15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 2647 additions and 14 deletions

View File

@ -0,0 +1,721 @@
<?php
namespace App\Abstracts\View\Components;
use App\Models\Common\Media;
use App\Traits\DateTime;
use App\Traits\Transactions;
use App\Utilities\Modules;
use File;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Str;
use Image;
use Intervention\Image\Exception\NotReadableException;
use Illuminate\Support\Facades\Storage;
use Illuminate\View\Component;
abstract class TransferShow extends Component
{
use DateTime, Transactions;
public $transfer;
/** @var string */
public $transferTemplate;
/** @var array */
public $payment_methods;
public $date_format;
/** @var bool */
public $hideButtonAddNew;
/** @var bool */
public $hideButtonMoreActions;
/** @var bool */
public $hideButtonEdit;
/** @var bool */
public $hideButtonDuplicate;
/** @var bool */
public $hideButtonPrint;
/** @var bool */
public $hideButtonShare;
/** @var bool */
public $hideButtonEmail;
/** @var bool */
public $hideButtonPdf;
/** @var bool */
public $hideButtonDelete;
/** @var bool */
public $hideButtonGroupDivider1;
/** @var bool */
public $hideButtonGroupDivider2;
/** @var bool */
public $hideButtonGroupDivider3;
/** @var string */
public $permissionCreate;
/** @var string */
public $permissionUpdate;
/** @var string */
public $permissionDelete;
/** @var string */
public $routeButtonAddNew;
/** @var string */
public $routeButtonEdit;
/** @var string */
public $routeButtonDuplicate;
/** @var string */
public $routeButtonPrint;
/** @var string */
public $signedUrl;
/** @var string */
public $routeButtonEmail;
/** @var string */
public $routeButtonPdf;
/** @var string */
public $hideButtonTemplate;
/** @var string */
public $routeButtonDelete;
/** @var string */
public $textDeleteModal;
/** @var bool */
public $hideHeader;
/** @var bool */
public $hideHeaderFromAccount;
/** @var bool */
public $hideHeaderToAccount;
/** @var bool */
public $hideHeaderAmount;
/** @var bool */
public $hideHeaderPaidAt;
/** @var string */
public $textHeaderFromAccount;
/** @var string */
public $textHeaderToAccount;
/** @var string */
public $textHeaderAmount;
/** @var string */
public $textHeaderPaidAt;
/** @var string */
public $classHeaderFromAccount;
/** @var string */
public $classHeaderToAccount;
/** @var string */
public $classHeaderAmount;
/** @var string */
public $classHeaderPaidAt;
/** @var bool */
public $hideFromAccount;
/** @var bool */
public $hideFromAccountTitle;
/** @var bool */
public $hideFromAccountName;
/** @var bool */
public $hideFromAccountNumber;
/** @var bool */
public $hideFromAccountBankName;
/** @var bool */
public $hideFromAccountBankPhone;
/** @var bool */
public $hideFromAccountBankAddress;
/** @var string */
public $textFromAccountTitle;
/** @var string */
public $textFromAccountNumber;
/** @var bool */
public $hideToAccount;
/** @var bool */
public $hideToAccountTitle;
/** @var bool */
public $hideToAccountName;
/** @var bool */
public $hideToAccountNumber;
/** @var bool */
public $hideToAccountBankName;
/** @var bool */
public $hideToAccountBankPhone;
/** @var bool */
public $hideToAccountBankAddress;
/** @var string */
public $textToAccountTitle;
/** @var string */
public $textToAccountNumber;
/** @var bool */
public $hideDetails;
/** @var bool */
public $hideDetailTitle;
/** @var bool */
public $hideDetailDate;
/** @var bool */
public $hideDetailPaymentMethod;
/** @var bool */
public $hideDetailReference;
/** @var bool */
public $hideDetailDescription;
/** @var bool */
public $hideDetailAmount;
/** @var string */
public $textDetailTitle;
/** @var string */
public $textDetailDate;
/** @var string */
public $textDetailPaymentMethod;
/** @var string */
public $textDetailReference;
/** @var string */
public $textDetailDescription;
/** @var string */
public $textDetailAmount;
/** @var bool */
public $hideAttachment;
public $attachment;
/** @var bool */
public $hideFooter;
/** @var bool */
public $hideFooterHistories;
public $histories;
/** @var string */
public $textHistories;
/** @var string */
public $classFooterHistories;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct(
$transfer, $transferTemplate = '', array $payment_methods = [],
bool $hideButtonAddNew = false, bool $hideButtonMoreActions = false, bool $hideButtonEdit = false, bool $hideButtonDuplicate = false, bool $hideButtonPrint = false, bool $hideButtonShare = false,
bool $hideButtonEmail = false, bool $hideButtonPdf = false, bool $hideButtonTemplate = false, bool $hideButtonDelete = false,
bool $hideButtonGroupDivider1 = false, bool $hideButtonGroupDivider2 = false, bool $hideButtonGroupDivider3 = false,
string $permissionCreate = '', string $permissionUpdate = '', string $permissionDelete = '',
string $routeButtonAddNew = '', string $routeButtonEdit = '', string $routeButtonDuplicate = '', string $routeButtonPrint = '', string $signedUrl = '',
string $routeButtonEmail = '', string $routeButtonPdf = '', string $routeButtonDelete = '',
string $textDeleteModal = '',
bool $hideHeader = false, bool $hideHeaderFromAccount = false, bool $hideHeaderToAccount = false, bool $hideHeaderAmount = false, bool $hideHeaderPaidAt = false,
string $textHeaderFromAccount = '', string $textHeaderToAccount = '', string $textHeaderAmount = '', string $textHeaderPaidAt = '',
string $classHeaderFromAccount = '', string $classHeaderToAccount = '', string $classHeaderAmount = '', string $classHeaderPaidAt = '',
bool $hideFromAccount = false, bool $hideFromAccountTitle = false, bool $hideFromAccountName = false, bool $hideFromAccountNumber = false,
bool $hideFromAccountBankName = false, bool $hideFromAccountBankPhone = false, bool $hideFromAccountBankAddress = false,
string $textFromAccountTitle = '', string $textFromAccountNumber = '',
bool $hideToAccount = false, bool $hideToAccountTitle = false, bool $hideToAccountName = false, bool $hideToAccountNumber = false,
bool $hideToAccountBankName = false, bool $hideToAccountBankPhone = false, bool $hideToAccountBankAddress = false,
string $textToAccountTitle = '', string $textToAccountNumber = '',
bool $hideDetails = false, bool $hideDetailTitle = false, bool $hideDetailDate = false, bool $hideDetailPaymentMethod = false,
bool $hideDetailReference = false, bool $hideDetailDescription = false, bool $hideDetailAmount = false,
string $textDetailTitle = '', string $textDetailDate = '', string $textDetailPaymentMethod = '', string $textDetailReference = '',
string $textDetailDescription = '', string $textDetailAmount = '',
bool $hideAttachment = false, $attachment = [],
bool $hideFooter = false, bool $hideFooterHistories = false, $histories = [],
string $textHistories = '', string $classFooterHistories = ''
) {
$this->transfer = $transfer;
$this->transferTemplate = $this->getTransferTemplate($transferTemplate);
$this->payment_methods = ($payment_methods) ?: Modules::getPaymentMethods('all');
$this->date_format = $this->getCompanyDateFormat();
// Navbar Hide
$this->hideButtonAddNew = $hideButtonAddNew;
$this->hideButtonMoreActions = $hideButtonMoreActions;
$this->hideButtonEdit = $hideButtonEdit;
$this->hideButtonDuplicate = $hideButtonDuplicate;
$this->hideButtonPrint = $hideButtonPrint;
$this->hideButtonShare = $hideButtonShare;
$this->hideButtonEmail = $hideButtonEmail;
$this->hideButtonPdf = $hideButtonPdf;
$this->hideButtonTemplate = $hideButtonTemplate;
$this->hideButtonDelete = $hideButtonDelete;
$this->hideButtonGroupDivider1 = $hideButtonGroupDivider1;
$this->hideButtonGroupDivider2 = $hideButtonGroupDivider2;
$this->hideButtonGroupDivider3 = $hideButtonGroupDivider3;
// Navbar Permission
$this->permissionCreate = $this->getPermissionCreate($permissionCreate);
$this->permissionUpdate = $this->getPermissionUpdate($permissionUpdate);
$this->permissionDelete = $this->getPermissionDelete($permissionDelete);
// Navbar route
$this->routeButtonAddNew = $this->getRouteButtonAddNew($routeButtonAddNew);
$this->routeButtonEdit = $this->getRouteButtonEdit($routeButtonEdit);
$this->routeButtonDuplicate = $this->getRouteButtonDuplicate($routeButtonDuplicate);
$this->routeButtonPrint = $this->getRouteButtonPrint($routeButtonPrint);
$this->signedUrl = $this->getSignedUrl($signedUrl);
$this->routeButtonEmail = $this->getRouteButtonEmail($routeButtonEmail);
$this->routeButtonPdf = $this->getRouteButtonPdf($routeButtonPdf);
$this->routeButtonDelete = $this->getRouteButtonDelete($routeButtonDelete);
// Navbar Text
$this->textDeleteModal = $textDeleteModal;
// Header Hide
$this->hideHeader = $hideHeader;
$this->hideHeaderFromAccount = $hideHeaderFromAccount;
$this->hideHeaderToAccount = $hideHeaderToAccount;
$this->hideHeaderToAccount = $hideHeaderToAccount;
$this->hideHeaderAmount = $hideHeaderAmount;
$this->hideHeaderPaidAt = $hideHeaderPaidAt;
// Header Text
$this->textHeaderFromAccount = $this->getTextHeaderFromAccount($textHeaderFromAccount);
$this->textHeaderToAccount = $this->getTextHeaderToAccount($textHeaderToAccount);
$this->textHeaderAmount = $this->getTextHeaderAmount($textHeaderAmount);
$this->textHeaderPaidAt = $this->gettextHeaderPaidAt($textHeaderPaidAt);
// Header Class
$this->classHeaderFromAccount = $this->getclassHeaderFromAccount($classHeaderFromAccount);
$this->classHeaderToAccount = $this->getClassHeaderToAccount($classHeaderToAccount);
$this->classHeaderAmount = $this->getClassHeaderAmount($classHeaderAmount);
$this->classHeaderPaidAt = $this->getclassHeaderPaidAt($classHeaderPaidAt);
// From account Hide
$this->hideFromAccount = $hideFromAccount;
$this->hideFromAccountTitle = $hideFromAccountTitle;
$this->hideFromAccountName = $hideFromAccountName;
$this->hideFromAccountNumber = $hideFromAccountNumber;
$this->hideFromAccountBankName = $hideFromAccountBankName;
$this->hideFromAccountBankPhone = $hideFromAccountBankPhone;
$this->hideFromAccountBankAddress = $hideFromAccountBankAddress;
// From account text
$this->textFromAccountTitle = $this->getTextFromAccountTitle($textFromAccountTitle);
$this->textFromAccountNumber = $this->getTextFromAccountNumber($textFromAccountNumber);
// To account Hide
$this->hideToAccount = $hideToAccount;
$this->hideToAccountTitle = $hideToAccountTitle;
$this->hideToAccountName = $hideToAccountName;
$this->hideToAccountNumber = $hideToAccountNumber;
$this->hideToAccountBankName = $hideToAccountBankName;
$this->hideToAccountBankPhone = $hideToAccountBankPhone;
$this->hideToAccountBankAddress = $hideToAccountBankAddress;
// To account text
$this->textToAccountTitle = $this->getTextToAccountTitle($textToAccountTitle);
$this->textToAccountNumber = $this->getTextToAccountNumber($textToAccountNumber);
// Detail Information Hide checker
$this->hideDetails = $hideDetails;
$this->hideDetailTitle = $hideDetailTitle;
$this->hideDetailDate = $hideDetailDate;
$this->hideDetailPaymentMethod = $hideDetailPaymentMethod;
$this->hideDetailReference = $hideDetailReference;
$this->hideDetailDescription = $hideDetailDescription;
$this->hideDetailAmount = $hideDetailAmount;
// Releated Information Text
$this->textDetailTitle = $this->getTextDetailTitle($textDetailTitle);
$this->textDetailDate = $this->getTextDetailDate($textDetailDate);
$this->textDetailPaymentMethod = $this->getTextDetailPaymentMethod($textDetailPaymentMethod);
$this->textDetailReference = $this->getTextDetailReference($textDetailReference);
$this->textDetailDescription = $this->getTextDetailDescription($textDetailDescription);
$this->textDetailAmount = $this->getTextDetailAmount($textDetailAmount);
// Hide Attachment
$this->hideAttachment = $hideAttachment;
// Attachment data..
$this->attachment = '';
if (!empty($attachment)) {
$this->attachment = $attachment;
} else if (!empty($transfer)) {
$this->attachment = $transfer->attachment;
}
// Histories Hide
$this->hideFooter = $hideFooter;
$this->hideFooterHistories = $hideFooterHistories;
// Histories
$this->histories = $this->getHistories($histories);
$this->textHistories = $this->getTextHistories($textHistories);
$this->classFooterHistories = $this->getClassFooterHistories($classFooterHistories);
}
protected function getTransferTemplate($transferTemplate)
{
if (!empty($transferTemplate)) {
return $transferTemplate;
}
return setting('transfer.template');
}
protected function getRouteButtonAddNew($routeButtonAddNew)
{
if (!empty($routeButtonAddNew)) {
return $routeButtonAddNew;
}
return 'transfers.create';
}
protected function getRouteButtonEdit($routeButtonEdit)
{
if (!empty($routeButtonEdit)) {
return $routeButtonEdit;
}
return 'transfers.edit';
}
protected function getRouteButtonDuplicate($routeButtonDuplicate)
{
if (!empty($routeButtonDuplicate)) {
return $routeButtonDuplicate;
}
return 'transfers.duplicate';
}
protected function getRouteButtonPrint($routeButtonPrint)
{
if (!empty($routeButtonPrint)) {
return $routeButtonPrint;
}
return 'transfers.print';
}
protected function getSignedUrl($signedUrl)
{
if (!empty($signedUrl)) {
return $signedUrl;
}
try {
$signedUrl = URL::signedRoute('signed.transfer.show', [$this->transfer->id]);
} catch (\Exception $e) {
$signedUrl = false;
}
return $signedUrl;
}
protected function getRouteButtonEmail($routeButtonEmail)
{
if (!empty($routeButtonEmail)) {
return $routeButtonEmail;
}
return 'transfers.email';
}
protected function getRouteButtonPdf($routeButtonPdf)
{
if (!empty($routeButtonPdf)) {
return $routeButtonPdf;
}
return 'transfers.pdf';
}
protected function getRouteButtonDelete($routeButtonDelete)
{
if (!empty($routeButtonDelete)) {
return $routeButtonDelete;
}
return 'transfers.destroy';
}
protected function getPermissionCreate($permissionCreate)
{
if (!empty($permissionCreate)) {
return $permissionCreate;
}
return 'create-banking-transfers';
}
protected function getPermissionUpdate($permissionUpdate)
{
if (!empty($permissionUpdate)) {
return $permissionUpdate;
}
return 'update-banking-transfers';
}
protected function getPermissionDelete($permissionDelete)
{
if (!empty($permissionDelete)) {
return $permissionDelete;
}
return 'delete-banking-transfers';
}
protected function getTextHeaderFromAccount($textHeaderFromAccount)
{
if (!empty($textHeaderFromAccount)) {
return $textHeaderFromAccount;
}
return 'transfers.from_account';
}
protected function getTextHeaderToAccount($textHeaderToAccount)
{
if (!empty($textHeaderToAccount)) {
return $textHeaderToAccount;
}
return 'transfers.to_account';
}
protected function getTextHeaderAmount($textHeaderAmount)
{
if (!empty($textHeaderAmount)) {
return $textHeaderAmount;
}
return 'general.amount';
}
protected function getTextHeaderPaidAt($textHeaderPaidAt)
{
if (!empty($textHeaderPaidAt)) {
return $textHeaderPaidAt;
}
return 'general.date';
}
protected function getClassHeaderFromAccount($classHeaderFromAccount)
{
if (!empty($classHeaderFromAccount)) {
return $classHeaderFromAccount;
}
return 'col-4 col-lg-2';
}
protected function getClassHeaderToAccount($classHeaderToAccount)
{
if (!empty($classHeaderToAccount)) {
return $classHeaderToAccount;
}
return 'col-4 col-lg-6';
}
protected function getClassHeaderAmount($classHeaderAmount)
{
if (!empty($classHeaderAmount)) {
return $classHeaderAmount;
}
return 'col-4 col-lg-2 float-right';
}
protected function getClassHeaderPaidAt($classHeaderPaidAt)
{
if (!empty($classHeaderPaidAt)) {
return $classHeaderPaidAt;
}
return 'col-4 col-lg-2';
}
protected function getTextFromAccountTitle($textToAccountTitle)
{
if (!empty($textToAccountTitle)) {
return $textToAccountTitle;
}
return 'transfers.from_account';
}
protected function getTextFromAccountNumber($textFromAccountNumber)
{
if (!empty($textFromAccountNumber)) {
return $textFromAccountNumber;
}
return 'accounts.number';
}
protected function getTextToAccountTitle($textFromAccountTitle)
{
if (!empty($textFromAccountTitle)) {
return $textFromAccountTitle;
}
return 'transfers.to_account';
}
protected function getTextToAccountNumber($textToAccountNumber)
{
if (!empty($textToAccountNumber)) {
return $textToAccountNumber;
}
return 'accounts.number';
}
protected function getTextDetailTitle($textDetailTitle)
{
if (!empty($textDetailTitle)) {
return $textDetailTitle;
}
return 'transfers.details';
}
protected function getTextDetailDate($textDetailDate)
{
if (!empty($textDetailDate)) {
return $textDetailDate;
}
return 'general.date';
}
protected function getTextDetailPaymentMethod($textDetailPaymentMethod)
{
if (!empty($textDetailPaymentMethod)) {
return $textDetailPaymentMethod;
}
return 'general.payment_methods';
}
protected function getTextDetailReference($textDetailReference)
{
if (!empty($textDetailReference)) {
return $textDetailReference;
}
return 'general.reference';
}
protected function getTextDetailDescription($textDetailDescription)
{
if (!empty($textDetailDescription)) {
return $textDetailDescription;
}
return 'general.description';
}
protected function getTextDetailAmount($textDetailAmount)
{
if (!empty($textDetailAmount)) {
return $textDetailAmount;
}
return 'general.amount';
}
protected function getHistories($histories)
{
if (!empty($histories)) {
return $histories;
}
$histories[] = $this->transfer;
return $histories;
}
protected function getTextHistories($textHistories)
{
if (!empty($textHistories)) {
return $textHistories;
}
return 'invoices.histories';
}
protected function getClassFooterHistories($classFooterHistories)
{
if (!empty($classFooterHistories)) {
return $classFooterHistories;
}
return 'col-sm-6 col-md-6 col-lg-6 col-xl-6';
}
}

View File

@ -0,0 +1,278 @@
<?php
namespace App\Abstracts\View\Components;
use App\Abstracts\View\Components\Transfer as Base;
use App\Models\Common\Media;
use App\Traits\DateTime;
use App\Traits\Transactions;
use App\Utilities\Modules;
use File;
use Illuminate\Support\Facades\Log;
use Image;
use Intervention\Image\Exception\NotReadableException;
use Storage;
use Illuminate\Support\Str;
use Illuminate\View\Component;
abstract class TransferTemplate extends Component
{
use DateTime;
use Transactions;
public $transfer;
/** @var array */
public $payment_methods;
/** @var bool */
public $hideFromAccount;
/** @var bool */
public $hideFromAccountTitle;
/** @var bool */
public $hideFromAccountName;
/** @var bool */
public $hideFromAccountNumber;
/** @var bool */
public $hideFromAccountBankName;
/** @var bool */
public $hideFromAccountBankPhone;
/** @var bool */
public $hideFromAccountBankAddress;
/** @var string */
public $textFromAccountTitle;
/** @var string */
public $textFromAccountNumber;
/** @var bool */
public $hideToAccount;
/** @var bool */
public $hideToAccountTitle;
/** @var bool */
public $hideToAccountName;
/** @var bool */
public $hideToAccountNumber;
/** @var bool */
public $hideToAccountBankName;
/** @var bool */
public $hideToAccountBankPhone;
/** @var bool */
public $hideToAccountBankAddress;
/** @var string */
public $textToAccountTitle;
/** @var string */
public $textToAccountNumber;
/** @var bool */
public $hideDetails;
/** @var bool */
public $hideDetailTitle;
/** @var bool */
public $hideDetailDate;
/** @var bool */
public $hideDetailPaymentMethod;
/** @var bool */
public $hideDetailReference;
/** @var bool */
public $hideDetailDescription;
/** @var bool */
public $hideDetailAmount;
/** @var string */
public $textDetailTitle;
/** @var string */
public $textDetailDate;
/** @var string */
public $textDetailPaymentMethod;
/** @var string */
public $textDetailReference;
/** @var string */
public $textDetailDescription;
/** @var string */
public $textDetailAmount;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct(
$transfer, array $payment_methods = [],
bool $hideFromAccount = false, bool $hideFromAccountTitle = false, bool $hideFromAccountName = false, bool $hideFromAccountNumber = false,
bool $hideFromAccountBankName = false, bool $hideFromAccountBankPhone = false, bool $hideFromAccountBankAddress = false,
string $textFromAccountTitle = '', string $textFromAccountNumber = '',
bool $hideToAccount = false, bool $hideToAccountTitle = false, bool $hideToAccountName = false, bool $hideToAccountNumber = false,
bool $hideToAccountBankName = false, bool $hideToAccountBankPhone = false, bool $hideToAccountBankAddress = false,
string $textToAccountTitle = '', string $textToAccountNumber = '',
bool $hideDetails = false, bool $hideDetailTitle = false, bool $hideDetailDate = false, bool $hideDetailPaymentMethod = false,
bool $hideDetailReference = false, bool $hideDetailDescription = false, bool $hideDetailAmount = false,
string $textDetailTitle = '', string $textDetailDate = '', string $textDetailPaymentMethod = '', string $textDetailReference = '',
string $textDetailDescription = '', string $textDetailAmount = ''
) {
$this->transfer = $transfer;
$this->payment_methods = ($payment_methods) ?: Modules::getPaymentMethods('all');
// From account Hide
$this->hideFromAccount = $hideFromAccount;
$this->hideFromAccountTitle = $hideFromAccountTitle;
$this->hideFromAccountName = $hideFromAccountName;
$this->hideFromAccountNumber = $hideFromAccountNumber;
$this->hideFromAccountBankName = $hideFromAccountBankName;
$this->hideFromAccountBankPhone = $hideFromAccountBankPhone;
$this->hideFromAccountBankAddress = $hideFromAccountBankAddress;
// From account text
$this->textFromAccountTitle = $this->getTextFromAccountTitle($textFromAccountTitle);
$this->textFromAccountNumber = $this->getTextFromAccountNumber($textFromAccountNumber);
// To account Hide
$this->hideToAccount = $hideToAccount;
$this->hideToAccountTitle = $hideToAccountTitle;
$this->hideToAccountName = $hideToAccountName;
$this->hideToAccountNumber = $hideToAccountNumber;
$this->hideToAccountBankName = $hideToAccountBankName;
$this->hideToAccountBankPhone = $hideToAccountBankPhone;
$this->hideToAccountBankAddress = $hideToAccountBankAddress;
// To account text
$this->textToAccountTitle = $this->getTextToAccountTitle($textToAccountTitle);
$this->textToAccountNumber = $this->getTextToAccountNumber($textToAccountNumber);
// Detail Information Hide checker
$this->hideDetails = $hideDetails;
$this->hideDetailTitle = $hideDetailTitle;
$this->hideDetailDate = $hideDetailDate;
$this->hideDetailPaymentMethod = $hideDetailPaymentMethod;
$this->hideDetailReference = $hideDetailReference;
$this->hideDetailDescription = $hideDetailDescription;
$this->hideDetailAmount = $hideDetailAmount;
// Releated Information Text
$this->textDetailTitle = $this->getTextDetailTitle($textDetailTitle);
$this->textDetailDate = $this->getTextDetailDate($textDetailDate);
$this->textDetailPaymentMethod = $this->getTextDetailPaymentMethod($textDetailPaymentMethod);
$this->textDetailReference = $this->getTextDetailReference($textDetailReference);
$this->textDetailDescription = $this->getTextDetailDescription($textDetailDescription);
$this->textDetailAmount = $this->getTextDetailAmount($textDetailAmount);
}
protected function getTextFromAccountTitle($textToAccountTitle)
{
if (!empty($textToAccountTitle)) {
return $textToAccountTitle;
}
return 'transfers.from_account';
}
protected function getTextFromAccountNumber($textFromAccountNumber)
{
if (!empty($textFromAccountNumber)) {
return $textFromAccountNumber;
}
return 'accounts.number';
}
protected function getTextToAccountTitle($textFromAccountTitle)
{
if (!empty($textFromAccountTitle)) {
return $textFromAccountTitle;
}
return 'transfers.to_account';
}
protected function getTextToAccountNumber($textToAccountNumber)
{
if (!empty($textToAccountNumber)) {
return $textToAccountNumber;
}
return 'accounts.number';
}
protected function getTextDetailTitle($textDetailTitle)
{
if (!empty($textDetailTitle)) {
return $textDetailTitle;
}
return 'transfers.details';
}
protected function getTextDetailDate($textDetailDate)
{
if (!empty($textDetailDate)) {
return $textDetailDate;
}
return 'general.date';
}
protected function getTextDetailPaymentMethod($textDetailPaymentMethod)
{
if (!empty($textDetailPaymentMethod)) {
return $textDetailPaymentMethod;
}
return 'general.payment_methods';
}
protected function getTextDetailReference($textDetailReference)
{
if (!empty($textDetailReference)) {
return $textDetailReference;
}
return 'general.reference';
}
protected function getTextDetailDescription($textDetailDescription)
{
if (!empty($textDetailDescription)) {
return $textDetailDescription;
}
return 'general.description';
}
protected function getTextDetailAmount($textDetailAmount)
{
if (!empty($textDetailAmount)) {
return $textDetailAmount;
}
return 'general.amount';
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace App\Events\Banking;
use Illuminate\Queue\SerializesModels;
class TransferPrinting
{
use SerializesModels;
public $transfer;
/**
* Create a new event instance.
*
* @param $transfer
*/
public function __construct($transfer)
{
$this->transfer = $transfer;
}
}

View File

@ -15,6 +15,7 @@ use App\Models\Banking\Transfer;
use App\Models\Setting\Currency; use App\Models\Setting\Currency;
use App\Utilities\Modules; use App\Utilities\Modules;
use Date; use Date;
use Illuminate\Support\Str;
class Transfers extends Controller class Transfers extends Controller
{ {
@ -37,9 +38,9 @@ class Transfers extends Controller
* *
* @return Response * @return Response
*/ */
public function show() public function show(Transfer $transfer)
{ {
return redirect()->route('transfers.index'); return view('banking.transfers.show', compact('transfer'));
} }
/** /**
@ -53,11 +54,19 @@ class Transfers extends Controller
$payment_methods = Modules::getPaymentMethods(); $payment_methods = Modules::getPaymentMethods();
$currencies = Currency::enabled()->orderBy('name')->get()->makeHidden(['id', 'company_id', 'created_at', 'updated_at', 'deleted_at']);
$currency = Currency::where('code', setting('default.currency'))->first(); $currency = Currency::where('code', setting('default.currency'))->first();
return view('banking.transfers.create', compact('accounts', 'payment_methods', 'currencies', 'currency')); $file_type_mimes = explode(',', config('filesystems.mimes'));
$file_types = [];
foreach ($file_type_mimes as $mime) {
$file_types[] = '.' . $mime;
}
$file_types = implode(',', $file_types);
return view('banking.transfers.create', compact('accounts', 'payment_methods', 'currency', 'file_types'));
} }
/** /**
@ -72,7 +81,7 @@ class Transfers extends Controller
$response = $this->ajaxDispatch(new CreateTransfer($request)); $response = $this->ajaxDispatch(new CreateTransfer($request));
if ($response['success']) { if ($response['success']) {
$response['redirect'] = route('transfers.index'); $response['redirect'] = route('transfers.show', $response['data']->id);
$message = trans('messages.success.added', ['type' => trans_choice('general.transfers', 1)]); $message = trans('messages.success.added', ['type' => trans_choice('general.transfers', 1)]);
@ -88,6 +97,24 @@ class Transfers extends Controller
return response()->json($response); return response()->json($response);
} }
/**
* Duplicate the specified resource.
*
* @param Transfer $transfer
*
* @return Response
*/
public function duplicate(Transfer $transfer)
{
$clone = $transfer->duplicate();
$message = trans('messages.success.duplicated', ['type' => trans_choice('general.transfers', 1)]);
flash($message)->success();
return redirect()->route('transfers.show', $clone->id);
}
/** /**
* Import the specified resource. * Import the specified resource.
* *
@ -139,11 +166,19 @@ class Transfers extends Controller
$account = $transfer->expense_transaction->account; $account = $transfer->expense_transaction->account;
$currencies = Currency::enabled()->orderBy('name')->get()->makeHidden(['id', 'company_id', 'created_at', 'updated_at', 'deleted_at']);
$currency = Currency::where('code', $account->currency_code)->first(); $currency = Currency::where('code', $account->currency_code)->first();
return view('banking.transfers.edit', compact('transfer', 'accounts', 'payment_methods', 'currencies', 'currency')); $file_type_mimes = explode(',', config('filesystems.mimes'));
$file_types = [];
foreach ($file_type_mimes as $mime) {
$file_types[] = '.' . $mime;
}
$file_types = implode(',', $file_types);
return view('banking.transfers.edit', compact('transfer', 'accounts', 'payment_methods', 'currency', 'file_types'));
} }
/** /**
@ -159,7 +194,7 @@ class Transfers extends Controller
$response = $this->ajaxDispatch(new UpdateTransfer($transfer, $request)); $response = $this->ajaxDispatch(new UpdateTransfer($transfer, $request));
if ($response['success']) { if ($response['success']) {
$response['redirect'] = route('transfers.index'); $response['redirect'] = route('transfers.show', $transfer->id);
$message = trans('messages.success.updated', ['type' => trans_choice('general.transfers', 1)]); $message = trans('messages.success.updated', ['type' => trans_choice('general.transfers', 1)]);
@ -210,4 +245,46 @@ class Transfers extends Controller
{ {
return $this->exportExcel(new Export, trans_choice('general.transfers', 2)); return $this->exportExcel(new Export, trans_choice('general.transfers', 2));
} }
/**
* Print the transfer.
*
* @param Transfer $transfer
*
* @return Response
*/
public function printTransfer(Transfer $transfer)
{
event(new \App\Events\Banking\TransferPrinting($transfer));
$view = view($transfer->template_path, compact('transfer'));
return mb_convert_encoding($view, 'HTML-ENTITIES', 'UTF-8');
}
/**
* Download the PDF file of transfer.
*
* @param Transfer $transfer
*
* @return Response
*/
public function pdfTransfer(Transfer $transfer)
{
event(new \App\Events\Banking\TransferPrinting($transfer));
$currency_style = true;
$view = view($transfer->template_path, compact('transfer', 'currency_style'))->render();
$html = mb_convert_encoding($view, 'HTML-ENTITIES', 'UTF-8');
$pdf = app('dompdf.wrapper');
$pdf->loadHTML($html);
//$pdf->setPaper('A4', 'portrait');
$file_name = trans_choice('general.transfers', 1) . '-' . Str::slug($transfer->id, '-', language()->getShortCode()) . '-' . time() . '.pdf';
return $pdf->download($file_name);
}
} }

View File

@ -0,0 +1,67 @@
<?php
namespace App\Http\Controllers\Modals;
use App\Abstracts\Http\Controller;
use App\Http\Requests\Setting\Setting as Request;
class TransferTemplates extends Controller
{
public $skip_keys = ['company_id', '_method', '_token', '_prefix', '_template'];
public function __construct()
{
// Add CRUD permission check
$this->middleware('permission:create-settings-settings')->only('create', 'store');
$this->middleware('permission:read-settings-settings')->only('index', 'edit');
$this->middleware('permission:update-settings-settings')->only('update', 'enable', 'disable');
$this->middleware('permission:delete-settings-settings')->only('destroy');
}
/**
* Update the specified resource in storage.
*
* @param Request $request
*
* @return Response
*/
public function update(Request $request)
{
$fields = $request->all();
$prefix = $request->get('_prefix', 'transfer');
$company_id = $request->get('company_id');
if (empty($company_id)) {
$company_id = company_id();
}
foreach ($fields as $key => $value) {
$real_key = $prefix . '.' . $key;
// Don't process unwanted keys
if (in_array($key, $this->skip_keys)) {
continue;
}
setting()->set($real_key, $value);
}
// Save all settings
setting()->save();
$message = trans('messages.success.updated', ['type' => trans_choice('general.settings', 2)]);
$response = [
'status' => null,
'success' => true,
'error' => false,
'message' => $message,
'data' => null,
'redirect' => route('settings.invoice.edit'),
];
flash($message)->success();
return response()->json($response);
}
}

View File

@ -84,6 +84,15 @@ class CreateTransfer extends Job
'expense_transaction_id' => $expense_transaction->id, 'expense_transaction_id' => $expense_transaction->id,
'income_transaction_id' => $income_transaction->id, 'income_transaction_id' => $income_transaction->id,
]); ]);
// Upload attachment
if ($this->request->file('attachment')) {
foreach ($this->request->file('attachment') as $attachment) {
$media = $this->getMedia($attachment, 'transfers');
$this->transfer->attachMedia($media, 'attachment');
}
}
}); });
return $this->transfer; return $this->transfer;

View File

@ -38,6 +38,19 @@ class UpdateTransfer extends Job
public function handle() public function handle()
{ {
\DB::transaction(function () { \DB::transaction(function () {
// Upload attachment
if ($this->request->file('attachment')) {
$this->deleteMediaModel($this->transfer, 'attachment', $this->request);
foreach ($this->request->file('attachment') as $attachment) {
$media = $this->getMedia($attachment, 'transfers');
$this->transfer->attachMedia($media, 'attachment');
}
} elseif (!$this->request->file('attachment') && $this->transfer->attachment) {
$this->deleteMediaModel($this->transfer, 'attachment', $this->request);
}
$expense_currency_code = $this->getCurrencyCode('from'); $expense_currency_code = $this->getCurrencyCode('from');
$income_currency_code = $this->getCurrencyCode('to'); $income_currency_code = $this->getCurrencyCode('to');

View File

@ -3,16 +3,20 @@
namespace App\Models\Banking; namespace App\Models\Banking;
use App\Abstracts\Model; use App\Abstracts\Model;
use App\Models\Common\Media as MediaModel;
use App\Traits\Currencies; use App\Traits\Currencies;
use App\Traits\Media;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Znck\Eloquent\Traits\BelongsToThrough; use Znck\Eloquent\Traits\BelongsToThrough;
class Transfer extends Model class Transfer extends Model
{ {
use BelongsToThrough, Currencies, HasFactory; use BelongsToThrough, Currencies, HasFactory, Media;
protected $table = 'transfers'; protected $table = 'transfers';
protected $appends = ['attachment'];
/** /**
* Attributes that should be mass-assignable. * Attributes that should be mass-assignable.
* *
@ -59,6 +63,36 @@ class Transfer extends Model
)->withDefault(['name' => trans('general.na')]); )->withDefault(['name' => trans('general.na')]);
} }
/**
* Get the current balance.
*
* @return string
*/
public function getAttachmentAttribute($value = null)
{
if (!empty($value) && !$this->hasMedia('attachment')) {
return $value;
} elseif (!$this->hasMedia('attachment')) {
return false;
}
return $this->getMedia('attachment')->all();
}
public function delete_attachment()
{
if ($attachments = $this->attachment) {
foreach ($attachments as $file) {
MediaModel::where('id', $file->id)->delete();
}
}
}
public function getTemplatePathAttribute($value = null)
{
return $value ?: 'banking.transfers.print_' . setting('transfer.template');
}
/** /**
* Create a new factory instance for the model. * Create a new factory instance for the model.
* *

View File

@ -0,0 +1,55 @@
<?php
namespace App\View\Components\Transfers;
use Illuminate\View\Component;
class Script extends Component
{
/** @var string */
public $type;
/** @var string */
public $scriptFile;
/** @var string */
public $version;
public $transfer;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct(string $type = '', string $scriptFile = '', string $version = '', $transfer = false)
{
$this->type = $type;
$this->scriptFile = ($scriptFile) ? $scriptFile : 'public/js/banking/transfers.js';
$this->version = $this->getVersion($version);
$this->transfer = $transfer;
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.script');
}
protected function getVersion($version)
{
if (!empty($version)) {
return $version;
}
if ($alias = config('type.' . $this->type . '.alias')) {
return module_version($alias);
}
return version('short');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Show;
use App\Abstracts\View\Components\TransferShow as Component;
class Attachment extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.show.attachment');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Show;
use App\Abstracts\View\Components\TransferShow as Component;
class Content extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.show.content');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Show;
use App\Abstracts\View\Components\TransferShow as Component;
class Footer extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.show.footer');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Show;
use App\Abstracts\View\Components\TransferShow as Component;
class Header extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.show.header');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Show;
use App\Abstracts\View\Components\TransferShow as Component;
class Histories extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.show.histories');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Show;
use App\Abstracts\View\Components\TransferShow as Component;
class TopButtons extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.show.top-buttons');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Show;
use App\Abstracts\View\Components\TransferShow as Component;
class Transfer extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.show.transfer');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Template;
use App\Abstracts\View\Components\TransferTemplate as Component;
class Ddefault extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.template.default');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Template;
use App\Abstracts\View\Components\TransferTemplate as Component;
class Second extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.template.second');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Template;
use App\Abstracts\View\Components\TransferTemplate as Component;
class Third extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.template.third');
}
}

View File

@ -164,6 +164,9 @@ return [
'expense' => env('SETTING_FALLBACK_TRANSACTION_TYPE_EXPENSE', 'expense'), 'expense' => env('SETTING_FALLBACK_TRANSACTION_TYPE_EXPENSE', 'expense'),
], ],
], ],
'transfer' => [
'template' => env('SETTING_FALLBACK_BANKING_TEMPLATE', 'default'),
],
], ],
/* /*

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

@ -19,7 +19,7 @@ import BulkAction from './../../plugins/bulk-action';
Vue.use(DashboardPlugin); Vue.use(DashboardPlugin);
const app = new Vue({ const app = new Vue({
el: '#app', el: '#main-body',
mixins: [ mixins: [
Global Global
@ -30,6 +30,15 @@ const app = new Vue({
form: new Form('transfer'), form: new Form('transfer'),
bulk_action: new BulkAction('transfers'), bulk_action: new BulkAction('transfers'),
show_rate: false, show_rate: false,
transfer_form: new Form('template'),
template: {
modal: false,
title: '',
message: '',
html: '',
errors: new Error()
},
} }
}, },
@ -87,5 +96,35 @@ const app = new Vue({
} }
}); });
}, },
onTemplate() {
this.template.modal = true;
this.transfer_form = new Form('template');
this.transfer_form.template = this.transfer_form._template;
},
addTemplate() {
if (this.transfer_form.template != 1) {
this.transfer_form.submit();
this.template.errors = this.transfer_form.errors;
}
this.form.loading = true;
this.$emit("confirm");
},
closeTemplate() {
this.template = {
modal: false,
title: '',
message: '',
errors: this.transfer_form.errors
};
},
} }
}); });

View File

@ -6,6 +6,7 @@ return [
'from_account_rate' => 'From Account Rate', 'from_account_rate' => 'From Account Rate',
'to_account' => 'To Account', 'to_account' => 'To Account',
'to_account_rate' => 'To Account Rate', 'to_account_rate' => 'To Account Rate',
'details' => 'Detail|Details',
'messages' => [ 'messages' => [
'delete' => ':from to :to (:amount)', 'delete' => ':from to :to (:amount)',

View File

@ -41,6 +41,8 @@
{{ Form::textGroup('reference', trans('general.reference'), 'file', []) }} {{ Form::textGroup('reference', trans('general.reference'), 'file', []) }}
{{ Form::fileGroup('attachment', trans('general.attachment'), '', ['dropzone-class' => 'w-100', 'multiple' => 'multiple', 'options' => ['acceptedFiles' => $file_types]], null , 'col-md-12') }}
{!! Form::hidden('currency_code', null, ['id' => 'currency_code', 'v-model' => 'form.currency_code']) !!} {!! Form::hidden('currency_code', null, ['id' => 'currency_code', 'v-model' => 'form.currency_code']) !!}
{!! Form::hidden('currency_rate', null, ['id' => 'currency_rate', 'v-model' => 'form.currency_rate']) !!} {!! Form::hidden('currency_rate', null, ['id' => 'currency_rate', 'v-model' => 'form.currency_rate']) !!}
</div> </div>

View File

@ -42,6 +42,8 @@
{{ Form::textGroup('reference', trans('general.reference'), 'file', []) }} {{ Form::textGroup('reference', trans('general.reference'), 'file', []) }}
{{ Form::fileGroup('attachment', trans('general.attachment'), '', ['dropzone-class' => 'w-100', 'multiple' => 'multiple', 'options' => ['acceptedFiles' => $file_types]], !empty($transfer) ? $transfer->attachment : null , 'col-md-12') }}
{!! Form::hidden('currency_code', $currency->code, ['id' => 'currency_code', 'v-model' => 'form.currency_code']) !!} {!! Form::hidden('currency_code', $currency->code, ['id' => 'currency_code', 'v-model' => 'form.currency_code']) !!}
{!! Form::hidden('currency_rate', $currency->rate, ['id' => 'currency_rate', 'v-model' => 'form.currency_rate']) !!} {!! Form::hidden('currency_rate', $currency->rate, ['id' => 'currency_rate', 'v-model' => 'form.currency_rate']) !!}
</div> </div>

View File

@ -52,7 +52,7 @@
@endphp @endphp
<tr class="row align-items-center border-top-1"> <tr class="row align-items-center border-top-1">
<td class="col-sm-2 col-md-1 d-none d-sm-block">{{ Form::bulkActionGroup($item->id, $item->expense_transaction->account->name) }}</td> <td class="col-sm-2 col-md-1 d-none d-sm-block">{{ Form::bulkActionGroup($item->id, $item->expense_transaction->account->name) }}</td>
<td class="col-md-2 d-none d-md-block"><a class="col-aka" href="{{ route('transfers.edit', $item->id) }}">@date($item->expense_transaction->paid_at)</a></td> <td class="col-md-2 d-none d-md-block"><a class="col-aka" href="{{ route('transfers.show', $item->id) }}">@date($item->expense_transaction->paid_at)</a></td>
<td class="col-sm-2 col-md-3 d-none d-sm-block long-texts">{{ $item->expense_transaction->account->name }}</td> <td class="col-sm-2 col-md-3 d-none d-sm-block long-texts">{{ $item->expense_transaction->account->name }}</td>
<td class="col-xs-4 col-sm-4 col-md-2 long-texts">{{ $item->income_transaction->account->name }}</td> <td class="col-xs-4 col-sm-4 col-md-2 long-texts">{{ $item->income_transaction->account->name }}</td>
<td class="col-xs-4 col-sm-2 col-md-2 text-right long-texts">@money($item->expense_transaction->amount, $item->expense_transaction->currency_code, true)</td> <td class="col-xs-4 col-sm-2 col-md-2 text-right long-texts">@money($item->expense_transaction->amount, $item->expense_transaction->currency_code, true)</td>
@ -62,6 +62,8 @@
<i class="fa fa-ellipsis-h text-muted"></i> <i class="fa fa-ellipsis-h text-muted"></i>
</a> </a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow"> <div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
<a class="dropdown-item" href="{{ route('transfers.show', $item->id) }}">{{ trans('general.show') }}</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{ route('transfers.edit', $item->id) }}">{{ trans('general.edit') }}</a> <a class="dropdown-item" href="{{ route('transfers.edit', $item->id) }}">{{ trans('general.edit') }}</a>
@can('delete-banking-transfers') @can('delete-banking-transfers')
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>

View File

@ -0,0 +1,9 @@
@extends('layouts.print')
@section('title', trans_choice('general.transfers', 1))
@section('content')
<x-transfers.template.ddefault
:transfer="$transfer"
/>
@endsection

View File

@ -0,0 +1,9 @@
@extends('layouts.print')
@section('title', trans_choice('general.transfers', 1))
@section('content')
<x-transfers.template.second
:transfer="$transfer"
/>
@endsection

View File

@ -0,0 +1,9 @@
@extends('layouts.print')
@section('title', trans_choice('general.transfers', 1))
@section('content')
<x-transfers.template.third
:transfer="$transfer"
/>
@endsection

View File

@ -0,0 +1,44 @@
@extends('layouts.admin')
@section('title', trans_choice('general.transfers', 1))
@section('new_button')
<x-transfers.show.top-buttons :transfer="$transfer" />
@endsection
@section('content')
<x-transfers.show.content :transfer="$transfer" />
@endsection
@push('content_content_end')
<akaunting-modal
:show="template.modal"
@cancel="template.modal = false"
:title="'{{ trans('settings.invoice.choose_template') }}'"
:message="template.html"
:button_cancel="'{{ trans('general.button.save') }}'"
:button_delete="'{{ trans('general.button.cancel') }}'">
<template #modal-body>
@include('modals.settings.transfer_template')
</template>
<template #card-footer>
<div class="float-right">
<button type="button" class="btn btn-outline-secondary" @click="closeTemplate">
{{ trans('general.cancel') }}
</button>
<button :disabled="form.loading" type="button" class="btn btn-success button-submit" @click="addTemplate">
<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('general.confirm') }}</span>
</button>
</div>
</template>
</akaunting-modal>
@endpush
@push('scripts_start')
<link rel="stylesheet" href="{{ asset('public/css/print.css?v=' . version('short')) }}" type="text/css">
<x-transfers.script />
@endpush

View File

@ -0,0 +1 @@
<script src="{{ asset( $scriptFile . '?v=' . $version) }}"></script>

View File

@ -0,0 +1,9 @@
@if ($attachment)
<div class="row align-items-center">
@foreach ($attachment as $file)
<div class="col-xs-12 col-sm-4 mb-4">
@include('partials.media.file')
</div>
@endforeach
</div>
@endif

View File

@ -0,0 +1,86 @@
@stack('content_header_start')
@if (!$hideHeader)
<x-transfers.show.header
:transfer="$transfer"
hide-header-from-account="{{ $hideHeaderFromAccount }}"
text-header-from-account="{{ $textHeaderFromAccount }}"
class-header-from-account="{{ $classHeaderFromAccount }}"
hide-header-to-account="{{ $hideHeaderToAccount }}"
text-header-to-account="{{ $textHeaderToAccount }}"
class-header-to-account="{{ $classHeaderToAccount }}"
hide-header-amount="{{ $hideHeaderAmount }}"
text-header-amount="{{ $textHeaderAmount }}"
class-header-amount="{{ $classHeaderAmount }}"
hide-header-paid-at="{{ $hideHeaderPaidAt }}"
text-header-paid-at="{{ $textHeaderPaidAt }}"
class-header-paid-at="{{ $classHeaderPaidAt }}"
/>
@endif
@stack('content_header_end')
@stack('transfer_start')
<x-transfers.show.transfer
:transfer="$transfer"
transfer-template="{{ $transferTemplate }}"
hide-from-account="{{ $hideFromAccount }}"
hide-from-account-title="{{ $hideFromAccountTitle }}"
hide-from-account-name="{{ $hideFromAccountName }}"
hide-from-account-number="{{ $hideFromAccountNumber }}"
hide-from-account-bank-name="{{ $hideFromAccountBankName }}"
hide-from-account-bank-phone="{{ $hideFromAccountBankPhone }}"
hide-from-account-bank-address="{{ $hideFromAccountBankAddress }}"
text-from-account-title="{{ $textFromAccountTitle }}"
text-from-account-number="{{ $textFromAccountNumber }}"
hide-to-account="{{ $hideToAccount }}"
hide-to-account-title="{{ $hideToAccountTitle }}"
hide-to-account-name="{{ $hideToAccountName }}"
hide-to-account-number="{{ $hideToAccountNumber }}"
hide-to-account-bank-name="{{ $hideToAccountBankName }}"
hide-to-account-bank-phone="{{ $hideToAccountBankPhone }}"
hide-to-account-bank-address="{{ $hideToAccountBankAddress }}"
text-to-account-title="{{ $textToAccountTitle }}"
text-to-account-number="{{ $textToAccountNumber }}"
hide-details="{{ $hideDetails }}"
hide-detail-title="{{ $hideDetailTitle }}"
hide-detail-date="{{ $hideDetailDate }}"
hide-detail-payment-method="{{ $hideDetailPaymentMethod }}"
hide-detail-reference="{{ $hideDetailReference }}"
hide-detail-description="{{ $hideDetailDescription }}"
hide-detail-amount="{{ $hideDetailAmount }}"
text-detail-title="{{ $textDetailTitle }}"
text-detail-date="{{ $textDetailDate }}"
text-detail-payment-method="{{ $textDetailPaymentMethod }}"
text-detail-reference="{{ $textDetailReference }}"
text-detail-description="{{ $textDetailDescription }}"
text-detail-amount="{{ $textDetailAmount }}"
/>
@stack('transfer_end')
@stack('attachment_start')
@if (!$hideAttachment)
<x-transfers.show.attachment
:transfer="$transfer"
:attachment="$attachment"
/>
@endif
@stack('attachment_end')
@stack('row_footer_start')
@if (!$hideFooter)
<x-transfers.show.footer
:transfer="$transfer"
:histories="$histories"
class-footer-histories="{{ $classFooterHistories }}"
hide-footer-histories="{{ $hideFooterHistories }}"
text-histories="{{ $textHistories }}"
/>
@endif
@stack('row_footer_end')
{{ Form::hidden('transfer_id', $transfer->id, ['id' => 'transfer_id']) }}

View File

@ -0,0 +1,13 @@
<div class="row">
@stack('row_footer_histories_start')
@if (!$hideFooterHistories)
<div class="{{ $classFooterHistories }}">
<x-transfers.show.histories
:transfer="$transfer"
:histories="$histories"
text-histories="{{ $textHistories }}"
/>
</div>
@endif
@stack('row_footer_histories_end')
</div>

View File

@ -0,0 +1,69 @@
<div class="row" style="font-size: inherit !important">
@stack('header_account_start')
@if (!$hideHeaderFromAccount)
<div class="{{ $classHeaderFromAccount }}">
{{ trans_choice($textHeaderFromAccount, 1) }}
<br>
<strong>
<span class="float-left long-texts mwpx-200 transaction-head-text">
{{ $transfer->expense_transaction->account->name }}
</span>
</strong>
<br><br>
</div>
@endif
@stack('header_account_end')
@stack('header_category_start')
@if (!$hideHeaderToAccount)
<div class="{{ $classHeaderToAccount }}">
{{ trans_choice($textHeaderToAccount, 1) }}
<br>
<strong>
<span class="float-left long-texts mwpx-300 transaction-head-text">
{{ $transfer->income_transaction->account->name }}
</span>
</strong>
<br><br>
</div>
@endif
@stack('header_category_end')
@stack('header_amount_start')
@if (!$hideHeaderAmount)
<div class="{{ $classHeaderAmount }}">
<span class="float-right">
{{ trans($textHeaderAmount) }}
</span>
<br>
<strong>
<span class="float-right long-texts mwpx-100 transaction-head-text">
@money($transfer->expense_transaction->amount, $transfer->from_currency_code, true)
</span>
</strong>
<br><br>
</div>
@endif
@stack('header_amount_end')
@stack('header_paid_at_start')
@if (!$hideHeaderPaidAt)
<div class="{{ $classHeaderPaidAt }}">
<span class="float-right">
{{ trans($textHeaderPaidAt) }}
</span>
<br>
<strong>
<span class="float-right long-texts mwpx-100 transaction-head-text">
@date($transfer->transferred_at)
</span>
</strong>
<br><br>
</div>
@endif
@stack('header_paid_at_end')
</div>

View File

@ -0,0 +1,47 @@
<div class="accordion">
<div class="card">
<div class="card-header" id="accordion-histories-header" data-toggle="collapse" data-target="#accordion-histories-body" aria-expanded="false" aria-controls="accordion-histories-body">
<h4 class="mb-0">{{ trans($textHistories) }}</h4>
</div>
<div id="accordion-histories-body" class="collapse hide" aria-labelledby="accordion-histories-header">
<div class="table-responsive">
<table class="table table-flush table-hover">
<thead class="thead-light">
@stack('row_footer_histories_head_tr_start')
<tr class="row table-head-line">
@stack('row_footer_histories_head_start')
<th class="col-xs-4 col-sm-3">
{{ trans('general.date') }}
</th>
<th class="col-xs-8 col-sm-9 text-left long-texts">
{{ trans('general.created') }}
</th>
@stack('row_footer_histories_head_end')
</tr>
@stack('row_footer_histories_head_tr_end')
</thead>
<tbody>
@stack('row_footer_histories_body_tr_start')
@foreach($histories as $history)
<tr class="row align-items-center border-top-1 tr-py">
@stack('row_footer_histories_body_td_start')
<td class="col-xs-4 col-sm-3">
@date($history->created_at)
</td>
<td class="col-xs-4 col-sm-6 text-left long-texts">
{{ $history->owner->name }}
</td>
@stack('row_footer_histories_body_td_end')
</tr>
@endforeach
@stack('row_footer_histories_body_tr_end')
</tbody>
</table>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,93 @@
@stack('button_group_start')
@if (!$hideButtonMoreActions)
<div class="dropup header-drop-top">
<button type="button" class="btn btn-white btn-sm" data-toggle="dropdown" aria-expanded="false">
<i class="fa fa-chevron-down"></i>&nbsp; {{ trans('general.more_actions') }}
</button>
<div class="dropdown-menu" role="menu">
@stack('button_dropdown_start')
@stack('edit_button_start')
@if (!$hideButtonEdit)
@can($permissionUpdate)
<a class="dropdown-item" href="{{ route($routeButtonEdit, $transfer->id) }}">
{{ trans('general.edit') }}
</a>
@endcan
@endif
@stack('edit_button_end')
@stack('duplicate_button_start')
@if (!$hideButtonDuplicate)
@can($permissionCreate)
<a class="dropdown-item" href="{{ route($routeButtonDuplicate, $transfer->id) }}">
{{ trans('general.duplicate') }}
</a>
@endcan
@endif
@stack('duplicate_button_end')
@stack('button_dropdown_divider_1_start')
@if (!$hideButtonGroupDivider1)
<div class="dropdown-divider"></div>
@endif
@stack('button_dropdown_divider_1_end')
@if (!$hideButtonPrint)
@stack('button_print_start')
<a class="dropdown-item" href="{{ route($routeButtonPrint, $transfer->id) }}" target="_blank">
{{ trans('general.print') }}
</a>
@stack('button_print_end')
@endif
@stack('button_pdf_start')
@if (!$hideButtonPdf)
<a class="dropdown-item" href="{{ route($routeButtonPdf, $transfer->id) }}">
{{ trans('general.download_pdf') }}
</a>
@endif
@stack('button_pdf_end')
@stack('button_dropdown_divider_2_start')
@if (!$hideButtonGroupDivider2)
<div class="dropdown-divider"></div>
@endif
@stack('button_dropdown_divider_2_end')
@if (!$hideButtonTemplate)
@stack('button_template_start')
<button type="button" class="dropdown-item" @click="onTemplate">
{{ trans('general.form.choose', ['field' => trans_choice('general.templates', 1)]) }}
</button>
@stack('button_template_end')
@endif
@stack('button_dropdown_divider_3_start')
@if (!$hideButtonGroupDivider3)
<div class="dropdown-divider"></div>
@endif
@stack('button_dropdown_divider_3_end')
@stack('delete_button_start')
@if (!$hideButtonDelete)
@can($permissionDelete)
{!! Form::deleteLink($transfer, $routeButtonDelete, $textDeleteModal, 'transfer_number') !!}
@endcan
@endif
@stack('delete_button_end')
@stack('button_dropdown_end')
</div>
</div>
@endif
@stack('button_group_end')
@stack('add_new_button_start')
@if (!$hideButtonAddNew)
@can($permissionCreate)
<a href="{{ route($routeButtonAddNew) }}" class="btn btn-white btn-sm">
{{ trans('general.add_new') }}
</a>
@endcan
@endif
@stack('add_new_button_end')

View File

@ -0,0 +1,137 @@
<div class="card" style="padding: 0; padding-left: 15px; padding-right: 15px; border-radius: 0; box-shadow: 0 4px 16px rgba(0,0,0,.2);">
<div class="card-body show-card-body">
@if ($transferTemplate)
@switch($transferTemplate)
@case('second')
<x-transfers.template.second
:transfer="$transfer"
hide-from-account="{{ $hideFromAccount }}"
hide-from-account-title="{{ $hideFromAccountTitle }}"
hide-from-account-name="{{ $hideFromAccountName }}"
hide-from-account-number="{{ $hideFromAccountNumber }}"
hide-from-account-bank-name="{{ $hideFromAccountBankName }}"
hide-from-account-bank-phone="{{ $hideFromAccountBankPhone }}"
hide-from-account-bank-address="{{ $hideFromAccountBankAddress }}"
text-from-account-title="{{ $textFromAccountTitle }}"
text-from-account-number="{{ $textFromAccountNumber }}"
hide-to-account="{{ $hideToAccount }}"
hide-to-account-title="{{ $hideToAccountTitle }}"
hide-to-account-name="{{ $hideToAccountName }}"
hide-to-account-number="{{ $hideToAccountNumber }}"
hide-to-account-bank-name="{{ $hideToAccountBankName }}"
hide-to-account-bank-phone="{{ $hideToAccountBankPhone }}"
hide-to-account-bank-address="{{ $hideToAccountBankAddress }}"
text-to-account-title="{{ $textToAccountTitle }}"
text-to-account-number="{{ $textToAccountNumber }}"
hide-details="{{ $hideDetails }}"
hide-detail-title="{{ $hideDetailTitle }}"
hide-detail-date="{{ $hideDetailDate }}"
hide-detail-payment-method="{{ $hideDetailPaymentMethod }}"
hide-detail-reference="{{ $hideDetailReference }}"
hide-detail-description="{{ $hideDetailDescription }}"
hide-detail-amount="{{ $hideDetailAmount }}"
text-detail-title="{{ $textDetailTitle }}"
text-detail-date="{{ $textDetailDate }}"
text-detail-payment-method="{{ $textDetailPaymentMethod }}"
text-detail-reference="{{ $textDetailReference }}"
text-detail-description="{{ $textDetailDescription }}"
text-detail-amount="{{ $textDetailAmount }}"
/>
@break
@case('third')
<x-transfers.template.third
:transfer="$transfer"
hide-from-account="{{ $hideFromAccount }}"
hide-from-account-title="{{ $hideFromAccountTitle }}"
hide-from-account-name="{{ $hideFromAccountName }}"
hide-from-account-number="{{ $hideFromAccountNumber }}"
hide-from-account-bank-name="{{ $hideFromAccountBankName }}"
hide-from-account-bank-phone="{{ $hideFromAccountBankPhone }}"
hide-from-account-bank-address="{{ $hideFromAccountBankAddress }}"
text-from-account-title="{{ $textFromAccountTitle }}"
text-from-account-number="{{ $textFromAccountNumber }}"
hide-to-account="{{ $hideToAccount }}"
hide-to-account-title="{{ $hideToAccountTitle }}"
hide-to-account-name="{{ $hideToAccountName }}"
hide-to-account-number="{{ $hideToAccountNumber }}"
hide-to-account-bank-name="{{ $hideToAccountBankName }}"
hide-to-account-bank-phone="{{ $hideToAccountBankPhone }}"
hide-to-account-bank-address="{{ $hideToAccountBankAddress }}"
text-to-account-title="{{ $textToAccountTitle }}"
text-to-account-number="{{ $textToAccountNumber }}"
hide-details="{{ $hideDetails }}"
hide-detail-title="{{ $hideDetailTitle }}"
hide-detail-date="{{ $hideDetailDate }}"
hide-detail-payment-method="{{ $hideDetailPaymentMethod }}"
hide-detail-reference="{{ $hideDetailReference }}"
hide-detail-description="{{ $hideDetailDescription }}"
hide-detail-amount="{{ $hideDetailAmount }}"
text-detail-title="{{ $textDetailTitle }}"
text-detail-date="{{ $textDetailDate }}"
text-detail-payment-method="{{ $textDetailPaymentMethod }}"
text-detail-reference="{{ $textDetailReference }}"
text-detail-description="{{ $textDetailDescription }}"
text-detail-amount="{{ $textDetailAmount }}"
/>
@break
@default
<x-transfers.template.ddefault
:transfer="$transfer"
hide-from-account="{{ $hideFromAccount }}"
hide-from-account-title="{{ $hideFromAccountTitle }}"
hide-from-account-name="{{ $hideFromAccountName }}"
hide-from-account-number="{{ $hideFromAccountNumber }}"
hide-from-account-bank-name="{{ $hideFromAccountBankName }}"
hide-from-account-bank-phone="{{ $hideFromAccountBankPhone }}"
hide-from-account-bank-address="{{ $hideFromAccountBankAddress }}"
text-from-account-title="{{ $textFromAccountTitle }}"
text-from-account-number="{{ $textFromAccountNumber }}"
hide-to-account="{{ $hideToAccount }}"
hide-to-account-title="{{ $hideToAccountTitle }}"
hide-to-account-name="{{ $hideToAccountName }}"
hide-to-account-number="{{ $hideToAccountNumber }}"
hide-to-account-bank-name="{{ $hideToAccountBankName }}"
hide-to-account-bank-phone="{{ $hideToAccountBankPhone }}"
hide-to-account-bank-address="{{ $hideToAccountBankAddress }}"
text-to-account-title="{{ $textToAccountTitle }}"
text-to-account-number="{{ $textToAccountNumber }}"
hide-details="{{ $hideDetails }}"
hide-detail-title="{{ $hideDetailTitle }}"
hide-detail-date="{{ $hideDetailDate }}"
hide-detail-payment-method="{{ $hideDetailPaymentMethod }}"
hide-detail-reference="{{ $hideDetailReference }}"
hide-detail-description="{{ $hideDetailDescription }}"
hide-detail-amount="{{ $hideDetailAmount }}"
text-detail-title="{{ $textDetailTitle }}"
text-detail-date="{{ $textDetailDate }}"
text-detail-payment-method="{{ $textDetailPaymentMethod }}"
text-detail-reference="{{ $textDetailReference }}"
text-detail-description="{{ $textDetailDescription }}"
text-detail-amount="{{ $textDetailAmount }}"
/>
@endswitch
@else
@include($transferTemplate)
@endif
</div>
</div>

View File

@ -0,0 +1,179 @@
@if (!$hideFromAccount)
<table class="border-bottom-1" style="width: 100%;">
<tbody>
<tr>
<td style="width: 60%; padding-bottom: 15px;">
@if (!$hideFromAccountTitle)
<h2 class="mb-1" style="font-size: 16px;">
{{ trans($textFromAccountTitle) }}
</h2>
@endif
@if (!$hideFromAccountName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->name }}
</p>
@endif
@if (!$hideFromAccountNumber)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ trans($textFromAccountNumber) }}: {{ $transfer->expense_transaction->account->number }}
</p>
@endif
@if (!$hideFromAccountBankName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_name }}
</p>
@endif
@if (!$hideFromAccountBankPhone)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_phone }}
</p>
@endif
@if (!$hideFromAccountBankAddress)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_address }}
</p>
@endif
</td>
</tr>
</tbody>
</table>
@endif
@if (!$hideToAccount)
<table class="border-bottom-1" style="width: 100%; margin-top:15px;">
<tbody>
<tr>
<td style="width: 60%; padding-bottom: 15px;">
@if (!$hideToAccountTitle)
<h2 class="mb-1" style="font-size: 16px;">
{{ trans($textToAccountTitle) }}
</h2>
@endif
@if (!$hideToAccountName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->name }}
</p>
@endif
@if (!$hideToAccountNumber)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ trans($textToAccountNumber) }}: {{ $transfer->income_transaction->account->number }}
</p>
@endif
@if (!$hideToAccountBankName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_name }}
</p>
@endif
@if (!$hideToAccountBankPhone)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_phone }}
</p>
@endif
@if (!$hideToAccountBankAddress)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_address }}
</p>
@endif
</td>
</tr>
</tbody>
</table>
@endif
@if (!$hideDetails)
@if (!$hideDetailTitle)
<table>
<tr>
<td style="padding-bottom: 0; padding-top: 32px;">
<h2 class="text-center text-uppercase" style="font-size: 16px;">
{{ trans_choice($textDetailTitle, 2) }}
</h2>
</td>
</tr>
</table>
@endif
<table>
<tr>
<td style="width: 70%; padding-top:0; padding-bottom:0;">
<table>
@if (!$hideDetailDate)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailDate) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
@date($transfer->expense_transaction->paid_at)
</td>
</tr>
@endif
@if (!$hideDetailPaymentMethod)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans_choice($textDetailPaymentMethod, 1) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $payment_methods[$transfer->expense_transaction->payment_method] }}
</td>
</tr>
@endif
@if (!$hideDetailReference)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailReference) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $transfer->expense_transaction->reference }}
</td>
</tr>
@endif
@if (!$hideDetailDescription)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailDescription) }}
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $transfer->expense_transaction->description }}
</td>
</tr>
@endif
</table>
</td>
@if (!$hideDetailAmount)
<td style="width:30%; padding-top:32px; padding-left: 25px;" valign="top">
<table>
<tr>
<td style="background-color: #6da252; -webkit-print-color-adjust: exact; font-weight:bold !important; display:block;">
<h5 class="text-muted mb-0 text-white" style="font-size: 20px; color:#ffffff; text-align:center; margin-top: 16px;">
{{ trans($textDetailAmount) }}:
</h5>
<p class="font-weight-bold mb-0 text-white" style="font-size: 26px; color:#ffffff; text-align:center;">
@money($transfer->expense_transaction->amount, $transfer->expense_transaction->currency_code, true)
</p>
</td>
</tr>
</table>
</td>
@endif
</tr>
</table>
@endif

View File

@ -0,0 +1,179 @@
@if (!$hideDetails)
@if (!$hideDetailTitle)
<table>
<tr>
<td style="padding-bottom: 0; padding-top: 32px;">
<h2 class="text-center text-uppercase" style="font-size: 16px;">
{{ trans_choice($textDetailTitle, 2) }}
</h2>
</td>
</tr>
</table>
@endif
<table class="border-bottom-1">
<tr>
<td style="width: 70%; padding-top:0; padding-bottom:45px;">
<table>
@if (!$hideDetailDate)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailDate) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
@date($transfer->expense_transaction->paid_at)
</td>
</tr>
@endif
@if (!$hideDetailPaymentMethod)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans_choice($textDetailPaymentMethod, 1) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $payment_methods[$transfer->expense_transaction->payment_method] }}
</td>
</tr>
@endif
@if (!$hideDetailReference)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailReference) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $transfer->expense_transaction->reference }}
</td>
</tr>
@endif
@if (!$hideDetailDescription)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailDescription) }}
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $transfer->expense_transaction->description }}
</td>
</tr>
@endif
</table>
</td>
@if (!$hideDetailAmount)
<td style="width:30%; padding-top:32px; padding-left: 25px;" valign="top">
<table>
<tr>
<td style="background-color: #6da252; -webkit-print-color-adjust: exact; font-weight:bold !important; display:block;">
<h5 class="text-muted mb-0 text-white" style="font-size: 20px; color:#ffffff; text-align:center; margin-top: 16px;">
{{ trans($textDetailAmount) }}:
</h5>
<p class="font-weight-bold mb-0 text-white" style="font-size: 26px; color:#ffffff; text-align:center;">
@money($transfer->expense_transaction->amount, $transfer->expense_transaction->currency_code, true)
</p>
</td>
</tr>
</table>
</td>
@endif
</tr>
</table>
@endif
@if (!$hideFromAccount)
<table class="border-bottom-1" style="width: 100%;">
<tbody>
<tr>
<td style="width: 60%; padding-bottom: 15px;">
@if (!$hideFromAccountTitle)
<h2 class="mb-1" style="font-size: 16px;">
{{ trans($textFromAccountTitle) }}
</h2>
@endif
@if (!$hideFromAccountName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->name }}
</p>
@endif
@if (!$hideFromAccountNumber)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ trans($textFromAccountNumber) }}: {{ $transfer->expense_transaction->account->number}}
</p>
@endif
@if (!$hideFromAccountBankName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_name }}
</p>
@endif
@if (!$hideFromAccountBankPhone)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_phone }}
</p>
@endif
@if (!$hideFromAccountBankAddress)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_address }}
</p>
@endif
</td>
</tr>
</tbody>
</table>
@endif
@if (!$hideToAccount)
<table class="border-bottom-1" style="width: 100%; margin-top:15px;">
<tbody>
<tr>
<td style="width: 60%; padding-bottom: 15px;">
@if (!$hideToAccountTitle)
<h2 class="mb-1" style="font-size: 16px;">
{{ trans($textToAccountTitle) }}
</h2>
@endif
@if (!$hideToAccountName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->name }}
</p>
@endif
@if (!$hideToAccountNumber)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ trans($textToAccountNumber) }}: {{ $transfer->income_transaction->account->number }}
</p>
@endif
@if (!$hideToAccountBankName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_name }}
</p>
@endif
@if (!$hideToAccountBankPhone)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_phone }}
</p>
@endif
@if (!$hideToAccountBankAddress)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_address }}
</p>
@endif
</td>
</tr>
</tbody>
</table>
@endif

View File

@ -0,0 +1,191 @@
@if (!$hideFromAccount && !$hideToAccount)
<table class="border-bottom-1" style="width: 100%;">
<tbody>
<tr>
@if (!$hideFromAccount)
<td style="width: 50%; padding-bottom: 15px;" valign="top">
<table>
<tbody>
<tr>
<td>
@if (!$hideFromAccountTitle)
<h2 class="mb-1" style="font-size: 16px;">
{{ trans($textFromAccountTitle) }}
</h2>
@endif
@if (!$hideFromAccountName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->name }}
</p>
@endif
@if (!$hideFromAccountNumber)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ trans($textFromAccountNumber) }}: {{ $transfer->expense_transaction->account->number}}
</p>
@endif
@if (!$hideFromAccountBankName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_name }}
</p>
@endif
@if (!$hideFromAccountBankPhone)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_phone }}
</p>
@endif
@if (!$hideFromAccountBankAddress)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->expense_transaction->account->bank_address }}
</p>
@endif
</td>
</tr>
</tbody>
</table>
</td>
@endif
@if (!$hideToAccount)
<td style="width: 50%; padding-bottom: 15px;" valign="top">
<table>
<tbody>
<tr>
<td style="text-align: right;">
@if (!$hideToAccountTitle)
<h2 class="mb-1" style="font-size: 16px;">
{{ trans($textToAccountTitle) }}
</h2>
@endif
@if (!$hideToAccountName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->name }}
</p>
@endif
@if (!$hideToAccountNumber)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ trans($textToAccountNumber) }}: {{ $transfer->income_transaction->account->number }}
</p>
@endif
@if (!$hideToAccountBankName)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_name }}
</p>
@endif
@if (!$hideToAccountBankPhone)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_phone }}
</p>
@endif
@if (!$hideToAccountBankAddress)
<p style="margin: 0px; padding: 0px; font-size: 14px;">
{{ $transfer->income_transaction->account->bank_address }}
</p>
@endif
</td>
</tr>
</tbody>
</table>
</td>
@endif
</tr>
</tbody>
</table>
@endif
@if (!$hideDetails)
@if (!$hideDetailTitle)
<table>
<tr>
<td style="padding-bottom: 0; padding-top: 32px;">
<h2 class="text-center text-uppercase" style="font-size: 16px;">
{{ trans_choice($textDetailTitle, 2) }}
</h2>
</td>
</tr>
</table>
@endif
<table>
<tr>
<td style="width: 70%; padding-top:0; padding-bottom:0;">
<table>
@if (!$hideDetailDate)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailDate) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
@date($transfer->expense_transaction->paid_at)
</td>
</tr>
@endif
@if (!$hideDetailPaymentMethod)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans_choice($textDetailPaymentMethod, 1) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $payment_methods[$transfer->expense_transaction->payment_method] }}
</td>
</tr>
@endif
@if (!$hideDetailReference)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailReference) }}:
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $transfer->expense_transaction->reference }}
</td>
</tr>
@endif
@if (!$hideDetailDescription)
<tr>
<td style="width: 20%; padding-bottom:3px; font-size:14px; font-weight: bold;">
{{ trans($textDetailDescription) }}
</td>
<td class="border-bottom-1" style="width:80%; padding-bottom:3px; font-size:14px;">
{{ $transfer->expense_transaction->description }}
</td>
</tr>
@endif
</table>
</td>
@if (!$hideDetailAmount)
<td style="width:30%; padding-top:32px; padding-left: 25px;" valign="top">
<table>
<tr>
<td style="background-color: #6da252; -webkit-print-color-adjust: exact; font-weight:bold !important; display:block;">
<h5 class="text-muted mb-0 text-white" style="font-size: 20px; color:#ffffff; text-align:center; margin-top: 16px;">
{{ trans($textDetailAmount) }}:
</h5>
<p class="font-weight-bold mb-0 text-white" style="font-size: 26px; color:#ffffff; text-align:center;">
@money($transfer->expense_transaction->amount, $transfer->expense_transaction->currency_code, true)
</p>
</td>
</tr>
</table>
</td>
@endif
</tr>
</table>
@endif

View File

@ -0,0 +1,49 @@
<div class="modal-body pb-0">
{!! Form::open([
'route' => 'modals.transfer-templates.update',
'method' => 'PATCH',
'id' => 'template',
'@submit.prevent' => 'onSubmit',
'@keydown' => 'transfer_form.errors.clear($event.target.name)',
'files' => true,
'role' => 'form',
'class' => 'form-loading-button mb-0',
'novalidate' => true
]) !!}
<div class="row">
<div class="col-md-4 text-center">
<div class="bg-print border-radius-default print-edge choose" @click="transfer_form.template='default'">
<img src="{{ asset('public/img/transfer_templates/default.png') }}" class="mb-1 mt-3" height="200" alt="Default"/>
<label>
<input type="radio" name="template" value="default" v-model="transfer_form.template">
{{ trans('settings.invoice.default') }}
</label>
</div>
</div>
<div class="col-md-4 text-center px-2">
<div class="bg-print border-radius-default print-edge choose" @click="transfer_form.template='second'">
<img src="{{ asset('public/img/transfer_templates/second.png') }}" class="mb-1 mt-3" height="200" alt="Second"/>
<label>
<input type="radio" name="template" value="second" v-model="transfer_form.template">
{{ trans('settings.transfer.second') }}
</label>
</div>
</div>
<div class="col-md-4 text-center px-0">
<div class="bg-print border-radius-default print-edge choose" @click="transfer_form.template='third'">
<img src="{{ asset('public/img/transfer_templates/third.png') }}" class="mb-1 mt-3" height="200" alt="Third"/>
<label>
<input type="radio" name="template" value="third" v-model="transfer_form.template">
{{ trans('settings.transfer.third') }}
</label>
</div>
</div>
</div>
{!! Form::hidden('transfer_id', $transfer->id) !!}
{!! Form::hidden('_template', setting('transfer.template')) !!}
{!! Form::hidden('_prefix', 'transfer') !!}
{!! Form::close() !!}
</div>

View File

@ -136,6 +136,9 @@ Route::group(['prefix' => 'banking'], function () {
Route::get('transactions/export', 'Banking\Transactions@export')->name('transactions.export'); Route::get('transactions/export', 'Banking\Transactions@export')->name('transactions.export');
Route::resource('transactions', 'Banking\Transactions'); Route::resource('transactions', 'Banking\Transactions');
Route::get('transfers/{transfer}/print', 'Banking\Transfers@printTransfer')->name('transfers.print');
Route::get('transfers/{transfer}/pdf', 'Banking\Transfers@pdfTransfer')->name('transfers.pdf');
Route::get('transfers/{transfer}/duplicate', 'Banking\Transfers@duplicate')->name('transfers.duplicate');
Route::post('transfers/import', 'Banking\Transfers@import')->name('transfers.import'); Route::post('transfers/import', 'Banking\Transfers@import')->name('transfers.import');
Route::get('transfers/export', 'Banking\Transfers@export')->name('transfers.export'); Route::get('transfers/export', 'Banking\Transfers@export')->name('transfers.export');
Route::resource('transfers', 'Banking\Transfers', ['middleware' => ['date.format', 'money']]); Route::resource('transfers', 'Banking\Transfers', ['middleware' => ['date.format', 'money']]);
@ -233,6 +236,7 @@ Route::group(['as' => 'modals.', 'prefix' => 'modals'], function () {
Route::resource('vendors', 'Modals\Vendors'); Route::resource('vendors', 'Modals\Vendors');
Route::resource('items', 'Modals\Items'); Route::resource('items', 'Modals\Items');
Route::patch('invoice-templates', 'Modals\InvoiceTemplates@update')->name('invoice-templates.update'); Route::patch('invoice-templates', 'Modals\InvoiceTemplates@update')->name('invoice-templates.update');
Route::patch('transfer-templates', 'Modals\TransferTemplates@update')->name('transfer-templates.update');
Route::get('documents/item-columns/edit', 'Modals\DocumentItemColumns@edit')->name('documents.item-columns.edit'); Route::get('documents/item-columns/edit', 'Modals\DocumentItemColumns@edit')->name('documents.item-columns.edit');
Route::patch('documents/item-columns', 'Modals\DocumentItemColumns@update')->name('documents.item-columns.update'); Route::patch('documents/item-columns', 'Modals\DocumentItemColumns@update')->name('documents.item-columns.update');
Route::resource('documents/{document}/transactions', 'Modals\DocumentTransactions', [ Route::resource('documents/{document}/transactions', 'Modals\DocumentTransactions', [

View File

@ -42,7 +42,7 @@ class TransfersTest extends FeatureTestCase
$transfer = $this->dispatch(new CreateTransfer($this->getRequest())); $transfer = $this->dispatch(new CreateTransfer($this->getRequest()));
$this->loginAs() $this->loginAs()
->get(route('transfers.edit', $transfer->id)) ->get(route('transfers.show', $transfer->id))
->assertStatus(200) ->assertStatus(200)
->assertSee($transfer->description); ->assertSee($transfer->description);
} }