mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-13 03:31:31 +00:00
updated streamline-setup v2
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'name' => 'Expenses'
|
||||
];
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Expenses\Http\Controllers;
|
||||
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||
}
|
||||
+1454
File diff suppressed because it is too large
Load Diff
+197
@@ -0,0 +1,197 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Expenses\Http\Controllers;
|
||||
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Streamline\Models\ChartOfAccount;
|
||||
use Streamline\Models\PaymentItem;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Database\QueryException;
|
||||
|
||||
class PaymentItemController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$payment_items = PaymentItem::orderBy('name', 'asc')->paginate(5000);
|
||||
return view('expenses::payment_items.index', compact('payment_items'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$expense_accounts = ChartOfAccount::orderBy('name', 'asc')->where('type', 2)->pluck('name', 'id')->prepend('-select-', '')->toArray();
|
||||
$payable_accounts = ChartOfAccount::orderBy('name', 'asc')->where('type', 6)->orWhere('type', 9)->pluck('name', 'id')->toArray();
|
||||
|
||||
return view('expenses::payment_items.create', compact('expense_accounts', 'payable_accounts'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required',
|
||||
'unit_cost' => 'required'
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
//validation failed
|
||||
$string = "";
|
||||
foreach ($validator->errors()->getMessages() as $item) {
|
||||
$string .= "{$item[0]}<br>";
|
||||
}
|
||||
|
||||
return back()->withErrors($validator)->withInput();
|
||||
} else {
|
||||
|
||||
//validation passed
|
||||
$payment_item = new PaymentItem;
|
||||
|
||||
$payment_item->name = $request->name;
|
||||
$payment_item->unit_cost = $request->unit_cost;
|
||||
$payment_item->account_id = $request->account_id;
|
||||
$payment_item->payable_account = $request->payable_account;
|
||||
$payment_item->created_by = Auth::user()->id;
|
||||
|
||||
try {
|
||||
$payment_item->save();
|
||||
flash($request->name . " Payment Item has been saved")->success();
|
||||
return redirect("/payment_items/");
|
||||
} catch (QueryException $e) {
|
||||
flash("An error occurred")->error();
|
||||
return back()->withInput();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
*/
|
||||
public function show()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$payment_item = PaymentItem::where(['id' => $id])->first();
|
||||
|
||||
$expense_accounts = ChartOfAccount::orderBy('name', 'asc')->where('type', 2)->pluck('name', 'id')->prepend('-select-', '')->toArray();
|
||||
$payable_accounts = ChartOfAccount::orderBy('name', 'asc')->where('type', 6)->orWhere('type', 9)->pluck('name', 'id')->prepend('-select-', '')->toArray();
|
||||
|
||||
if (!$payment_item) {
|
||||
flash()->error("Payment Item not found");
|
||||
return redirect('/payment_items/');
|
||||
} else {
|
||||
return view('expenses::payment_items.edit', compact('payment_item', 'expense_accounts', 'payable_accounts'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function quick_update(Request $request)
|
||||
{
|
||||
$payment_item = PaymentItem::find($request->item_id);
|
||||
|
||||
$old_name = $payment_item->name;
|
||||
$old_created_by = $payment_item->created_by;
|
||||
$old_account_id = $payment_item->account_id;
|
||||
|
||||
$logged_in_user_id = Auth::id();
|
||||
$payment_item->name = $old_name;
|
||||
$payment_item->unit_cost = (int)$request->amount;
|
||||
$payment_item->account_id = $request->account_id;
|
||||
$payment_item->payable_account = $request->payable_account;
|
||||
$payment_item->created_by = $old_created_by;
|
||||
$payment_item->updated_by = $logged_in_user_id;
|
||||
|
||||
if($payment_item->save()){
|
||||
return 'success';
|
||||
}else{
|
||||
return $payment_item;
|
||||
}
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required'
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
//validation failed
|
||||
$string = "";
|
||||
foreach ($validator->errors()->getMessages() as $item) {
|
||||
$string .= "{$item[0]}<br>";
|
||||
}
|
||||
flash($string)->error();
|
||||
return back()->withErrors($validator)->withInput();
|
||||
}
|
||||
else {
|
||||
//validation passed
|
||||
$payment_item = PaymentItem::find($id);
|
||||
$logged_in_user_id = Auth::user()->id;
|
||||
|
||||
$payment_item->name = $request->name;
|
||||
$payment_item->unit_cost = $request->unit_cost;
|
||||
$payment_item->account_id = $request->account_id;
|
||||
$payment_item->payable_account = $request->payable_account;
|
||||
$payment_item->updated_by = $logged_in_user_id;
|
||||
|
||||
try {
|
||||
$payment_item->save();
|
||||
flash($request->name . " Payment Item has been updated")->success();
|
||||
return redirect("/payment_items/");
|
||||
} catch (QueryException $e) {
|
||||
flash("An error occurred")->error();
|
||||
return back()->withInput();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function destroy($id) {
|
||||
$payment_item = PaymentItem::find($id);
|
||||
|
||||
if ($payment_item->delete()) {
|
||||
flash("Payment Item has been deleted.")->success();
|
||||
}
|
||||
return redirect('/payment_items/');
|
||||
}
|
||||
|
||||
public function inactive() {
|
||||
|
||||
$payment_items = PaymentItem::onlyTrashed()
|
||||
->orderBy('name', 'asc')
|
||||
->get()
|
||||
->toArray();
|
||||
|
||||
if (count($payment_items) < 1) {
|
||||
flash()->error("There is no inactive PaymentItem");
|
||||
return redirect('/payment_items/');
|
||||
} else {
|
||||
|
||||
return view('expenses::payment_items.inactive', compact('payment_items'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function activate($id) {
|
||||
$payment = PaymentItem::withTrashed()->find($id);
|
||||
|
||||
if($payment->restore()){
|
||||
flash("Parish has been activated.")->success();
|
||||
return redirect('/payment_items/inactive');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Expenses\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Modules\Expenses\Providers\RouteServiceProvider;
|
||||
|
||||
class ExpensesServiceProvider extends ServiceProvider {
|
||||
/**
|
||||
* @var string $moduleName
|
||||
*/
|
||||
protected $moduleName = 'Expenses';
|
||||
|
||||
/**
|
||||
* @var string $moduleNameLower
|
||||
*/
|
||||
protected $moduleNameLower = 'expenses';
|
||||
|
||||
/**
|
||||
* Boot the application events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
$this->registerTranslations();
|
||||
$this->registerConfig();
|
||||
$this->registerViews();
|
||||
$this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->app->register(RouteServiceProvider::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register config.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function registerConfig()
|
||||
{
|
||||
$this->publishes([
|
||||
module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'),
|
||||
], 'config');
|
||||
$this->mergeConfigFrom(
|
||||
module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register views.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function registerViews()
|
||||
{
|
||||
$viewPath = resource_path('views/modules/' . $this->moduleNameLower);
|
||||
|
||||
$sourcePath = module_path($this->moduleName, 'Resources/views');
|
||||
|
||||
$this->publishes([
|
||||
$sourcePath => $viewPath
|
||||
], ['views', $this->moduleNameLower . '-module-views']);
|
||||
|
||||
$this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register translations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function registerTranslations()
|
||||
{
|
||||
$langPath = resource_path('lang/modules/' . $this->moduleNameLower);
|
||||
|
||||
if (is_dir($langPath)) {
|
||||
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
|
||||
$this->loadJsonTranslationsFrom($langPath);
|
||||
} else {
|
||||
$this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower);
|
||||
$this->loadJsonTranslationsFrom(module_path($this->moduleName, 'Resources/lang'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the services provided by the provider.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provides()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
private function getPublishableViewPaths(): array
|
||||
{
|
||||
$paths = [];
|
||||
foreach (\Config::get('view.paths') as $path) {
|
||||
if (is_dir($path . '/modules/' . $this->moduleNameLower)) {
|
||||
$paths[] = $path . '/modules/' . $this->moduleNameLower;
|
||||
}
|
||||
}
|
||||
return $paths;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Expenses\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
||||
|
||||
class RouteServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* This namespace is applied to your controller routes.
|
||||
*
|
||||
* In addition, it is set as the URL generator's root namespace.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $namespace = 'Modules\Expenses\Http\Controllers';
|
||||
|
||||
/**
|
||||
* Define your route model bindings, pattern filters, etc.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
parent::boot();
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the routes for the application.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function map()
|
||||
{
|
||||
$this->mapApiRoutes();
|
||||
$this->mapWebRoutes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the "web" routes for the application.
|
||||
*
|
||||
* These routes all receive session state, CSRF protection, etc.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function mapWebRoutes()
|
||||
{
|
||||
Route::middleware('web')
|
||||
->namespace($this->namespace)
|
||||
->group(module_path('Expenses', '/Routes/web.php'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the "api" routes for the application.
|
||||
*
|
||||
* These routes are typically stateless.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function mapApiRoutes()
|
||||
{
|
||||
Route::prefix('api')
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(module_path('Expenses', '/Routes/api.php'));
|
||||
}
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
|
||||
<h4 class="page-title">{{ __('payment_items.create_payment_item') }}</h4>
|
||||
</div>
|
||||
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payment_items.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payment_items.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-shopping-cart"></i> {{ __('payment_items.create_payment_item') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payment_items.menu')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('flash::message')
|
||||
<div class="white-box">
|
||||
{{ Form::open(['method'=>'post','route' => 'payment_items.store', 'data-toggle' => 'validator', 'files' => true]) }}
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('item_label', __('payment_items.item_name')) }}
|
||||
{{ Form::text('name', '', ['class' => 'form-control compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('unit_cost_label', __('payment_items.unit_cost')) }}
|
||||
{{ Form::text('unit_cost', '', ['class' => 'form-control compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('account_id', __('payment_items.expense_account')) }}
|
||||
{{ Form::select('account_id', $expense_accounts, '', ['class'=>'form-control compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('payable_account', __('payment_items.payable_account')) }}
|
||||
{{ Form::select('payable_account', $payable_accounts, '', ['class'=>'form-control compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
|
||||
{{ Form::button(__('payment_items.submit'),['type'=>'submit','class'=>'btn btn-success waves-effect waves-light m-r-10']) }}
|
||||
{{ Form::button(__('payment_items.cancel'),['type'=>'reset','class'=>'btn btn-default waves-effect waves-light']) }}
|
||||
|
||||
{{ Form::close() }}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/js/validator.js') }}"></script>
|
||||
<script></script>
|
||||
@endpush
|
||||
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
|
||||
<h4 class="page-title">{{ __('payment_items.edit_payment_item') }}</h4>
|
||||
</div>
|
||||
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payment_items.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payment_items.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-pencil"></i> {{ __('payment_items.edit_payment_item') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payment_items.menu')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('flash::message')
|
||||
<div class="white-box">
|
||||
{{ Form::model($payment_item, ['method' => 'PUT', 'route' => ['payment_items.update',$payment_item], 'data-toggle' => 'validator']) }}
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('item_label', __('payment_items.item_name')) }}
|
||||
{{ Form::text('name', $payment_item->name, ['class' => 'form-control compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('unit_cost_label', __('payment_items.unit_cost')) }}
|
||||
{{ Form::text('unit_cost', $payment_item->unit_cost, ['class' => 'form-control compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('account_id', __('payment_items.expense_account')) }}
|
||||
{{ Form::select('account_id', $expense_accounts, $payment_item->account_id, ['class'=>'form-control compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('payable_account', __('payment_items.payable_account')) }}
|
||||
{{ Form::select('payable_account', $payable_accounts, $payment_item->payable_account, ['class'=>'form-control compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
|
||||
{{ Form::button(__('payment_items.submit'),['type'=>'submit','class'=>'btn btn-success waves-effect waves-light m-r-10']) }}
|
||||
{{ Form::button(__('payment_items.cancel'),['type'=>'reset','class'=>'btn btn-default waves-effect waves-light']) }}
|
||||
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/js/validator.js') }}"></script>
|
||||
<script></script>
|
||||
@endpush
|
||||
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
|
||||
<h4 class="page-title">{{ __('payment_items.payment_items') }}</h4>
|
||||
</div>
|
||||
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payment_items.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payment_items.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-trash"></i> {{ __('payment_items.inactive_payment_items') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payment_items.menu')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
@include('flash::message')
|
||||
<div class="white-box">
|
||||
<p class="text-muted m-b-30">{{ __('payment_items.export_data_to_csv_excel') }}</p>
|
||||
<div class="table-responsive">
|
||||
<table class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ __('payment_items.name') }}</th>
|
||||
<th>{{ __('payment_items.unit_cost') }}</th>
|
||||
<th>{{ __('payment_items.expense_account') }}</th>
|
||||
<th>{{ __('payment_items.action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ __('payment_items.name') }}</th>
|
||||
<th>{{ __('payment_items.unit_cost') }}</th>
|
||||
<th>{{ __('payment_items.expense_account') }}</th>
|
||||
<th>{{ __('payment_items.action') }}</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
|
||||
@foreach($payment_items as $payment_item)
|
||||
<tr>
|
||||
<td>{{ $payment_item['id'] }}</td>
|
||||
<td>{{ $payment_item['name'] }}</td>
|
||||
<td>{{ $payment_item['unit_cost'] }}</td>
|
||||
<td>{{ get_name($payment_item['account_id'], 'id', 'name', 'chart_of_accounts') }}</td>
|
||||
<td>
|
||||
{{ Form::model($payment_item['id'] ,['method' => 'POST', 'route' => ['payment_items.activate', $payment_item['id']]]) }}
|
||||
<button type="submit" class="btn btn-warning" onclick="return confirm('Are you sure?')"><i class="fa fa-check"></i> {{ __('payment_items.activate') }}</button>
|
||||
{{ Form::close() }}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'pdf', 'print'
|
||||
]
|
||||
});
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
|
||||
<h4 class="page-title">{{ __('payment_items.payment_items') }}</h4>
|
||||
</div>
|
||||
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payment_items.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payment_items.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-eye"></i> {{ __('payment_items.payment_items') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payment_items.menu')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<!--Flash messages at the top -->
|
||||
@include('flash::message')
|
||||
<div class="white-box">
|
||||
<p class="text-muted m-b-30">{{ __('payment_items.export_data_to_csv_excel') }}</p>
|
||||
<div class="table-responsive">
|
||||
<table class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ __('payment_items.name') }}</th>
|
||||
<th>{{ __('payment_items.unit_cost') }}</th>
|
||||
<th>{{ __('payment_items.expense_account') }}</th>
|
||||
@can('Payments-edit-payment-item')
|
||||
<th>{{ __('payment_items.edit') }}</th>
|
||||
@endcan
|
||||
@can('Payments-delete-payment-item')
|
||||
<th>{{ __('payment_items.delete') }}</th>
|
||||
@endcan
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if(count($payment_items)>0)
|
||||
@foreach($payment_items as $item)
|
||||
<tr>
|
||||
<td>{{ $item->id }}</td>
|
||||
<td>{{ $item->name }}</td>
|
||||
<td>{{ ugandan_shillings($item->unit_cost) }}</td>
|
||||
<td>{{ get_name($item->account_id,'id', 'name', 'chart_of_accounts') }}</td>
|
||||
@can('Payments-edit-payment-item')
|
||||
<td>
|
||||
<a href="/payment_items/{{ $item->id }}/edit/" class="btn btn-info"><i class="fa fa-pencil"></i> {{ __('payment_items.edit') }}</a>
|
||||
</td>
|
||||
@endcan
|
||||
@can('Payments-delete-payment-item')
|
||||
<td>
|
||||
{{ Form::model($item->id ,['method' => 'DELETE', 'route' => ['payment_items.destroy', $item->id]]) }}
|
||||
<button type="submit" class="btn btn-danger" onclick="return confirm('Are you sure?')"><i class="fa fa-trash"></i> {{ __('payment_items.delete') }}</button>
|
||||
{{ Form::close() }}
|
||||
</td>
|
||||
@endcan
|
||||
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'pdf', 'print'
|
||||
]
|
||||
});
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<a href="{{ route('payment_items.create') }}" class="nav-item btn btn-success" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payment_items.add_payment_item') }}</span></a>
|
||||
<a href="{{ route('payment_items.index') }}" class="nav-item btn btn-warning" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payment_items.view_payment_items') }}</span></a>
|
||||
<a href="{{ route('payment_items.inactive') }}" class="nav-item btn btn-danger" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payment_items.inactive_payment_item') }}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
+702
@@ -0,0 +1,702 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
@endpush
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('finance.create_bills') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.view_payments') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payments.menu')
|
||||
|
||||
@include('flash::message')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="white-box">
|
||||
|
||||
{{ Form::open(['method'=>'post','route' => 'payments.save_bill']) }}
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.vendor') }}:</label>
|
||||
<select class="form-control compulsory required" name="vendor" id="vendor" required>
|
||||
<option value="">-select-</option>
|
||||
@foreach($suppliers as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<small><a href="#" data-toggle="modal" data-target="#addNewSupplier">{{ __('payments.add_vendor') }}</a></small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="sDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('start_date', __('finance.bill_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('bill_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'bill_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="eDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('end_date', __('payments.bill_due_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('bill_due_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'bill_due_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="eDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('bill_number', __('payments.bill_number')) }}
|
||||
{{ Form::text('bill_number', '', ['class'=>'form-control required compulsory', 'id'=>'bill_number']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="" id="payments_items">
|
||||
<table class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<div class="row">
|
||||
<div class="col-1">#</div>
|
||||
<div class="col-2">{{ __('payments.item') }}</div>
|
||||
<div class="col-1">{{ __('payments.quantity') }}</div>
|
||||
<div class="col-1">{{ __('payments.unit_cost') }}</div>
|
||||
<div class="col-2">{{ __('payments.amount') }}</div>
|
||||
<div class="col-2">{{ __('payments.expense_account') }}</div>
|
||||
<div class="col-2">{{ __('payments.payable_account') }}</div>
|
||||
<div class="col-1">{{ __('payments.action') }}</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="input_fields_wrap">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-1">
|
||||
<label style="margin-top: 10px;">1.</label>
|
||||
</div>
|
||||
|
||||
<div class="col-2">
|
||||
<div class=" control-group">
|
||||
<div class="form-group">
|
||||
<select name='item_id[]' id='item_0' class="form-control compulsory item_select" required>
|
||||
<option>-select-</option>
|
||||
@foreach($items as $item)
|
||||
<option style='color: orange;' value='{{ $item->id }}'>
|
||||
{{ $item->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Item -->
|
||||
|
||||
@php
|
||||
$option_items = "<option value=''>-select-</option>";
|
||||
foreach ($items as $item){
|
||||
$option_items .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
$back_date = \Streamline\Models\HospitalInformation::first()->pluck('back_date');
|
||||
$option_suppliers = "<option value=''>-select-</option>";
|
||||
foreach ($suppliers as $item){
|
||||
$option_suppliers .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
$option_suppliers .= "<option value='N/A'>N/A</option>";
|
||||
@endphp
|
||||
|
||||
<div class='col-1'>
|
||||
<div class="form-group">
|
||||
<div class=''>
|
||||
<input type='text' name='quantity[]' id ='quantity_0' value="1" class='form-control compulsory qty'>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Quantity -->
|
||||
|
||||
<div class="col-1">
|
||||
<div class="form-group">
|
||||
<div class="controls">
|
||||
<input type="text" name="unit_cost[]" id="unit_cost_0" class="compulsory form-control unit_cost"/>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Unit Cost -->
|
||||
|
||||
<div class="col-2">
|
||||
<div class="form-group">
|
||||
<div class="controls">
|
||||
<input type="text" name="amount[]" id="amount_0" class="compulsory form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Amount -->
|
||||
|
||||
<div class='col-2'>
|
||||
<div class="form-group">
|
||||
<div class=''>
|
||||
<input type='text' name='expense_acc_name[]' id ='expense_acc_name_0' class='form-control compulsory' readonly='true'>
|
||||
<input type='hidden' name='expense_acc_id[]' id ='expense_acc_id_0'>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Expense account -->
|
||||
|
||||
<div class='col-2'>
|
||||
<div class="form-group">
|
||||
<div class=''>
|
||||
<input type='text' name='payable_acc_name[]' id ='payable_acc_name_0' class='form-control compulsory' readonly='true'>
|
||||
<input type='hidden' name='payable_acc_id[]' id ='payable_acc_id_0'>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- payable account -->
|
||||
|
||||
<div class="col-1">
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
<button class="btn btn-sm btn-rounded btn-success add_item" style="color: white; margin-left: 25px;"><i class="fa fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.bill_memo') }}</label>
|
||||
<textarea rows="7" class="form-control compulsory" name="bill_memo"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group-group">
|
||||
<label>{{ __('payments.total_amount') }}</label>
|
||||
<div class="controls">
|
||||
<input type="text" name="total_amount" id="total_amount" class="form-control compulsory" readonly='true'/>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
{{-- <button class="btn btn-rounded btn-success" name="bill_action" value="pay">Pay Bill</button>--}}
|
||||
<button class="btn btn-rounded btn-primary pull-right" name="bill_action" value="save">{{ __('payments.save_bill') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="addNewSupplier" tabindex="-1" role="dialog" aria-labelledby="addNewSupplierLabel" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="addNewSupplierLabel">{{ __('payments.add_new_supplier') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_name', __('payments.supplier_name')) }}
|
||||
{{ Form::text('supplier_name', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_name']) }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_company', __('payments.company')) }}
|
||||
{{ Form::text('supplier_company', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_company']) }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_contact', __('payments.mobile_number')) }}
|
||||
{{ Form::text('supplier_contact', '', ['class'=>'form-control compulsory', 'data-mask'=>"0799 999 999", 'required','id'=>'supplier_contact']) }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_address', __('payments.address')) }}
|
||||
{{ Form::text('supplier_address', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_address']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{ __('payments.close') }}</button>
|
||||
<button type="button" class="btn btn-success" data-dismiss="modal" id="saveNewSupplier">{{ __('payments.save_changes') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<!-- Date Picker Plugin JavaScript -->
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
|
||||
$('#saveNewSupplier').click(function(e){
|
||||
e.preventDefault();
|
||||
var supplier_name = $('#supplier_name').val();
|
||||
var supplier_company = $('#supplier_company').val();
|
||||
var supplier_contact = $('#supplier_contact').val();
|
||||
var supplier_address = $('#supplier_address').val();
|
||||
|
||||
let has_errors = false;
|
||||
let error_messages = "";
|
||||
|
||||
if(supplier_name === ''){
|
||||
error_messages += "Please fill in the supplier's name\n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if(supplier_company === ''){
|
||||
error_messages += "Please fill in the supplier's company \n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if(supplier_contact === ''){
|
||||
error_messages += "Please fill in the supplier's contact \n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if(supplier_address === ''){
|
||||
error_messages += "Please fill in the supplier's address \n";
|
||||
has_errors = true;
|
||||
}
|
||||
if(has_errors){
|
||||
alert(error_messages);
|
||||
}else{
|
||||
$.ajax({
|
||||
url: '/save_new_supplier',
|
||||
type: 'get',
|
||||
data: {
|
||||
supplier_name:supplier_name,
|
||||
supplier_company:supplier_company,
|
||||
supplier_contact:supplier_contact,
|
||||
supplier_address:supplier_address
|
||||
},
|
||||
success: function(response){
|
||||
//response = last inserted id
|
||||
$('#vendor').append($('<option>', {
|
||||
value: response,
|
||||
text: supplier_name
|
||||
}));
|
||||
$('#vendor').val(response);//preselect the newly added referral
|
||||
alert('new supplier has been added');
|
||||
},
|
||||
error: function(response){
|
||||
// console.log('there was an error');
|
||||
alert('There was an error, Contact IT.')
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
$("[id^='item_check_']").each(function () {
|
||||
var i = parseInt(this.id.substr(this.id.indexOf("_") + 1));
|
||||
});
|
||||
|
||||
$('#bill_term').on('change', function () {
|
||||
var date = $('#bill_date').datepicker("getDate"); //Get the Date object with actual date
|
||||
date.setDate(date.getDate() + parseInt($('#bill_term').val()));
|
||||
$("#bill_due_date").datepicker("setDate", date);
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/payments/get_bill_number",
|
||||
cache: false,
|
||||
success: function (result) {
|
||||
$('#bill_number').val(result);
|
||||
},
|
||||
error: function (error) {
|
||||
alert('There was an error while generating the bill number.')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var max_fields = 20; //maximum input boxes allowed
|
||||
var wrapper = $(".input_fields_wrap"); //Fields wrapper
|
||||
var add_button = $(".add_item"); //Add button ID
|
||||
|
||||
var x = 1; //initlal text box count
|
||||
|
||||
add_button.click(function (e) { //on add input button click
|
||||
e.preventDefault();
|
||||
if (x < max_fields) { //max input box allowed
|
||||
x++; //text box increment
|
||||
$(wrapper).append("\
|
||||
\ <tr>\
|
||||
<td>\
|
||||
<div class='row'>\n\
|
||||
\
|
||||
\<div class=\"col-1\">\
|
||||
<label style=\"margin-top: 10px;\">" + (x)+ ". " +"</label>\
|
||||
</div>\
|
||||
<div class='col-2'>\n\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<select name='item_id[]' id='item_" + x + "' class='form-control compulsory item_select'>" +
|
||||
|
||||
"<?php echo $option_items; ?>" +
|
||||
|
||||
"</select>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\n\
|
||||
<div class='col-1'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>" +
|
||||
"<input type='text' name='quantity[]' value='1' id ='quantity_" + x + "' class='form-control compulsory qty'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col-1'>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='text' name='unit_cost[]' id='unit_cost_" + x + "' class='form-control compulsory' />\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col-2'>\n\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<input type='text' name='amount[]' id='amount_" + x + "' class='form-control compulsory' />" +
|
||||
" \n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col-2'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='hidden' name='expense_acc_id[]' id ='expense_acc_id_" + x + "'>\n\
|
||||
<input type='text' name='expense_acc_name[]' id ='expense_acc_name_" + x + "' class='form-control compulsory' readonly='true'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\
|
||||
<div class='col-2'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='hidden' name='payable_acc_id[]' id ='payable_acc_id_" + x + "'>\n\
|
||||
<input type='text' name='payable_acc_name[]' id ='payable_acc_name_" + x + "' class='form-control compulsory' readonly='true'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\
|
||||
<div class=\"col-1\">\
|
||||
<div class=\"form-group\" style=\"margin-top: 10px;\">\
|
||||
<button class=\" remove_field btn btn-sm btn-rounded btn-danger\" style=\"color: white; margin-left: 25px;\"><i class=\"fa fa-trash\"></i></button>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div> \
|
||||
</td>\
|
||||
</tr>"); //add input box
|
||||
}
|
||||
});
|
||||
|
||||
$(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
|
||||
e.preventDefault();
|
||||
$(this).parent('div').parent('div').parent('div').parent('td').parent('tr').remove();
|
||||
|
||||
var final_total = 0;
|
||||
var total_field = $("#total_amount");
|
||||
|
||||
$("[id^='amount_']").each(function () {
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
total_field.val(final_total);
|
||||
x--;
|
||||
});
|
||||
|
||||
$(".input_fields_wrap").on('change', "select, .qty", function () {
|
||||
|
||||
var id = parseInt(this.id.substr(this.id.indexOf("_") + 1));
|
||||
|
||||
var item_id = $("#item_" + id).val(); //console.log(item_id)
|
||||
var quantity = $("#quantity_" + id).val();
|
||||
var unit_cost = $("#unit_cost_" + id);
|
||||
var amount_field = $("#amount_" + id);
|
||||
var expense_acc_id = $("#expense_acc_id_" + id);
|
||||
var expense_acc_name = $("#expense_acc_name_" + id);
|
||||
var payable_acc_id = $("#payable_acc_id_" + id);
|
||||
var payable_acc_name = $("#payable_acc_name_" + id);
|
||||
var total_field = $("#total_amount");
|
||||
var final_total = 0;
|
||||
|
||||
if (item_id === "" || quantity === "") {
|
||||
alert("Item and quantity are required");
|
||||
amount_field.val("");
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "get_expense_acc",
|
||||
data: {'item_id' : item_id },
|
||||
cache: false,
|
||||
success: function (result){
|
||||
if (result[0] != null) {
|
||||
expense_acc_id.val(result[0].id);
|
||||
expense_acc_name.val(result[0].name);
|
||||
}
|
||||
if (result[1] != null) {
|
||||
payable_acc_id.val(result[1].id);
|
||||
payable_acc_name.val(result[1].name);
|
||||
}
|
||||
// console.log(result);
|
||||
},
|
||||
error: function (error) {
|
||||
//console.log(error);
|
||||
}
|
||||
});
|
||||
|
||||
var dataString = "item_id=" + item_id + "&quantity=" + quantity;
|
||||
// console.log(dataString);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "total_price",
|
||||
data: dataString,
|
||||
cache: false,
|
||||
success: function (result) { //console.log(result);
|
||||
|
||||
unit_cost.val(result[1]);
|
||||
amount_field.val(result[0]);
|
||||
|
||||
$("[id^='amount']").each(function () { //console.log(this.value);
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
total_field.val(final_total);
|
||||
},
|
||||
error: function (error) {
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$("#payments_items").focusout(function(e) {
|
||||
var total_amount = 0;
|
||||
$("[id^=amount]").each(function(){
|
||||
var auto_price = $(this).val();
|
||||
var auto_price_integer = parseInt(auto_price);
|
||||
total_amount += auto_price_integer;
|
||||
});
|
||||
if(total_amount === "NaN"){ total_amount = 0; }
|
||||
$("#total_amount").val(total_amount);
|
||||
});
|
||||
|
||||
$(".input_fields_wrap").on('change', "[id^='unit_cost_']", function () {
|
||||
var id = /\d+(?=\D*$)/.exec($(this).attr('id'));
|
||||
var quantity = $("#quantity_" + id).val();
|
||||
var unit_cost = this.value;
|
||||
|
||||
$('#amount_'+id).val(parseInt(quantity) * parseInt(unit_cost));
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
// display the appropriate price of the service
|
||||
function show_service_price(item_id, prompt_div_id) {
|
||||
// get patient id
|
||||
let patient_id = $('#patient_id').val();
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/payments/get_payment_item_details',
|
||||
data: {'item_id' : item_id},
|
||||
|
||||
success: function(response){
|
||||
|
||||
// add amount to div
|
||||
$('#' + (prompt_div_id - 1000)).html(response);
|
||||
|
||||
// enable button for calculating
|
||||
$('#calculate_button').attr('disabled', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// display the appropriate price of the service
|
||||
function show_acc_bal(bank_id) {
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/payments/get_account_balance',
|
||||
data: {'bank_id' : bank_id},
|
||||
|
||||
success: function(response){
|
||||
|
||||
var acc_bal = response[0].balance;
|
||||
var total_cost = $('#total_amount').val(); //console.log(total_cost > acc_bal)
|
||||
|
||||
$('#account_balance').val(acc_bal);
|
||||
$('#bank_id').val(response[0].id);
|
||||
|
||||
if(acc_bal <= 0){
|
||||
alert('Account Balance is Zero(0) UGX');
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
else
|
||||
if(total_cost > acc_bal){
|
||||
alert('Your Account Balance is low');
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
else{
|
||||
alert('Are you sure you want proceed with this payment ?');
|
||||
$('.submit_btn').show();
|
||||
}
|
||||
},
|
||||
error: function (error) {
|
||||
// console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function calculate_values(){
|
||||
let total_amount = 0;
|
||||
|
||||
// calculate total amount
|
||||
$('.amt').each(function () {
|
||||
total_amount += parseInt(this.value);
|
||||
});
|
||||
// console.log(total_amount);
|
||||
// show total amount to pay
|
||||
$('#total').val(total_amount);
|
||||
|
||||
}
|
||||
|
||||
function change_amt (qty) {
|
||||
let px = $('.amt').val();
|
||||
var total_unit_cost = qty * px;
|
||||
// console.log(total_unit_cost);
|
||||
$('#amt').val(total_unit_cost);
|
||||
}
|
||||
|
||||
function bank_deposit(cashier_income_id, amount) {
|
||||
$('#deposit_amount').val(amount);
|
||||
$('#cashier_income_id').val(cashier_income_id);
|
||||
$('#banking_modal').modal('show');
|
||||
}
|
||||
|
||||
$('#confirm_deposit').click(function () {
|
||||
|
||||
var cashier_income_id = $('#cashier_income_id').val();
|
||||
var deposit_amount = $('#deposit_amount').val();
|
||||
var deposit_account = $('#deposit_account').val();
|
||||
var deposit_date = $('#deposit_date').val();
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/quick_bank_deposit',
|
||||
data: {
|
||||
'cashier_income_id' : cashier_income_id,
|
||||
'deposit_amount' : deposit_amount,
|
||||
'deposit_account' : deposit_account,
|
||||
'deposit_date' : deposit_date,
|
||||
},
|
||||
|
||||
success: function(response){
|
||||
console.log(response);
|
||||
$('#banking_modal').modal('hide');
|
||||
$('#bank_' + cashier_income_id).hide();
|
||||
$('#div_' + cashier_income_id).append("<label class='label label-success'>BANKED</label>");
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function get_acc_bal(bank_id) {
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance',
|
||||
data: {'bank_id' : bank_id},
|
||||
|
||||
success: function(response){
|
||||
var acc_bal = response[0].balance;
|
||||
var amount = $('#deposit_amount').val();
|
||||
$('#current_account_balance').val(acc_bal);
|
||||
$('#new_account_balance').val(acc_bal + parseInt(amount));
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery('#end_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
let min_days = <?php echo $back_date[0]; ?>;
|
||||
var min_date = new Date();
|
||||
min_date.setDate(min_date.getDate()-min_days);
|
||||
$('#bill_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
endDate: new Date(),
|
||||
startDate: min_date,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
$('#bill_due_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
startDate: new Date(),
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('#staff_member, #vendor, .item_select').select2({
|
||||
placeholder: "-select-"
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
+830
@@ -0,0 +1,830 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
@endpush
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.edit_bill') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.view_payments') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payments.menu')
|
||||
|
||||
@include('flash::message')
|
||||
|
||||
@php $back_date = \Streamline\Models\HospitalInformation::first()->pluck('back_date'); @endphp
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="white-box">
|
||||
|
||||
{{ Form::model($bill, ['method' => 'PATCH','route' => ['payments.update_bill', $bill->id]]) }}
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.vendor') }}:</label>
|
||||
{{ Form::select('vendor', $suppliers, $bill->vendor, ['class' => 'form-control', 'id'=>'vendor']) }}
|
||||
<small><a href="#" data-toggle="modal" data-target="#addNewSupplier">{{ __('payments.add_vendor') }}</a></small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="sDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('start_date', __('finance.bill_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('bill_date', \Carbon\Carbon::parse($bill->bill_date)->format('d-m-Y'), ['class'=>'form-control required compulsory', 'readonly', 'id'=>'bill_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="eDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('end_date', __('payments.bill_due_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('bill_due_date', \Carbon\Carbon::parse($bill->bill_due_date)->format('d-m-Y'), ['class'=>'form-control required compulsory', 'readonly', 'id'=>'bill_due_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="eDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('bill_number', __('payments.bill_number')) }}
|
||||
{{ Form::text('bill_number', $bill->bill_number, ['class'=>'form-control required compulsory', 'id'=>'bill_number']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<hr/>
|
||||
@if(count($payments) > 0)
|
||||
<h4><b>Payments</b></h4>
|
||||
<div class="table-responsive">
|
||||
<br/>
|
||||
<table id="table" class="table color-bordered-table danger-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('payments.item') }}</th>
|
||||
<th>{{ __('payments.vendor') }}</th>
|
||||
<th>{{ __('payments.quantity') }}</th>
|
||||
<th>{{ __('payments.staff') }}</th>
|
||||
<th>{{ __('payments.date') }}</th>
|
||||
<th>{{ __('payments.unit_cost') }}</th>
|
||||
<th>{{ __('payments.amount') }}</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$total = 0;
|
||||
@endphp
|
||||
|
||||
@foreach($payments as $item)
|
||||
<tr>
|
||||
<td>
|
||||
@php
|
||||
$bill = \Streamline\Models\HospitalBill::find($item->bill_id);
|
||||
$items = explode(',', $bill->item_ids);
|
||||
$quantities = explode(',', $bill->item_quantities);
|
||||
@endphp
|
||||
@if($bill->bill_type == 'DRU')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'drugs') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'SUN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'sundries') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'DEN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'dentals') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'RAD')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'radiologies') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'LAB')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'labs') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'GEN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'general_items') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'PAY')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'payment_items') }} <br/>
|
||||
@endfor
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ get_name($item->vendor, 'id', 'name', 'suppliers') }}</td>
|
||||
<td>{{ get_full_name($item->created_by, 'id', 'first_name', 'last_name', 'users') }}</td>
|
||||
<td>{{ streamline_date_time_short($item->created_at) }}</td>
|
||||
<td>
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ $quantities[$x]." units" }} <br/>
|
||||
@endfor
|
||||
</td>
|
||||
<td>
|
||||
@if($bill->bill_type == 'DRU')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'drugs')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'SUN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'sundries')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'DEN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'dentals')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'RAD')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'radiologies')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'LAB')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'labs')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'GEN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'unit_cost', 'general_items')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'PAY')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'unit_cost', 'payment_items')) }} <br/>
|
||||
@endfor
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ ugandan_shillings($item->amount) }}</td>
|
||||
</tr>
|
||||
@php
|
||||
$total += $item->amount;
|
||||
@endphp
|
||||
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
<tr>
|
||||
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><strong>{{ __('payments.total') }}</strong></td>
|
||||
<td>{{ ugandan_shillings($total) }}</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
<br/>
|
||||
<table class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<div class="row">
|
||||
<div class="col-2">{{ __('payments.item') }}</div>
|
||||
<div class="col-1">{{ __('payments.quantity') }}</div>
|
||||
<div class="col-2">{{ __('payments.unit_cost') }}</div>
|
||||
<div class="col-2">{{ __('payments.amount') }}</div>
|
||||
<div class="col-2">{{ __('payments.expense_account') }}</div>
|
||||
<div class="col-2">{{ __('payments.payable_account') }}</div>
|
||||
<div class="col-1">{{ __('payments.action') }}</div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@php
|
||||
$items = explode(',', $bill->item_ids);
|
||||
$item_quantity = explode(',', $bill->item_quantities);
|
||||
$item_subtotals = explode(',', $bill->item_subtotals);
|
||||
$expense_accounts = explode(',', $bill->item_accounts);
|
||||
$payable_accounts = explode(',', $bill->payable_account);
|
||||
//$item = explode(',', $bill->item_ids);
|
||||
@endphp
|
||||
<tbody class="input_fields_wrap" id="payments_items">
|
||||
|
||||
@for($i = 0; $i < count($items); $i++)
|
||||
<tr>
|
||||
<td>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-2">
|
||||
<div class=" control-group">
|
||||
<div class="form-group">
|
||||
{{ Form::select('item_id[]', $payment_items, $items[$i], ['class' => 'form-control compulsory', 'id'=>"item_$i"]) }}
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Item -->
|
||||
|
||||
@php
|
||||
$option_items = "<option value=''>-select-</option>";
|
||||
foreach ($option_items_array as $item){
|
||||
$option_items .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
|
||||
$option_suppliers = "<option value=''>-select-</option>";
|
||||
foreach ($option_suppliers_array as $item){
|
||||
$option_suppliers .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
$option_suppliers .= "<option value='N/A'>N/A</option>";
|
||||
@endphp
|
||||
|
||||
<div class='col-1'>
|
||||
<div class="form-group">
|
||||
<div class=''>
|
||||
{{ Form::number('quantity[]', (is_null($item_quantity[$i]) ? 1 : $item_quantity[$i]), ['class' => 'form-control compulsory qty', 'id'=>"quantity_$i"]) }}
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Quantity -->
|
||||
|
||||
<div class="col-2">
|
||||
<div class="form-group">
|
||||
<div class="controls">
|
||||
{{ Form::number('unit_cost[]', ($item_subtotals[$i] / $item_quantity[$i]), ['class' => 'form-control compulsory unit_cost', 'id'=>"unit_cost_$i"]) }}
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Unit Cost -->
|
||||
|
||||
<div class="col-2">
|
||||
<div class="form-group">
|
||||
<div class="controls">
|
||||
{{ Form::number('amount[]', $item_subtotals[$i], ['class' => 'form-control amount', 'id'=>"amount_$i"]) }}
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Amount -->
|
||||
|
||||
<div class='col-2'>
|
||||
<div class="form-group">
|
||||
<div class=''>
|
||||
{{ Form::text('expense_acc_name[]', isset($chart_of_accounts[$expense_accounts[$i]]) ? $chart_of_accounts[$expense_accounts[$i]] : '', ['class' => 'form-control', 'id'=>"expense_acc_name_$i", 'readonly']) }}
|
||||
<input type='hidden' name='expense_acc_id[]' value="{{ $expense_accounts[$i] }}" id ="expense_acc_id_{{ $i }}">
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Expense account -->
|
||||
|
||||
<div class='col-2'>
|
||||
<div class="form-group">
|
||||
<div class=''>
|
||||
{{ Form::text('payable_acc_name[]', $chart_of_accounts[$payable_accounts[$i]], ['class' => 'form-control', 'id'=>"payable_acc_name_$i", 'readonly']) }}
|
||||
<input type='hidden' name='payable_acc_id[]' value="{{ $payable_accounts[$i] }}" id ="payable_acc_id_{{ $i }}">
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- payable account -->
|
||||
|
||||
<div class="col-1">
|
||||
<div class="form-group" style="margin-top: 10px;">
|
||||
@if($i == 0)
|
||||
<button class="btn btn-sm btn-rounded btn-success add_item" style="color: white; margin-left: 25px;"><i class="fa fa-plus"></i></button>
|
||||
@else
|
||||
<button class="btn btn-sm btn-rounded btn-danger remove_field" style="color: white; margin-left: 25px;"><i class="fa fa-trash"></i></button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endfor
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.bill_memo') }}</label>
|
||||
<textarea rows="7" class="form-control compulsory" name="bill_memo">{{ $bill->bill_memo }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group-group">
|
||||
<label>{{ __('payments.total_amount') }}</label>
|
||||
<div class="controls">
|
||||
<input type="text" name="total_amount" id="total_amount" class="form-control compulsory" value="{{ $bill->total_amount }}" readonly='true'/>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<button class="btn btn-rounded btn-primary pull-right" name="bill_action" value="save">Update Bill</button>
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="addNewSupplier" tabindex="-1" role="dialog" aria-labelledby="addNewSupplierLabel" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="addNewSupplierLabel">{{ __('payments.add_new_supplier') }}</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_name', __('payments.supplier_name')) }}
|
||||
{{ Form::text('supplier_name', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_name']) }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_company', __('payments.company')) }}
|
||||
{{ Form::text('supplier_company', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_company']) }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_contact', __('payments.mobile_number')) }}
|
||||
{{ Form::text('supplier_contact', '', ['class'=>'form-control compulsory', 'data-mask'=>"0799 999 999", 'required','id'=>'supplier_contact']) }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_address', __('payments.address')) }}
|
||||
{{ Form::text('supplier_address', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_address']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{ __('payments.close') }}</button>
|
||||
<button type="button" class="btn btn-success" data-dismiss="modal" id="saveNewSupplier">{{ __('payments.save_changes') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<!-- Date Picker Plugin JavaScript -->
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
|
||||
$('#saveNewSupplier').click(function(e){
|
||||
e.preventDefault();
|
||||
var supplier_name = $('#supplier_name').val();
|
||||
var supplier_company = $('#supplier_company').val();
|
||||
var supplier_contact = $('#supplier_contact').val();
|
||||
var supplier_address = $('#supplier_address').val();
|
||||
|
||||
let has_errors = false;
|
||||
let error_messages = "";
|
||||
|
||||
if(supplier_name === ''){
|
||||
error_messages += "Please fill in the supplier's name\n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if(supplier_company === ''){
|
||||
error_messages += "Please fill in the supplier's company \n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if(supplier_contact === ''){
|
||||
error_messages += "Please fill in the supplier's contact \n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if(supplier_address === ''){
|
||||
error_messages += "Please fill in the supplier's address \n";
|
||||
has_errors = true;
|
||||
}
|
||||
if(has_errors){
|
||||
alert(error_messages);
|
||||
}else{
|
||||
$.ajax({
|
||||
url: '/save_new_supplier',
|
||||
type: 'get',
|
||||
data: {
|
||||
supplier_name:supplier_name,
|
||||
supplier_company:supplier_company,
|
||||
supplier_contact:supplier_contact,
|
||||
supplier_address:supplier_address
|
||||
},
|
||||
success: function(response){
|
||||
//response = last inserted id
|
||||
$('#vendor').append($('<option>', {
|
||||
value: response,
|
||||
text: supplier_name
|
||||
}));
|
||||
$('#vendor').val(response);//preselect the newly added referral
|
||||
alert('new supplier has been added');
|
||||
},
|
||||
error: function(response){
|
||||
// console.log('there was an error');
|
||||
alert('There was an error, Contact IT.')
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
$("[id^='item_check_']").each(function () {
|
||||
var i = parseInt(this.id.substr(this.id.indexOf("_") + 1));
|
||||
});
|
||||
|
||||
$('#bill_term').on('change', function () {
|
||||
var date = $('#bill_date').datepicker("getDate"); //Get the Date object with actual date
|
||||
date.setDate(date.getDate() + parseInt($('#bill_term').val()));
|
||||
$("#bill_due_date").datepicker("setDate", date);
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/payments/get_bill_number",
|
||||
cache: false,
|
||||
success: function (result) {
|
||||
$('#bill_number').val(result);
|
||||
},
|
||||
error: function (error) {
|
||||
alert('There was an error while generating the bill number.')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var max_fields = 1000; //maximum input boxes allowed
|
||||
var wrapper = $(".input_fields_wrap"); //Fields wrapper
|
||||
var add_button = $(".add_item"); //Add button ID
|
||||
|
||||
var x = 500; //initlal text box count
|
||||
|
||||
add_button.click(function (e) { //on add input button click
|
||||
e.preventDefault();
|
||||
if (x < max_fields) { //max input box allowed
|
||||
x++; //text box increment
|
||||
$(wrapper).append("\
|
||||
\ <tr>\
|
||||
<td>\
|
||||
<div class='row'>\n\
|
||||
\
|
||||
<div class='col-2'>\n\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<select name='item_id[]' id='item_" + x + "' class='form-control compulsory item_select'>" +
|
||||
|
||||
"<?php echo $option_items; ?>" +
|
||||
|
||||
"</select>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\n\
|
||||
<div class='col-1'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>" +
|
||||
"<input type='text' name='quantity[]' value='1' id ='quantity_" + x + "' class='form-control compulsory qty'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col-2'>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='text' name='unit_cost[]' id='unit_cost_" + x + "' class='form-control compulsory' />\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col-2'>\n\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<input type='text' name='amount[]' id='amount_" + x + "' class='form-control compulsory' />" +
|
||||
" \n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col-2'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='hidden' name='expense_acc_id[]' id ='expense_acc_id_" + x + "'>\n\
|
||||
<input type='text' name='expense_acc_name[]' id ='expense_acc_name_" + x + "' class='form-control compulsory' readonly='true'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\
|
||||
<div class='col-2'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='hidden' name='payable_acc_id[]' id ='payable_acc_id_" + x + "'>\n\
|
||||
<input type='text' name='payable_acc_name[]' id ='payable_acc_name_" + x + "' class='form-control compulsory' readonly='true'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\
|
||||
<div class=\"col-1\">\
|
||||
<div class=\"form-group\" style=\"margin-top: 10px;\">\
|
||||
<button class=\" remove_field btn btn-sm btn-rounded btn-danger\" style=\"color: white; margin-left: 25px;\"><i class=\"fa fa-trash\"></i></button>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div> \
|
||||
</td>\
|
||||
</tr>"); //add input box
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
|
||||
e.preventDefault();
|
||||
$(this).parent('div').parent('div').parent('div').parent('td').parent('tr').remove();
|
||||
|
||||
var final_total = 0;
|
||||
var total_field = $("#total_amount");
|
||||
|
||||
$("[id^='amount_']").each(function () {
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
total_field.val(final_total);
|
||||
x--;
|
||||
});
|
||||
$(".input_fields_wrap").on('change', "select", function () {
|
||||
|
||||
var id = parseInt(this.id.substr(this.id.indexOf("_") + 1));
|
||||
|
||||
var item_id = $("#item_" + id).val();
|
||||
var quantity = $("#quantity_" + id).val(); console.log(item_id, quantity)
|
||||
var unit_cost = $("#unit_cost_" + id);
|
||||
var amount_field = $("#amount_" + id);
|
||||
var expense_acc_id = $("#expense_acc_id_" + id);
|
||||
var expense_acc_name = $("#expense_acc_name_" + id);
|
||||
var payable_acc_id = $("#payable_acc_id_" + id);
|
||||
var payable_acc_name = $("#payable_acc_name_" + id);
|
||||
var total_field = $("#total_amount");
|
||||
var final_total = 0;
|
||||
|
||||
if (item_id === "" || quantity === "") {
|
||||
alert("Item and quantity are required");
|
||||
amount_field.val("");
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/payments/get_expense_acc",
|
||||
data: {'item_id' : item_id },
|
||||
cache: false,
|
||||
success: function (result){
|
||||
if (result[0] != null) {
|
||||
expense_acc_id.val(result[0].id);
|
||||
expense_acc_name.val(result[0].name);
|
||||
}
|
||||
if (result[1] != null) {
|
||||
payable_acc_id.val(result[1].id);
|
||||
payable_acc_name.val(result[1].name);
|
||||
}
|
||||
// console.log(result);
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
|
||||
var dataString = "item_id=" + item_id + "&quantity=" + quantity;
|
||||
// console.log(dataString);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/payments/total_price",
|
||||
data: dataString,
|
||||
cache: false,
|
||||
success: function (result) { //console.log(result);
|
||||
|
||||
unit_cost.val(result[1]);
|
||||
amount_field.val(result[0]);
|
||||
|
||||
$("[id^='amount_']").each(function () { //console.log(this.value);
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
total_field.val(final_total);
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
//alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$("#payments_items").focusout(function(e) {
|
||||
var total_amount = 0;
|
||||
$("[id^=amount]").each(function(){
|
||||
var auto_price = $(this).val();
|
||||
var auto_price_integer = parseInt(auto_price);
|
||||
total_amount += auto_price_integer;
|
||||
});
|
||||
if(total_amount == "NaN"){ total_amount = 0; }
|
||||
$("#total_amount").val(total_amount);
|
||||
});
|
||||
|
||||
$("[id^='quantity_']").change(function () {
|
||||
|
||||
var id = /\d+(?=\D*$)/.exec($(this).attr('id'));
|
||||
var quantity = this.value;
|
||||
var unit_cost = $("#quantity_" + id).val();
|
||||
|
||||
$('#amount_'+id).val(parseInt(quantity) * parseInt(unit_cost));
|
||||
});
|
||||
|
||||
$("[id^='unit_cost_']").change(function () {
|
||||
|
||||
var id = /\d+(?=\D*$)/.exec($(this).attr('id'));
|
||||
var quantity = $("#quantity_" + id).val();
|
||||
var unit_cost = this.value;
|
||||
|
||||
$('#unit_cost_'+id).val(parseInt(quantity) * parseInt(unit_cost));
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
// display the appropriate price of the service
|
||||
function show_service_price(item_id, prompt_div_id) {
|
||||
// get patient id
|
||||
let patient_id = $('#patient_id').val();
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/payments/get_payment_item_details',
|
||||
data: {'item_id' : item_id},
|
||||
|
||||
success: function(response){
|
||||
|
||||
// add amount to div
|
||||
$('#' + (prompt_div_id - 1000)).html(response);
|
||||
|
||||
// enable button for calculating
|
||||
$('#calculate_button').attr('disabled', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// display the appropriate price of the service
|
||||
function show_acc_bal(bank_id) {
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/payments/get_account_balance',
|
||||
data: {'bank_id' : bank_id},
|
||||
|
||||
success: function(response){
|
||||
|
||||
var acc_bal = response[0].balance;
|
||||
var total_cost = $('#total_amount').val(); //console.log(total_cost > acc_bal)
|
||||
|
||||
$('#account_balance').val(acc_bal);
|
||||
$('#bank_id').val(response[0].id);
|
||||
|
||||
if(acc_bal <= 0){
|
||||
alert('Account Balance is Zero(0) UGX');
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
else
|
||||
if(total_cost > acc_bal){
|
||||
alert('Your Account Balance is low');
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
else{
|
||||
alert('Are you sure you want proceed with this payment ?');
|
||||
$('.submit_btn').show();
|
||||
}
|
||||
},
|
||||
error: function (error) {
|
||||
// console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function calculate_values(){
|
||||
let total_amount = 0;
|
||||
|
||||
// calculate total amount
|
||||
$('.amt').each(function () {
|
||||
total_amount += parseInt(this.value);
|
||||
});
|
||||
// console.log(total_amount);
|
||||
// show total amount to pay
|
||||
$('#total').val(total_amount);
|
||||
|
||||
}
|
||||
|
||||
function change_amt (qty) {
|
||||
let px = $('.amt').val();
|
||||
var total_unit_cost = qty * px;
|
||||
// console.log(total_unit_cost);
|
||||
$('#amt').val(total_unit_cost);
|
||||
}
|
||||
|
||||
function bank_deposit(cashier_income_id, amount) {
|
||||
$('#deposit_amount').val(amount);
|
||||
$('#cashier_income_id').val(cashier_income_id);
|
||||
$('#banking_modal').modal('show');
|
||||
}
|
||||
|
||||
$('#confirm_deposit').click(function () {
|
||||
|
||||
var cashier_income_id = $('#cashier_income_id').val();
|
||||
var deposit_amount = $('#deposit_amount').val();
|
||||
var deposit_account = $('#deposit_account').val();
|
||||
var deposit_date = $('#deposit_date').val();
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/quick_bank_deposit',
|
||||
data: {
|
||||
'cashier_income_id' : cashier_income_id,
|
||||
'deposit_amount' : deposit_amount,
|
||||
'deposit_account' : deposit_account,
|
||||
'deposit_date' : deposit_date,
|
||||
},
|
||||
|
||||
success: function(response){
|
||||
console.log(response);
|
||||
$('#banking_modal').modal('hide');
|
||||
$('#bank_' + cashier_income_id).hide();
|
||||
$('#div_' + cashier_income_id).append("<label class='label label-success'>BANKED</label>");
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function get_acc_bal(bank_id) {
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance',
|
||||
data: {'bank_id' : bank_id},
|
||||
|
||||
success: function(response){
|
||||
var acc_bal = response[0].balance;
|
||||
var amount = $('#deposit_amount').val();
|
||||
$('#current_account_balance').val(acc_bal);
|
||||
$('#new_account_balance').val(acc_bal + parseInt(amount));
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery('#end_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
let min_days = <?php echo $back_date[0]; ?>;
|
||||
var min_date = new Date();
|
||||
min_date.setDate(min_date.getDate()-min_days);
|
||||
jQuery('#bill_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
endDate: new Date(),
|
||||
startDate: min_date,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
$('#bill_due_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
startDate: new Date(),
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('#staff_member, #vendor, .item_select').select2({
|
||||
placeholder: "-select-"
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
+599
@@ -0,0 +1,599 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
@endpush
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.inactive_bills') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.view_payments') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payments.menu')
|
||||
@include('flash::message')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="white-box">
|
||||
|
||||
{{-- {{ Form::open(['method'=>'post','route' => 'payments.bills']) }}--}}
|
||||
{{-- <div class="row">--}}
|
||||
{{-- <div class="col-md-2">--}}
|
||||
{{-- <div class="form-group">--}}
|
||||
{{-- <label>Generated By:</label>--}}
|
||||
{{-- <select class="form-control compulsory required" name="staff_member" id="staff_member" required>--}}
|
||||
{{-- <option value="">-select-</option>--}}
|
||||
{{-- <option value="ALL STAFF">ALL STAFF</option>--}}
|
||||
{{-- @foreach($staff_members as $item)--}}
|
||||
{{-- <option value="{{ $item->id }}">{{ $item->username }}</option>--}}
|
||||
{{-- @endforeach--}}
|
||||
{{-- </select>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-2">--}}
|
||||
{{-- <div class="form-group">--}}
|
||||
{{-- <label>Vendor:</label>--}}
|
||||
{{-- <select class="form-control compulsory required" name="vendor" id="vendor" required>--}}
|
||||
{{-- <option value="">-select-</option>--}}
|
||||
{{-- <option value="ALL VENDORS">ALL VENDORS</option>--}}
|
||||
{{-- @foreach($suppliers as $item)--}}
|
||||
{{-- <option value="{{ $item->id }}">{{ $item->name }}</option>--}}
|
||||
{{-- @endforeach--}}
|
||||
{{-- </select>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-3">--}}
|
||||
{{-- <div class="form-group">--}}
|
||||
{{-- <label>Select Date:</label>--}}
|
||||
{{-- <select class="form-control compulsory required" name="dates" id="dates" required>--}}
|
||||
{{-- <option value="">-select-</option>--}}
|
||||
{{-- <option value="today">TODAY</option>--}}
|
||||
{{-- <option value="yesterday">YESTERDAY</option>--}}
|
||||
{{-- <option value="custom_date">CUSTOM DATE</option>--}}
|
||||
{{-- <option value="custom_date_range">DATE RANGE</option>--}}
|
||||
{{-- </select>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <div class="col-md-2">--}}
|
||||
{{-- <div id="sDate" style="display: none;">--}}
|
||||
{{-- <div class="form-group">--}}
|
||||
{{-- {{ Form::label('start_date', 'Date On') }}--}}
|
||||
{{-- <div class="input-group">--}}
|
||||
{{-- {{ Form::text('start_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'start_date']) }}--}}
|
||||
{{-- <span class="input-group-addon"><i class="icon-calender"></i></span>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <div class="col-md-2">--}}
|
||||
{{-- <div id="eDate" style="display: none;">--}}
|
||||
{{-- <div class="form-group">--}}
|
||||
{{-- {{ Form::label('end_date', 'End Date') }}--}}
|
||||
{{-- <div class="input-group">--}}
|
||||
{{-- {{ Form::text('end_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'end_date']) }}--}}
|
||||
{{-- <span class="input-group-addon"><i class="icon-calender"></i></span>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <div class="col-md-1">--}}
|
||||
{{-- <div class="form-group" style="margin-top: 25px;">--}}
|
||||
{{-- {{ Form::submit('Submit', ['class'=>'btn btn-success btn-rounded btn-block pull-right']) }}--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- {{ Form::close() }}--}}
|
||||
{{-- <hr/>--}}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@if(isset($display))
|
||||
<h3 class="label label-info label-rounded"> {!! isset($display) ? $display : '' !!}</h3>
|
||||
@endif
|
||||
<br/>
|
||||
<div class="table-responsive">
|
||||
<br/>
|
||||
<table id="table" class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ __('payments.vendor') }}</th>
|
||||
<th>{{ __('payments.billing_number') }}</th>
|
||||
<th>{{ __('payments.due_date') }}</th>
|
||||
<th>{{ __('payments.items') }}</th>
|
||||
<th>{{ __('payments.item_quantities') }}</th>
|
||||
<th>{{ __('payments.item_amounts') }}</th>
|
||||
<th>{{ __('payments.bill_total') }}</th>
|
||||
<th>{{ __('payments.action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$count = 0;
|
||||
$total = 0;
|
||||
@endphp
|
||||
|
||||
@if($bills)
|
||||
@if(count($bills) > 0)
|
||||
@foreach( $bills as $bill)
|
||||
<tr id="{{ $bill->id }}">
|
||||
<td>{{ ($count + 1)."." }}</td>
|
||||
<td>{{ get_name($bill->vendor, 'id', 'name', 'suppliers') }}</td>
|
||||
<td>{{ $bill->bill_number }}</td>
|
||||
<td>{{ streamline_date($bill->bill_due_date) }}</td>
|
||||
@php
|
||||
$items = explode(',', $bill->item_ids);
|
||||
$quantities = explode(',', $bill->item_quantities);
|
||||
$subtotals = explode(',', $bill->item_subtotals);
|
||||
@endphp
|
||||
<td>
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'payment_items') }} <br/>
|
||||
@endfor
|
||||
</td>
|
||||
<td>
|
||||
@for($x = 0; $x < count($quantities); $x++)
|
||||
{{ ($quantities[$x] == 1) ? $quantities[$x]." unit": $quantities[$x]." units" }} <br/>
|
||||
@endfor
|
||||
</td>
|
||||
<td>
|
||||
@for($x = 0; $x < count($subtotals); $x++)
|
||||
{{ ugandan_shillings($subtotals[$x]) }} <br/>
|
||||
@endfor
|
||||
</td>
|
||||
<td>{{ ugandan_shillings($bill->total_amount) }}</td>
|
||||
<td>
|
||||
{{ Form::model($bill->id ,['method' => 'POST', 'route' => ['payments.bill.activate', $bill->id]]) }}
|
||||
<button type="submit" class="btn btn-sm btn-rounded btn-warning" onclick="return confirm('Are you sure?')"><i class="fa fa-check"></i> Activate</button>
|
||||
{{ Form::close() }}
|
||||
</td>
|
||||
</tr>
|
||||
@php
|
||||
$count ++;
|
||||
$total += $bill->total_amount;
|
||||
@endphp
|
||||
@endforeach
|
||||
@endif
|
||||
@endif
|
||||
|
||||
</tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><strong>{{ __('payments.total') }}</strong></td>
|
||||
<td id="bills_total">{{ ugandan_shillings($total) }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="payment_modal" tabindex="-1" role="dialog" aria-labelledby="banking_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12 text-center">
|
||||
<h3 class="modal-title" id="banking_modal_label"><b>PAY BILL</b></h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>Bank Account</label>
|
||||
<select name="bank_account" class="form-control" id="bank_account" onchange="get_acc_bal(this.value, 'current_account_balance')">
|
||||
<option>-select-</option>
|
||||
@foreach($banks as $bank)
|
||||
<option value="{{ $bank->id }}">{{ $bank->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Bill Total</label>
|
||||
<input name="bill_total" id="bill_total" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Bill Date</label>
|
||||
<input name="bill_due_date" id="bill_due_date" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Payment Memo</label>
|
||||
<textarea name="payment_memo" id="payment_memo" class="form-control" rows="5"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>Current Account Balance</label>
|
||||
<input name="current_account_balance" id="current_account_balance" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Amount To Pay</label>
|
||||
<input name="amount_to_pay" id="amount_to_pay" type="number" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Bill Balance</label>
|
||||
<input name="bill_balance" id="bill_balance" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Payment By</label>
|
||||
<input name="payment_by_name" readonly value="{{ get_full_name(\Illuminate\Support\Facades\Auth::id(),'id', 'first_name', 'last_name', 'users') }}" class="form-control">
|
||||
<input type="hidden" id="payment_by_id" value="{{ \Illuminate\Support\Facades\Auth::id() }}">
|
||||
<input type="hidden" name="bill_id" id="bill_id">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('payment_date', 'Payment Date') }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('payment_date', '', ['class'=>'form-control required', 'readonly', 'id'=>'payment_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancel Deposit</button>
|
||||
<button type="button" class="btn btn-success" id="confirm_payment">Confirm Deposit</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="update_payment_modal" tabindex="-1" role="dialog" aria-labelledby="banking_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12 text-center">
|
||||
<h3 class="modal-title" id="banking_modal_label"><b>UPDATE BILL PAYENT</b></h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>Bank Account</label>
|
||||
<select name="bank_account" class="form-control" id="_bank_account" onchange="get_acc_bal(this.value, '_current_account_balance')">
|
||||
<option>-select-</option>
|
||||
@foreach($banks as $bank)
|
||||
<option value="{{ $bank->id }}">{{ $bank->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Bill Total</label>
|
||||
<input name="bill_total" id="_bill_total" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Bill Date</label>
|
||||
<input name="bill_due_date" id="_bill_due_date" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Payment Memo</label>
|
||||
<textarea name="payment_memo" id="_payment_memo" class="form-control" rows="5"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>Current Account Balance</label>
|
||||
<input name="current_account_balance" id="_current_account_balance" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Amount To Pay</label>
|
||||
<input name="amount_to_pay" id="_amount_to_pay" type="number" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Bill Balance</label>
|
||||
<input name="bill_balance" id="_bill_balance" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Payment By</label>
|
||||
<input name="payment_by_name" readonly value="{{ get_full_name(\Illuminate\Support\Facades\Auth::id(),'id', 'first_name', 'last_name', 'users') }}" class="form-control">
|
||||
<input type="hidden" id="_payment_by_id" value="{{ \Illuminate\Support\Facades\Auth::id() }}">
|
||||
<input type="hidden" name="bill_id" id="_bill_id">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('_payment_date', 'Payment Date') }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('_payment_date', '', ['class'=>'form-control required', 'readonly', 'id'=>'_payment_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancel Deposit</button>
|
||||
<button type="button" class="btn btn-success" id="update_payment">Confirm Deposit</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<!-- Date Picker Plugin JavaScript -->
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
|
||||
function show_payment_modal(id) {
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: '/payments/get_bill_details/'+id,
|
||||
data: { 'id': id},
|
||||
success: function (result) {
|
||||
$('#bill_id').val(result['id']);
|
||||
$('#bill_total').val(result['total_amount']);
|
||||
$('#bill_due_date').val(result['bill_due_date']);
|
||||
$('#bill_balance').val(result['balance']);
|
||||
$('#payment_modal').modal('show');
|
||||
},
|
||||
error: function (error) {
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
function show_update_payment_modal(id) {
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: '/payments/get_bill_details/'+id,
|
||||
data: { 'id': id},
|
||||
success: function (result) {
|
||||
$('#_bill_id').val(result['id']);
|
||||
$('#_amount_to_pay').val(0);
|
||||
$('#_payment_memo').val('');
|
||||
$('#_payment_date').val('');
|
||||
$('#_bill_total').val(result['balance']);
|
||||
$('#_bill_due_date').val(result['bill_due_date']);
|
||||
$('#_bill_balance').val(result['balance']);
|
||||
$('#update_payment_modal').modal('show');
|
||||
},
|
||||
error: function (error) {
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
// ---------------------- recheck later -------------------------------------
|
||||
$('#amount_to_pay').change(function () {
|
||||
var amount_to_pay = this.value;
|
||||
var bill_total = $('#bill_total').val();
|
||||
var account_balance = $('#current_account_balance').val();
|
||||
var bill_balance = bill_total - amount_to_pay;
|
||||
if(bill_balance < 0){
|
||||
alert('Amount to pay appears to be more than the required bill amount.');
|
||||
this.value = 0;
|
||||
}else{
|
||||
$('#bill_balance').val(bill_balance);
|
||||
}
|
||||
});
|
||||
|
||||
$('#_amount_to_pay').change(function () {
|
||||
var amount_to_pay = this.value;
|
||||
var bill_total = $('#_bill_total').val();
|
||||
var account_balance = $('#_current_account_balance').val();
|
||||
var bill_balance = bill_total - amount_to_pay;
|
||||
if(bill_balance < 0){
|
||||
alert('Amount to pay appears to be more than the required bill amount.');
|
||||
this.value = 0;
|
||||
}else{
|
||||
$('#_bill_balance').val(bill_balance);
|
||||
}
|
||||
});
|
||||
|
||||
$('#update_payment').click(function () {
|
||||
// var status = 'new';
|
||||
var bill_id = $('#_bill_id').val();
|
||||
var bill_balance = $('#_bill_balance').val();
|
||||
var current_account_balance = $('#_current_account_balance').val();
|
||||
var payment_date = $('#_payment_date').val();
|
||||
var bank_account = $('#_bank_account').val();
|
||||
var amount_to_pay = $('#_amount_to_pay').val();
|
||||
var payment_memo = $('#_payment_memo').val();
|
||||
var check = confirm('Are you sure you want to proceed with this payment ?');
|
||||
if(check){
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/store_bill_payment',
|
||||
data: {
|
||||
'bill_id' : bill_id,
|
||||
'bill_balance' : bill_balance,
|
||||
'payment_date' : payment_date,
|
||||
'bank_account' : bank_account,
|
||||
'amount_to_pay' : amount_to_pay,
|
||||
'payment_memo' : payment_memo,
|
||||
'current_account_balance' : current_account_balance,
|
||||
},
|
||||
success: function (result) {
|
||||
// console.log(result);
|
||||
$('#update_payment_modal').modal('hide');
|
||||
if(parseInt(result) == 0){
|
||||
$('#update_btn_'+ bill_id).hide();
|
||||
}
|
||||
},
|
||||
error: function (error) {
|
||||
// console.log(error)
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('#confirm_payment').click(function () {
|
||||
// var status = 'new';
|
||||
var bill_id = $('#bill_id').val();
|
||||
var bill_balance = $('#bill_balance').val();
|
||||
var current_account_balance = $('#current_account_balance').val();
|
||||
var payment_date = $('#payment_date').val();
|
||||
var bank_account = $('#bank_account').val();
|
||||
var amount_to_pay = $('#amount_to_pay').val();
|
||||
var payment_memo = $('#payment_memo').val();
|
||||
var check = confirm('Are you sure you want to proceed with this payment ?');
|
||||
|
||||
|
||||
if(check){
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/store_bill_payment',
|
||||
data: {
|
||||
'bill_id' : bill_id,
|
||||
'bill_balance' : bill_balance,
|
||||
'payment_date' : payment_date,
|
||||
'bank_account' : bank_account,
|
||||
'amount_to_pay' : amount_to_pay,
|
||||
'payment_memo' : payment_memo,
|
||||
'current_account_balance' : current_account_balance,
|
||||
},
|
||||
success: function (result) {
|
||||
// console.log(result);
|
||||
$('#payment_modal').modal('hide');
|
||||
$('#pay_btn_'+ bill_id).hide();
|
||||
$('#update_btn_'+ bill_id).show();
|
||||
$('#voucher_btn_'+ bill_id).show();
|
||||
},
|
||||
error: function (error) {
|
||||
// console.log(error)
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
function remove(id, bill_number){
|
||||
var check = confirm('Are You Sure You Want To Delete This Bill ?');
|
||||
if(check){
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/delete_bill',
|
||||
data: { 'bill_id' : id },
|
||||
success: function (result) {
|
||||
if(result != 'fail'){
|
||||
$('#'+ id).remove();
|
||||
alert('Bill '+ bill_number+' has been deleted successfully.'); console.log(result)
|
||||
}else{
|
||||
alert('failed to delete Bill '+bill_number)
|
||||
}
|
||||
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error)
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$('#dates').change(function (e) {
|
||||
|
||||
if($(this).val() === "custom_date"){
|
||||
|
||||
$("#eDate").hide();
|
||||
$("#sDate").show();
|
||||
|
||||
}else if($(this).val() === "custom_date_range"){
|
||||
|
||||
$("#sDate").show();
|
||||
$("#eDate").show();
|
||||
}else{
|
||||
|
||||
$("#eDate").hide();
|
||||
$("#sDate").hide();
|
||||
}
|
||||
});
|
||||
|
||||
function get_acc_bal(bank_id, input_id) {
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance',
|
||||
data: {'bank_id' : bank_id},
|
||||
|
||||
success: function(response){
|
||||
var acc_bal = response[0].balance;
|
||||
var amount = $('#deposit_amount').val();
|
||||
$('#'+input_id).val(acc_bal);
|
||||
$('#new_account_balance').val(acc_bal + parseInt(amount));
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery('#end_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery('#start_date ,#deposit_date, #payment_date, #_payment_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'pdf', 'print'
|
||||
],
|
||||
"aoColumnDefs": [{
|
||||
"aTargets": [2,3],
|
||||
"defaultContent": "",
|
||||
}]
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('#staff_member, #vendor').select2({
|
||||
placeholder: "-select-"
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
+993
@@ -0,0 +1,993 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
@endpush
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('finance.bills') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('finance.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('finance.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('finance.view_payments') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payments.menu')
|
||||
@include('flash::message')
|
||||
|
||||
<div class="white-box">
|
||||
{{ Form::open(['method'=>'post','route' => 'payments.bills']) }}
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.generated_by') }}:</label>
|
||||
<select class="form-control compulsory required" name="staff_member" id="staff_member" required>
|
||||
<option value="">{{ __('finance.select') }}</option>
|
||||
<option value="ALL STAFF">{{ __('finance.all_staff') }}</option>
|
||||
@foreach($staff_members as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->username }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.vendor') }}:</label>
|
||||
<select class="form-control compulsory required" name="vendor" id="vendor" required>
|
||||
<option value="">{{ __('finance.select') }}</option>
|
||||
<option value="ALL VENDORS">{{ __('finance.all_vendors') }}</option>
|
||||
@foreach($suppliers as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-1">
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.status') }}:</label>
|
||||
<select class="form-control compulsory required" name="bill_status" required>
|
||||
<option value="">{{ __('finance.select') }}</option>
|
||||
<option value="ALL BILLS">{{ __('finance.all') }}</option>
|
||||
<option value="unpaid">{{ __('finance.not_paid') }}</option>
|
||||
<option value="paid">{{ __('finance.paid') }}</option>
|
||||
<option value="paid_but_with_balance">{{ __('finance.paid_with_balance') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance_reports.select_date') }}:</label>
|
||||
<select class="form-control compulsory required" name="dates" id="dates" required>
|
||||
<option value="">{{ __('finance_reports.select') }}</option>
|
||||
<option value="today">{{ __('finance_reports.today') }}</option>
|
||||
<option value="yesterday">{{ __('finance_reports.yesterday') }}</option>
|
||||
<option value="custom_date">{{ __('finance_reports.custom_date') }}</option>
|
||||
<option value="custom_date_range">{{ __('finance_reports.date_range') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div id="sDate" style="display: none;">
|
||||
<div class="form-group">
|
||||
{{ Form::label('start_date', __('finance.date_on')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('start_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'start_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div id="eDate" style="display: none;">
|
||||
<div class="form-group">
|
||||
{{ Form::label('end_date', __('finance.end_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('end_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'end_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-group" style="margin-top: 25px;">
|
||||
{{ Form::submit('Submit', ['class'=>'btn btn-success btn-rounded btn-block pull-right']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
|
||||
<hr>
|
||||
|
||||
<h3><span class="label label-inverse">{{ $display }}</span></h3>
|
||||
|
||||
<br><br>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table id="table" class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="show_checkboxes" style="display: none;"></th>
|
||||
<th>#</th>
|
||||
<th>{{ __('finance.vendor') }}</th>
|
||||
<th>{{ __('finance.bill_number') }}</th>
|
||||
<th>{{ __('finance.bill_date') }}</th>
|
||||
<th>{{ __('finance.bill_due_date') }}</th>
|
||||
<th>{{ __('finance.bill_age') }}</th>
|
||||
<th>{{ __('finance.memo') }}</th>
|
||||
<th>{{ __('finance.payable_account') }}</th>
|
||||
<th>{{ __('finance.items') }}</th>
|
||||
<th>{{ __('finance.item_quantities') }}</th>
|
||||
<th>{{ __('finance.item_amounts') }}</th>
|
||||
<th>{{ __('finance.bill_total') }}</th>
|
||||
<th>{{ __('finance.amount_paid') }}</th>
|
||||
<th>{{ __('finance.balance') }}</th>
|
||||
<th>{{ __('finance.action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$count = 0;
|
||||
$total = 0;
|
||||
$_amount_paid = 0;
|
||||
$amount_paid = 0;
|
||||
$balance = 0;
|
||||
$back_date = \Streamline\Models\HospitalInformation::first()->pluck('back_date');
|
||||
@endphp
|
||||
|
||||
@foreach( $bills as $bill)
|
||||
<tr id="bill_record_{{ $bill->id }}">
|
||||
<td class="show_checkboxes" style="display: none;">
|
||||
<input id='checkbox_{{ $bill->id }}' type='checkbox' @if ($bill->bill_memo == "UN-VERIFIED AUTO CREATED STRE@MLINE INVENTORY BILL") onclick="return false;" @endif />
|
||||
</td>
|
||||
<td>
|
||||
{{ ($count + 1)."." }}
|
||||
</td>
|
||||
<td>{{ get_name($bill->vendor, 'id', 'name', 'suppliers') }}</td>
|
||||
<td>{{ $bill->bill_number }}</td>
|
||||
<td>{{ streamline_date($bill->bill_date) }}</td>
|
||||
<td>{{ isset($bill->bill_due_date) ? streamline_date($bill->bill_due_date) : "" }}</td>
|
||||
<td>{{ getDaysTillNow($bill->bill_date) }}</td>
|
||||
<td>{{ $bill->bill_memo }}</td>
|
||||
<td>
|
||||
@php $payable_accounts = explode(',', $bill->payable_account); @endphp
|
||||
@foreach ($payable_accounts as $payable_account)
|
||||
{{ get_name($payable_account, 'id', 'name', 'chart_of_accounts') }} <br>
|
||||
@endforeach
|
||||
</td>
|
||||
@php
|
||||
$items = explode(',', $bill->item_ids);
|
||||
$quantities = explode(',', $bill->item_quantities);
|
||||
$subtotals = explode(',', $bill->item_subtotals);
|
||||
@endphp
|
||||
<td>
|
||||
@if($bill->bill_type == 'DRU')
|
||||
@php $items_string = ""; @endphp
|
||||
@for($x = 0; $x < count($items); $x++) @php $items_string .=get_name($items[$x], 'id' , 'name' , 'drugs' ) . "<br>" ; @endphp @endfor {!! read_more($items_string, 'short_items' . $bill->bill_number, 'long_items' . $bill->bill_number) !!}
|
||||
<div id="long_items{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $items_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_items{{ $bill->bill_number }}');show('short_items{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
@elseif($bill->bill_type == 'SUN')
|
||||
@php $items_string = ""; @endphp
|
||||
@for($x = 0; $x < count($items); $x++) @php $items_string .=get_name($items[$x], 'id' , 'name' , 'sundries' ) . ",<br>" ; @endphp @endfor {!! read_more($items_string, 'short_items' . $bill->bill_number, 'long_items' . $bill->bill_number) !!}
|
||||
<div id="long_items{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $items_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_items{{ $bill->bill_number }}');show('short_items{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
@elseif($bill->bill_type == 'DEN')
|
||||
@php $items_string = ""; @endphp
|
||||
@for($x = 0; $x < count($items); $x++) @php $items_string .=get_name($items[$x], 'id' , 'name' , 'dentals' ) . ",<br>" ; @endphp @endfor {!! read_more($items_string, 'short_items' . $bill->bill_number, 'long_items' . $bill->bill_number) !!}
|
||||
<div id="long_items{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $items_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_items{{ $bill->bill_number }}');show('short_items{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
@elseif($bill->bill_type == 'RAD')
|
||||
@php $items_string = ""; @endphp
|
||||
@for($x = 0; $x < count($items); $x++) @php $items_string .=get_name($items[$x], 'id' , 'name' , 'radiologies' ) . ",<br>" ; @endphp @endfor {!! read_more($items_string, 'short_items' . $bill->bill_number, 'long_items' . $bill->bill_number) !!}
|
||||
<div id="long_items{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $items_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_items{{ $bill->bill_number }}');show('short_items{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
@elseif($bill->bill_type == 'LAB')
|
||||
@php $items_string = ""; @endphp
|
||||
@for($x = 0; $x < count($items); $x++) @php $items_string .=get_name($items[$x], 'id' , 'name' , 'labs' ) . ",<br>" ; @endphp @endfor {!! read_more($items_string, 'short_items' . $bill->bill_number, 'long_items' . $bill->bill_number) !!}
|
||||
<div id="long_items{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $items_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_items{{ $bill->bill_number }}');show('short_items{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
@elseif($bill->bill_type == 'PAY')
|
||||
@php $items_string = ""; @endphp
|
||||
@for($x = 0; $x < count($items); $x++) @php $items_string .=get_name($items[$x], 'id' , 'name' , 'payment_items' ) . ",<br>" ; @endphp @endfor {!! read_more($items_string, 'short_items' . $bill->bill_number, 'long_items' . $bill->bill_number) !!}
|
||||
<div id="long_items{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $items_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_items{{ $bill->bill_number }}');show('short_items{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
@elseif($bill->bill_type == 'GEN')
|
||||
@php $items_string = ""; @endphp
|
||||
@for($x = 0; $x < count($items); $x++) @php $items_string .=get_name($items[$x], 'id' , 'name' , 'general_items' ) . ",<br>" ; @endphp @endfor {!! read_more($items_string, 'short_items' . $bill->bill_number, 'long_items' . $bill->bill_number) !!}
|
||||
<div id="long_items{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $items_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_items{{ $bill->bill_number }}');show('short_items{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
@elseif($bill->bill_type == 'EYE')
|
||||
@php $items_string = ""; @endphp
|
||||
@for($x = 0; $x < count($items); $x++) @php $items_string .=get_name($items[$x], 'id' , 'name' , 'eye_glasses' ) . ",<br>" ; @endphp @endfor {!! read_more($items_string, 'short_items' . $bill->bill_number, 'long_items' . $bill->bill_number) !!}
|
||||
<div id="long_items{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $items_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_items{{ $bill->bill_number }}');show('short_items{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
@endif
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@php $quantities_string = ""; @endphp
|
||||
@for($x = 0; $x < count($quantities); $x++) @php $quantities_string .=($quantities[$x]==1) ? $quantities[$x]." unit": $quantities[$x]." units" . "<br>" ; @endphp @endfor {!! read_more($quantities_string, 'short_quantities' . $bill->bill_number, 'long_quantities' . $bill->bill_number) !!}
|
||||
<div id="long_quantities{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $quantities_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_quantities{{ $bill->bill_number }}');show('short_quantities{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@php $subtotals_string = ""; @endphp
|
||||
@for($x = 0; $x < count($subtotals); $x++) @php $subtotals_string .=ugandan_shillings_with_decimals($subtotals[$x]) . "<br>" ; @endphp @endfor {!! read_more($subtotals_string, 'short_subtotals' . $bill->bill_number, 'long_subtotals' . $bill->bill_number) !!}
|
||||
<div id="long_subtotals{{ $bill->bill_number }}" style="display: none;">
|
||||
{!! $subtotals_string !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;" onclick="hide('long_subtotals{{ $bill->bill_number }}');show('short_subtotals{{ $bill->bill_number }}');">Read Less</a>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td>{{ ugandan_shillings_with_decimals($bill->total_amount) }}</td>
|
||||
|
||||
@php $_amount_paid = (int)$bill->total_amount - (!is_null($bill->balance) ? (int)$bill->balance : (int)$bill->total_amount) ; @endphp
|
||||
<input type="hidden" id="amount_paid_off_{{ $bill->id }}" value="{{ $_amount_paid }}">
|
||||
<td>{{ ugandan_shillings_with_decimals($_amount_paid) }}</td>
|
||||
|
||||
<td>
|
||||
{{ ugandan_shillings_with_decimals(is_null($bill->balance) ? $bill->total_amount : $bill->balance) }}
|
||||
<input type='hidden' value='{{ is_null($bill->balance) ? $bill->total_amount : $bill->balance }}' id='bill_balance_{{ $bill->id }}' />
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@if ($bill->bill_memo != "UN-VERIFIED AUTO CREATED STRE@MLINE INVENTORY BILL")
|
||||
@if(is_null($bill->balance))
|
||||
@if( Auth::user()->can('pay-hospital-bills') )
|
||||
<button class="btn btn-sm btn-rounded btn-success" id="pay_btn_{{ $bill->id }}" onclick="show_payment_modal('{{ $bill->id }}')">{{ __('finance.pay_bill') }}</button>
|
||||
<button class="btn btn-sm btn-rounded btn-warning" style="display: none;" id="update_btn_{{ $bill->id }}" onclick="show_update_payment_modal('{{ $bill->id }}')">{{ __('finance.pay_balance') }}</button>
|
||||
@endif
|
||||
<a class="btn btn-sm btn-rounded btn-primary" style="display: none;" href="{{ route('payments.voucher', $bill->id) }}" id="voucher_btn_{{ $bill->id }}">{{ __('finance.view_payment_vouchers') }}</a>
|
||||
@elseif($bill->balance > 0)
|
||||
@if( Auth::user()->can('pay-hospital-bills') )
|
||||
<button class="btn btn-sm btn-rounded btn-warning" onclick="show_update_payment_modal('{{ $bill->id }}')">{{ __('finance.pay_balance') }}</button>
|
||||
@endif
|
||||
<a class="btn btn-sm btn-rounded btn-primary" href="{{ route('payments.voucher', $bill->id) }}">{{ __('finance.view_payment_vouchers') }}</a>
|
||||
@elseif($bill->balance == 0)
|
||||
<a class="btn btn-sm btn-rounded btn-primary" href="{{ route('payments.voucher', $bill->id) }}">{{ __('finance.view_payment_vouchers') }}</a>
|
||||
@endif
|
||||
|
||||
@if((Auth::user()->can('edit-hospital-bills')) && ($bill->bill_type == 'PAY') && (strpos($bill->bill_number, "Journal") !== 0))
|
||||
@if(is_bill_payment_transaction_reconciled($bill->id))
|
||||
<a data-toggle="modal" data-target="#reconciledBillModal" class="btn btn-sm btn-rounded btn-info" style="font-size: 12px; background-color:#86b6cb">{{ __('payments.edit_bill') }}</a>
|
||||
@elseif($bill->payment_status == 1)
|
||||
<a data-toggle="modal" data-target="#paidBillModal" class="btn btn-sm btn-rounded btn-info" style="font-size: 12px; background-color:#86b6cb">{{ __('payments.edit_bill') }}</a>
|
||||
@else
|
||||
<a class="btn btn-sm btn-rounded btn-info" href="{{ route('payments.edit_bill', $bill->id) }}" target="_blank">{{ __('payments.edit_bill') }}</a>
|
||||
@endif
|
||||
@endif
|
||||
{{-- check if it's not a journal before displaying delete --}}
|
||||
@php
|
||||
$bill_number = $bill->bill_number;
|
||||
@endphp
|
||||
|
||||
@if(Auth::user()->can('delete-hospital-bills') && strpos($bill_number, 'Journal') === false)
|
||||
@if(is_bill_payment_transaction_reconciled($bill->id))
|
||||
<a data-toggle="modal" data-target="#reconciledBillModal" class="btn btn-sm btn-rounded btn-danger" style="font-size: 12px; background-color:rgb(219 162 174)">{{ __('finance.delete_bill') }}</a>
|
||||
@elseif($bill->payment_status == 1)
|
||||
<a data-toggle="modal" data-target="#paidBillModal" class="btn btn-sm btn-rounded btn-danger" style="font-size: 12px; background-color:rgb(219 162 174)">{{ __('finance.delete_bill') }}</a>
|
||||
@else
|
||||
<button class="btn btn-sm btn-rounded btn-danger" onclick="remove('{{ $bill->id }}', '{{ $bill->bill_number }}')">{{ __('finance.delete_bill') }}</button>
|
||||
@endif
|
||||
@endif
|
||||
@else
|
||||
<span class="label label-danger"><a href="#" data-toggle="tooltip" rel="tooltip" data-placement="top" title="verify the bill via the received inventory bills button in the top menu"> <i class="fa fa-info-circle"></i></a>{{ __('payments.bill_not_yet_verified') }}</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@php
|
||||
$count ++;
|
||||
$total += $bill->total_amount;
|
||||
$balance += (is_null($bill->balance) ? $bill->total_amount : $bill->balance);
|
||||
$amount_paid += (is_null($bill->balance) ? 0 : ((int)$bill->total_amount - (int)$bill->balance));
|
||||
@endphp
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
<tr>
|
||||
<td class="show_checkboxes" style="display: none;"></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><strong>{{ __('payments.total') }}</strong></td>
|
||||
<td>{{ ugandan_shillings($total) }}</td>
|
||||
<td>{{ ugandan_shillings($amount_paid) }}</td>
|
||||
<td>{{ ugandan_shillings($balance) }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@if(Auth::user()->can('Payments-make-bulk-bill-payments'))
|
||||
<hr>
|
||||
<button class="btn btn-warning btn-rounded" onclick="show_bulk_pay_div()">{{ __('payments.perform_bulk_payment') }}</button>
|
||||
<br>
|
||||
@endif
|
||||
|
||||
<div id="bulk_pay_div" style="display: none;">
|
||||
{{ Form::open(['method'=>'post', 'route'=>'payments.bills_bulk_pay', 'id'=>'bills_bulk_pay_form'])}}
|
||||
|
||||
<div class='row'>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
{{ Form::label('amount_to_pay', __('payments.amount_to_be_paid')) }}
|
||||
{{ Form::number('amount_to_pay', 0, ['class'=>'form-control compulsory', 'required', 'id'=>'bulk_amount_to_pay']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
{{ Form::label('payment_date', __('payments.payment_date')) }}
|
||||
{{ Form::text('payment_date', '', ['class'=>'form-control compulsory', 'required', 'readonly', 'id'=>'bulk_payment_date']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="selected_bill_ids" id="selected_bill_ids">
|
||||
<input type="hidden" name="total_amount_paid_off" value="0" id="total_amount_paid_off">
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
{{ Form::label('bank_account', __('payments.bank_account')) }}
|
||||
{{ Form::select('bank_account', $bank_accounts, null, ['class'=>'form-control compulsory', 'required', 'id'=>'bulk_bank_account']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
{{ Form::label('account_balance', __('payments.account_balance')) }}
|
||||
{{ Form::number('account_balance', 0, ['class'=>'form-control', 'readonly', 'id'=>'bulk_account_balance']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<button class='btn btn-success btn-rounded btn-block pull-right' id="validate_bulk_pay" style='display: none; margin-top:23px;'>{{ __('payments.make_bulk_payment') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ Form::open(['method'=>'post','route' => 'payments.bills', 'id'=>'reload_bills_form']) }}
|
||||
{{ Form::hidden('staff_member', $request->staff_member) }}
|
||||
{{ Form::hidden('vendor', $request->vendor) }}
|
||||
{{ Form::hidden('bill_status', $request->bill_status) }}
|
||||
{{ Form::hidden('dates', $request->dates) }}
|
||||
{{ Form::hidden('start_date', $request->start_date) }}
|
||||
{{ Form::hidden('end_date', $request->end_date) }}
|
||||
{{ Form::close() }}
|
||||
|
||||
<div class="modal" id="payment_modal" tabindex="-1" role="dialog" aria-labelledby="banking_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12 text-center">
|
||||
<h3 class="modal-title" id="banking_modal_label"><b>{{ __('finance.pay_bill') }}</b></h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.bank_account') }}</label>
|
||||
<select name="bank_account" class="form-control" id="bank_account" onchange="get_acc_bal(this.value, 'current_account_balance')">
|
||||
<option>{{ __('finance.select') }}</option>
|
||||
@foreach($banks as $bank)
|
||||
<option value="{{ $bank->id }}">{{ $bank->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.bill_total') }}</label>
|
||||
<input name="bill_total" id="bill_total" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.bill_date') }}</label>
|
||||
<input name="bill_due_date" id="bill_due_date" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.payment_memo') }}</label>
|
||||
<textarea name="payment_memo" id="payment_memo" class="form-control" rows="5"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.current_account_balance') }}</label>
|
||||
<input name="current_account_balance" id="current_account_balance" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.amount_to_pay') }}</label>
|
||||
<input name="amount_to_pay" id="amount_to_pay" type="number" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.bill_balance') }}</label>
|
||||
<input name="bill_balance" id="bill_balance" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.payment_by') }}</label>
|
||||
<input name="payment_by_name" readonly value="{{ get_full_name(\Illuminate\Support\Facades\Auth::id(),'id', 'first_name', 'last_name', 'users') }}" class="form-control">
|
||||
<input type="hidden" id="payment_by_id" value="{{ \Illuminate\Support\Facades\Auth::id() }}">
|
||||
<input type="hidden" name="bill_id" id="bill_id">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('payment_date', __('finance.payment_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('payment_date', '', ['class'=>'form-control compulsory', 'required', 'readonly', 'id'=>'payment_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">{{ __('finance.cancel') }}</button>
|
||||
<button type="button" class="btn btn-success" id="confirm_payment">{{ __('finance.confirm') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="update_payment_modal" tabindex="-1" role="dialog" aria-labelledby="banking_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12 text-center">
|
||||
<h3 class="modal-title" id="banking_modal_label"><b>{{ __('finance.update_bill_payment') }}</b></h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.bank_account') }}</label>
|
||||
<select name="bank_account" class="form-control" id="_bank_account" onchange="get_acc_bal(this.value, '_current_account_balance')">
|
||||
<option>{{ __('finance.select') }}</option>
|
||||
@foreach($banks as $bank)
|
||||
<option value="{{ $bank->id }}">{{ $bank->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.bill_total') }}</label>
|
||||
<input name="bill_total" id="_bill_total" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.bill_date') }}</label>
|
||||
<input name="bill_due_date" id="_bill_due_date" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.payment_memo') }}</label>
|
||||
<textarea name="payment_memo" id="_payment_memo" class="form-control" rows="5"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.current_account_balance') }}</label>
|
||||
<input name="current_account_balance" id="_current_account_balance" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.amount_to_pay') }}</label>
|
||||
<input name="amount_to_pay" id="_amount_to_pay" type="number" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.bill_balance') }}</label>
|
||||
<input name="bill_balance" id="_bill_balance" type="number" readonly class="form-control">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('finance.payment_by') }}</label>
|
||||
<input name="payment_by_name" readonly value="{{ get_full_name(\Illuminate\Support\Facades\Auth::id(),'id', 'first_name', 'last_name', 'users') }}" class="form-control">
|
||||
<input type="hidden" id="_payment_by_id" value="{{ \Illuminate\Support\Facades\Auth::id() }}">
|
||||
<input type="hidden" name="bill_id" id="_bill_id">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('_payment_date', __('finance.payment_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('_payment_date', '', ['class'=>'form-control compulsory', 'required', 'readonly', 'id'=>'_payment_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">{{ __('finance.cancel') }}</button>
|
||||
<button type="button" class="btn btn-success" id="update_payment">{{ __('finance.confirm') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="reconciledBillModal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h2><b>{{ __('payments.please_note') }}</b></h2>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12">
|
||||
<h3>{{ __('payments.bill_already_reconciled_message') }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">{{ __('payments.close') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="paidBillModal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h2><b>{{ __('payments.please_note') }}</b></h2>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12">
|
||||
<h3>{{ __('payments.bill_already_paid_message') }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">{{ __('payments.close') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<!-- Date Picker Plugin JavaScript -->
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
var ticked_off_bills_array = [];
|
||||
var is_payment_of_greater_expense_allowed = <?php echo is_payment_of_greater_expense_allowed(); ?>;
|
||||
|
||||
function show_bulk_pay_div() {
|
||||
alert('Please Be Sure To Select The Bills That You Wish To Clear.')
|
||||
$('#bulk_pay_div').show();
|
||||
$('.show_checkboxes').show();
|
||||
}
|
||||
|
||||
$('#bulk_bank_account').on('change', function() {
|
||||
let payment_date = $('#bulk_payment_date').val();
|
||||
let bank = this.value;console.log('Bank:'+bank+' date:'+payment_date);
|
||||
|
||||
if (payment_date !== "") {
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance_per_date/',
|
||||
data: {
|
||||
'bank': bank,
|
||||
'date': payment_date
|
||||
},
|
||||
success: function(result) {
|
||||
var record = JSON.parse(result);
|
||||
if (record !== null) {
|
||||
var acc_bal = record['account_balance'];
|
||||
$('#bulk_account_balance').val(acc_bal);
|
||||
$('#validate_bulk_pay').show();
|
||||
} else {
|
||||
alert('No Corresponding Account Balance To The Selected Account.')
|
||||
$('#validate_bulk_pay').hide();
|
||||
}
|
||||
},
|
||||
error: function(error) {
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.value = '';
|
||||
alert('Please Select A Payment Date');
|
||||
}
|
||||
});
|
||||
|
||||
$('#validate_bulk_pay').click(function(e) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
let payment_date = $('#bulk_payment_date').val();
|
||||
let bank_account = $('#bulk_bank_account').val();
|
||||
let account_balance = $('#bulk_account_balance').val();
|
||||
let amount_to_pay = $('#bulk_amount_to_pay').val();
|
||||
|
||||
if (payment_date === "") {
|
||||
alert('Please Select A Payment Date.')
|
||||
} else if (bank_account === "") {
|
||||
alert('Please Select A Bank Account.')
|
||||
} else if (parseInt(amount_to_pay) > parseInt(account_balance)) {
|
||||
alert('Account Balance Is Low')
|
||||
} else {
|
||||
|
||||
if (ticked_off_bills_array.length !== 0) {
|
||||
if (confirm("Are you sure ?")) {
|
||||
$('#bills_bulk_pay_form').submit();
|
||||
}
|
||||
} else {
|
||||
alert('Please Select The Bills That You Wish To Pay Off Fully Or Partially')
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("[id^='checkbox_']").on("change", function() {
|
||||
var id = /\d+(?=\D*$)/.exec($(this).attr('id'));
|
||||
|
||||
let amount_to_pay = $('#bulk_amount_to_pay').val();
|
||||
let bill_balance = $('#bill_balance_' + id).val();
|
||||
let amount_paid_off = $('#amount_paid_off_' + id).val();
|
||||
let total_amount_paid_off = $('#total_amount_paid_off').val();
|
||||
|
||||
let new_amount_to_pay = parseInt(amount_to_pay) + parseInt(bill_balance);
|
||||
let new_total_amount_paid_off = parseInt(total_amount_paid_off) + parseFloat(amount_paid_off);
|
||||
|
||||
if (this.checked) {
|
||||
$('#bill_record_' + id).children('td, th').css('background-color', 'gold');
|
||||
$('#bulk_amount_to_pay').val(new_amount_to_pay);
|
||||
$('#total_amount_paid_off').val(new_total_amount_paid_off);
|
||||
ticked_off_bills_array.push(id[0]);
|
||||
} else {
|
||||
$('#bill_record_' + id).children('td, th').css('background-color', 'white');
|
||||
$('#bulk_amount_to_pay').val(parseInt(amount_to_pay) - parseInt(bill_balance));
|
||||
$('#total_amount_paid_off').val(parseInt(total_amount_paid_off) - parseInt(amount_paid_off));
|
||||
const index = ticked_off_bills_array.indexOf(id);
|
||||
ticked_off_bills_array.splice(index, 1);
|
||||
}
|
||||
|
||||
$('#selected_bill_ids').val(ticked_off_bills_array);
|
||||
});
|
||||
|
||||
function show_payment_modal(id) {
|
||||
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: '/payments/get_bill_details/' + id,
|
||||
data: {
|
||||
'id': id
|
||||
},
|
||||
success: function(result) {
|
||||
$('#bill_id').val(result['id']);
|
||||
$('#bill_total').val(result['total_amount']);
|
||||
$('#bill_due_date').val(result['bill_date']);
|
||||
$('#bill_balance').val(result['balance']);
|
||||
$('#payment_modal').modal('show');
|
||||
},
|
||||
error: function(error) {
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function show_update_payment_modal(id) {
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: '/payments/get_bill_details/' + id,
|
||||
data: {
|
||||
'id': id
|
||||
},
|
||||
success: function(result) {
|
||||
$('#_bill_id').val(result['id']);
|
||||
$('#_amount_to_pay').val(0);
|
||||
$('#_payment_memo').val('');
|
||||
$('#_payment_date').val('');
|
||||
$('#_bill_total').val(result['balance']);
|
||||
$('#_bill_due_date').val(result['bill_date']);
|
||||
$('#_bill_balance').val(result['balance']);
|
||||
$('#update_payment_modal').modal('show');
|
||||
},
|
||||
error: function(error) {
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ---------------------- recheck later -------------------------------------
|
||||
$('#amount_to_pay').change(function() {
|
||||
var amount_to_pay = this.value;
|
||||
var bill_total = $('#bill_total').val();
|
||||
var account_balance = $('#current_account_balance').val();
|
||||
var bill_balance = bill_total - amount_to_pay;
|
||||
if (bill_balance < 0) {
|
||||
alert('Amount to pay appears to be more than the required bill amount.');
|
||||
this.value = 0;
|
||||
} else {
|
||||
$('#bill_balance').val(bill_balance);
|
||||
}
|
||||
});
|
||||
|
||||
$('#_amount_to_pay').change(function() {
|
||||
var amount_to_pay = this.value;
|
||||
var bill_total = $('#_bill_total').val();
|
||||
var account_balance = $('#_current_account_balance').val();
|
||||
var bill_balance = bill_total - amount_to_pay;
|
||||
if (bill_balance < 0) {
|
||||
alert('Amount to pay appears to be more than the required bill amount.');
|
||||
this.value = 0;
|
||||
} else {
|
||||
$('#_bill_balance').val(bill_balance);
|
||||
}
|
||||
});
|
||||
|
||||
$('#update_payment').click(function() {
|
||||
var bill_id = $('#_bill_id').val();
|
||||
var bill_balance = $('#_bill_balance').val();
|
||||
var current_account_balance = $('#_current_account_balance').val();
|
||||
var payment_date = $('#_payment_date').val();
|
||||
var bank_account = $('#_bank_account').val();
|
||||
var amount_to_pay = $('#_amount_to_pay').val();
|
||||
var payment_memo = $('#_payment_memo').val();
|
||||
var check = confirm('Are you sure you want to proceed with this payment ?');
|
||||
|
||||
if (current_account_balance <= 0) {
|
||||
alert('Account Balance is Zero(0) UGX');
|
||||
if (is_payment_of_greater_expense_allowed !== 1) {
|
||||
return false;
|
||||
}
|
||||
} else if (parseInt(amount_to_pay) > current_account_balance) {
|
||||
alert('Your Account Balance is low');
|
||||
if (is_payment_of_greater_expense_allowed !== 1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$(this).prop("disabled", true);
|
||||
$(this).html("Processing...");
|
||||
|
||||
if (check) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/store_bill_payment',
|
||||
data: {
|
||||
'bill_id': bill_id,
|
||||
'bill_balance': bill_balance,
|
||||
'payment_date': payment_date,
|
||||
'bank_account': bank_account,
|
||||
'amount_to_pay': amount_to_pay,
|
||||
'payment_memo': payment_memo,
|
||||
'current_account_balance': current_account_balance,
|
||||
},
|
||||
success: function(result) {
|
||||
// console.log(result);
|
||||
$('#reload_bills_form').submit();
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error)
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('#confirm_payment').click(function() {
|
||||
var bill_id = $('#bill_id').val();
|
||||
var bill_balance = $('#bill_balance').val();
|
||||
var current_account_balance = $('#current_account_balance').val();
|
||||
var payment_date = $('#payment_date').val();
|
||||
var bank_account = $('#bank_account').val();
|
||||
var amount_to_pay = $('#amount_to_pay').val();
|
||||
var payment_memo = $('#payment_memo').val();
|
||||
var check = confirm('Are you sure you want to proceed with this payment ?');
|
||||
|
||||
if (current_account_balance <= 0) {
|
||||
alert('Account Balance is Zero(0) UGX');
|
||||
if (is_payment_of_greater_expense_allowed !== 1) {
|
||||
return false;
|
||||
}
|
||||
} else if (parseInt(amount_to_pay) > current_account_balance) {
|
||||
alert('Your Account Balance is low');
|
||||
if (is_payment_of_greater_expense_allowed !== 1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$(this).prop("disabled", true);
|
||||
$(this).html("Processing...");
|
||||
|
||||
if (check) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/store_bill_payment',
|
||||
data: {
|
||||
'bill_id': bill_id,
|
||||
'bill_balance': bill_balance,
|
||||
'payment_date': payment_date,
|
||||
'bank_account': bank_account,
|
||||
'amount_to_pay': amount_to_pay,
|
||||
'payment_memo': payment_memo,
|
||||
'current_account_balance': current_account_balance,
|
||||
},
|
||||
success: function(result) {
|
||||
$('#reload_bills_form').submit();
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error)
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function remove(id, bill_number) {
|
||||
var check = confirm('Are You Sure You Want To Delete This Bill ?');
|
||||
if (check) {
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/delete_bill',
|
||||
data: {
|
||||
'bill_id': id
|
||||
},
|
||||
success: function(result) {
|
||||
if (result != 'fail') {
|
||||
$('#' + id).remove();
|
||||
alert('Bill ' + bill_number + ' has been deleted successfully.');
|
||||
$('#reload_bills_form').submit();
|
||||
} else {
|
||||
alert('failed to delete Bill ' + bill_number)
|
||||
}
|
||||
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error)
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$('#dates').change(function(e) {
|
||||
|
||||
if ($(this).val() === "custom_date") {
|
||||
|
||||
$("#eDate").hide();
|
||||
$("#sDate").show();
|
||||
|
||||
} else if ($(this).val() === "custom_date_range") {
|
||||
|
||||
$("#sDate").show();
|
||||
$("#eDate").show();
|
||||
} else {
|
||||
|
||||
$("#eDate").hide();
|
||||
$("#sDate").hide();
|
||||
}
|
||||
});
|
||||
|
||||
function get_acc_bal(bank_id, input_id) {
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance',
|
||||
data: {
|
||||
'bank_id': bank_id
|
||||
},
|
||||
|
||||
success: function(response) {
|
||||
var record = JSON.parse(response);
|
||||
var acc_bal = record['account_balance'];
|
||||
var amount = $('#deposit_amount').val();
|
||||
$('#' + input_id).val(acc_bal);
|
||||
$('#new_account_balance').val(acc_bal + parseInt(amount));
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function show(id) {
|
||||
if (document.getElementById(id).style.display === 'none') {
|
||||
document.getElementById(id).style.display = '';
|
||||
}
|
||||
}
|
||||
|
||||
function hide(id) {
|
||||
document.getElementById(id).style.display = 'none';
|
||||
}
|
||||
</script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery('#end_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery('#start_date ,#deposit_date, #_payment_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
let min_days = <?php echo $back_date[0]; ?>;
|
||||
var min_date = new Date();
|
||||
min_date.setDate(min_date.getDate()-min_days);
|
||||
$('#payment_date, #bulk_payment_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
endDate: new Date(),
|
||||
startDate: min_date,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'pdf', 'print'
|
||||
],
|
||||
"aoColumnDefs": [{
|
||||
"aTargets": [2, 3],
|
||||
"defaultContent": "",
|
||||
}]
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('#staff_member, #vendor').select2({
|
||||
placeholder: "-select-"
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
+292
@@ -0,0 +1,292 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
@endpush
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.bill_payments_voucher') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.payment_detail') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
@include('flash::message')
|
||||
<div class="row">
|
||||
<div class="col-md-12 pull-right text-right">
|
||||
<button class="btn btn-rounded" style="background-color: #03C03C; color: white;" id="print_btn"> <i class="fa fa-print"></i> {{ __('payments.print_payments_voucher') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="white-box" id="printableContent">
|
||||
<div class="row">
|
||||
<div class="col-md-6 text-left">
|
||||
<address>
|
||||
<img src="{{ asset($hospital_information->logo) }}" class="img-responsive">
|
||||
<h3> <b class="text-danger">{{ $hospital_information->name }}</b></h3>
|
||||
<p class="text-muted m-l-5">{{ $hospital_information->phone_number }}, {{ $hospital_information->email }},
|
||||
<br/> {{ get_name($hospital_information->sub_county,'id', 'name', 'subcounties') }}, {{ get_name($hospital_information->district,'id', 'name', 'districts') }},
|
||||
<br/> {{ $hospital_information->country }}.</p>
|
||||
</address>
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
<hr/>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="table-responsive">
|
||||
<br/>
|
||||
<table id="table" class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('payments.items') }}</th>
|
||||
<th>{{ __('payments.vendor') }}</th>
|
||||
<th>{{ __('payments.quantity') }}</th>
|
||||
<th>{{ __('payments.unit_cost') }}</th>
|
||||
<th>{{ __('payments.amount_paid') }}</th>
|
||||
<th>{{ __('payments.paid_from_bank') }}</th>
|
||||
<th>{{ __('payments.staff') }}</th>
|
||||
<th>{{ __('payments.transaction_date') }}</th>
|
||||
<th>{{ __('payments.record_date') }}</th>
|
||||
@if(Auth::user()->can('delete-payment-record'))
|
||||
<th>{{ __('payments.action') }}</th>
|
||||
@endif
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$total = 0;
|
||||
@endphp
|
||||
|
||||
@foreach($payments as $item)
|
||||
<tr>
|
||||
<td>
|
||||
@php
|
||||
$bill = \Streamline\Models\HospitalBill::find($item->bill_id);
|
||||
$items = explode(',', $bill->item_ids);
|
||||
$quantities = explode(',', $bill->item_quantities);
|
||||
@endphp
|
||||
@if($bill->bill_type == 'DRU')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'drugs') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'SUN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'sundries') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'DEN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'dentals') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'RAD')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'radiologies') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'LAB')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'labs') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'GEN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'general_items') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'PAY')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'payment_items') }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'EYE')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ get_name($items[$x], 'id', 'name', 'eye_glasses') }} <br/>
|
||||
@endfor
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ get_name($item->vendor, 'id', 'name', 'suppliers') }}</td>
|
||||
<td>
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ $quantities[$x]." units" }} <br/>
|
||||
@endfor
|
||||
</td>
|
||||
<td>
|
||||
@if($bill->bill_type == 'DRU')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'drugs')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'SUN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'sundries')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'DEN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'dentals')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'RAD')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'radiologies')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'LAB')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'labs')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'GEN')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'cost_price', 'general_items')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'PAY')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'unit_cost', 'payment_items')) }} <br/>
|
||||
@endfor
|
||||
@elseif($bill->bill_type == 'EYE')
|
||||
@for($x = 0; $x < count($items); $x++)
|
||||
{{ ugandan_shillings(get_name($items[$x], 'id', 'buying_price', 'eye_glasses')) }} <br/>
|
||||
@endfor
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ ugandan_shillings($item->amount) }}</td>
|
||||
<td>{{ get_name($item->account_id, 'id', 'name', 'chart_of_accounts') }}</td>
|
||||
<td>{{ get_full_name($item->created_by, 'id', 'first_name', 'last_name', 'users') }}</td>
|
||||
<td>{{ streamline_date($item->expense_date) }}</td>
|
||||
<td>{{ streamline_date_time_short($item->created_at) }}</td>
|
||||
@if(Auth::user()->can('delete-payment-record'))
|
||||
<td>
|
||||
@if(is_payment_transaction_reconciled($item->id) == false)
|
||||
<button class="btn btn-sm btn-rounded btn-danger" id="bank_{{ $item->id }}" onclick="undo_payment('{{ $item->transaction_id }}')"><i class="fa fa-undo"></i> {{ __('payments.undo_payment') }}</button>
|
||||
@else
|
||||
<a data-toggle="modal" data-target="#reconciledBillModal" class="btn btn-sm btn-rounded btn-danger" style="font-size: 12px; background-color:rgb(219 162 174)">{{ __('payments.undo_payment') }}</a>
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@php
|
||||
$total += $item->amount;
|
||||
@endphp
|
||||
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><strong>{{ __('payments.total') }}</strong></td>
|
||||
<td>{{ ugandan_shillings($total) }}</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
@if(Auth::user()->can('delete-payment-record'))
|
||||
<td></td>
|
||||
@endif
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="reconciledBillModal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<span class="label label-info">Please note</span>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12">
|
||||
<h3>{{ __('payments.payment_already_reconciled_message') }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">{{ __('payments.close') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<!-- Date Picker Plugin JavaScript -->
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function printElementContent(elem,title){
|
||||
var mywindow = window.open('', 'PRINT', 'height=400,width=600');
|
||||
var css = '<link href="/elite/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">';
|
||||
|
||||
mywindow.document.write('<html><head><title></title>');
|
||||
mywindow.document.write('</head><body >');
|
||||
mywindow.document.write(css);
|
||||
mywindow.document.write('<center><h3>' + title + '</h3></center>');
|
||||
mywindow.document.write(document.getElementById(elem).innerHTML);
|
||||
mywindow.document.write('</body></html>');
|
||||
mywindow.document.close(); // necessary for IE >= 10
|
||||
//mywindow.focus(); // necessary for IE >= 10*/
|
||||
setTimeout(function () {
|
||||
mywindow.focus();
|
||||
mywindow.print();
|
||||
mywindow.remove();
|
||||
}, 500);
|
||||
return true;
|
||||
}
|
||||
|
||||
$("#print_btn").click(function(e){ var i = 0;
|
||||
printElementContent('printableContent','Payments Voucher'); console.log(i++)
|
||||
});
|
||||
|
||||
function undo_payment(payment_id) {
|
||||
var check = confirm('Are You Sure You Want To Undo This Payment?');
|
||||
if (check) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/undo_bill_payment/' + payment_id,
|
||||
success: function(result) {
|
||||
if (result == 'success') {
|
||||
alert('This payment has been undone!');
|
||||
location.reload();
|
||||
return false;
|
||||
} else {
|
||||
alert('Failed to undo payment');
|
||||
}
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error)
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
@endpush
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.payments_voucher') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.payment_detail') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="white-box">
|
||||
@include('flash::message')
|
||||
<div class="row">
|
||||
{{ Form::open(['method' => 'POST', 'route' => 'payments.print_payment_voucher_detail', 'id' =>'voucherPrint', 'target'=>'_blank']) }}
|
||||
<input type="hidden" name="payment" id="payment" value='{{ json_encode($payment, true) }}' />
|
||||
<input type="hidden" name="hospital_information" id="hospital_information" value='{{ json_encode($hospital_information, true) }}' />
|
||||
<input type="hidden" name="date" id="date" value='{{ $date }}' />
|
||||
<input type="hidden" name="trans_id" id="trans_id" value='{{ $trans_id }}' />
|
||||
<input type="hidden" name="memo" id="memo" value='{{ $memo }}' />
|
||||
<input type="hidden" name="expense_date" id="expense_date" value="{{ $expense_date }}" />
|
||||
<div class="col-md-12 pull-right text-right">
|
||||
<a href="{{ route('payments.new_payment') }}" class="nav-item btn btn-success" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payments.new_payment') }}</span></a>
|
||||
<button class="btn btn-rounded" style="background-color: #03C03C; color: white;" type='submit' id="print_btn"> <i class="fa fa-print"></i> {{ __('payments.print_payments_voucher') }}</button>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table id="table" class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('payments.item') }}</th>
|
||||
<th>{{ __('payments.vendor') }}</th>
|
||||
<th>{{ __('payments.item_memo') }}</th>
|
||||
<th>{{ __('payments.quantity') }}</th>
|
||||
<th>{{ __('payments.unit_cost') }}</th>
|
||||
<th>{{ __('payments.amount') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$total = 0;
|
||||
@endphp
|
||||
|
||||
@foreach( $payment as $item)
|
||||
<tr>
|
||||
<td>{{ get_name($item->item_id, 'id', 'name', 'payment_items') }}</td>
|
||||
<td>{{ get_name($item->vendor, 'id', 'name', 'suppliers') }}</td>
|
||||
<td>{{ $item->item_memo }}</td>
|
||||
<td>{{ $item->quantity }}</td>
|
||||
<td>{{ ugandan_shillings($item->unit_cost) }}</td>
|
||||
<td>{{ ugandan_shillings($item->amount) }}</td>
|
||||
</tr>
|
||||
@php
|
||||
$total += $item->amount;
|
||||
@endphp
|
||||
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><strong>{{ __('payments.total') }}</strong></td>
|
||||
<td>{{ ugandan_shillings($total) }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<!-- Date Picker Plugin JavaScript -->
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'pdf', 'print'
|
||||
]
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
+505
@@ -0,0 +1,505 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/typeahead.js-master/dist/typehead-min.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.edit_payments') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.edit_payments') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
@include('flash::message')
|
||||
|
||||
{{ Form::model($trans_id ,['method' => 'PATCH', 'route' => ['payments.update_payments', $trans_id], 'data-toggle' => 'validator', 'data-confirm' => 'Are you sure you want to update these payments?']) }}
|
||||
{{ Form::hidden('trans_id', $trans_id) }}
|
||||
<div class="white-box" style="background-color: #F5FFFA">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="panel panel-default" id="payments_items">
|
||||
<div class="panel-heading">
|
||||
<div class="row">
|
||||
<div class="col text-left">
|
||||
{{ __('payments.items') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="span1"></div>
|
||||
<div class="col">
|
||||
<label class="control-label" for="item">{{ __('payments.payment_items') }}</label>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<label class="control-label" for="item">{{ __('payments.vendor_slash_supplier') }}</label>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<label class='control-label' class=''>{{ __('payments.quantity') }}</label>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<label class="control-label">{{ __('payments.amount') }}</label>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<label class='control-label' class=''>{{ __('payments.expense_account') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input_fields_wrap">
|
||||
@if(count($payments) > 0)
|
||||
@foreach($payments as $item)
|
||||
<div class="row">
|
||||
<div class="span1"></div>
|
||||
<div class='col'>
|
||||
<div class='form-group'>
|
||||
<div class='controls'>
|
||||
<select name="item_id[]" id="item_{{$item->id}}" class="form-control compulsory">
|
||||
{!! custom_dropdown_selected("payment_items", "id", "name", $item->item_id) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<div class='form-group'>
|
||||
<div class='controls'>
|
||||
<select name="supplier_id[]" id="supplier_id_{{$item->id}}" class="form-control compulsory">
|
||||
{!! custom_dropdown_selected("suppliers", "id", "name", $item->vendor) !!}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<div>
|
||||
<div class='form-group'>
|
||||
<input type="number" min="0" name="quantity[]" value="{{$item->quantity}}" id="quantity_{{$item->id}}" class="form-control compulsory qty">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<div class='form-group'>
|
||||
<div class='controls'>
|
||||
<input type="number" min="0" name="amount[]" id="amount_{{$item->id}}" class="form-control compulsory amt" value="{{$item->amount}}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<div>
|
||||
<div class='form-group'>
|
||||
@php $expense_acc_name = get_name($item->expense_account, 'id', 'name', 'chart_of_accounts'); @endphp
|
||||
<input type="hidden" name="expense_acc_id[]" id="expense_acc_id_{{$item->id}}" value="{{$item->expense_account}}">
|
||||
<input type="text" name="expense_acc_name[]" id="expense_acc_name_{{$item->id}}" class="form-control compulsory" readonly="true" value="{{$expense_acc_name}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
@php
|
||||
$option_items = "<option value=''>-select-</option>";
|
||||
foreach ($items as $item){
|
||||
$option_items .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
|
||||
$option_suppliers = "<option value=''>-select-</option>";
|
||||
foreach ($suppliers as $item){
|
||||
$option_suppliers .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
$option_suppliers .= "<option value='N/A'>N/A</option>";
|
||||
@endphp
|
||||
|
||||
<!-- Commented out till a required feature -->
|
||||
<!--
|
||||
<div class="col-sm-12">
|
||||
<a class="label label-success add_item pull-right" style="color: white; margin-left: 25px;">Add item</a>
|
||||
<br />
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endif
|
||||
</div><!-- Payment Items -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<table class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="8">{{ __('payments.payment') }}: #{{ $trans_id }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="2">{{ __('finance.account_to_pay_from') }}:</td>
|
||||
<td colspan="2">{{ __('finance.date_of_expense') }}:</td>
|
||||
<td colspan="2">{{ __('finance.current_account_balance') }}:</td>
|
||||
<td colspan="2">{{ __('finance.payment_items_total') }}:</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="form-group compulsory required">
|
||||
@php $bank_name = get_name($bank, 'id', 'name', 'chart_of_accounts') @endphp
|
||||
{{ Form::text('bank', $bank_name, ['class'=>'form-control compulsory', 'id'=>'bank', 'readonly']) }}
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
{{ Form::text('expense_date', \Carbon\Carbon::parse($expense_date)->format('d-m-Y'), ['class'=>'form-control required compulsory', 'id'=>'expense_date', 'readonly']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
<div class="form-group">
|
||||
{{ Form::text('account_balance', $bank_balance, ['class'=>'form-control compulsory', 'id'=>'account_balance', 'readonly']) }}
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
<div class="form-group-group">
|
||||
<div class="controls">
|
||||
<input type="number" name="total_amount" id="total_amount" class="form-control compulsory" readonly='true' value="{{$payments_total}}" />
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="8">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<br />
|
||||
<div class="form-group">
|
||||
{{ Form::textarea('memo', $memo, ['class'=>'form-control compulsory', 'placeholder'=>'Memo']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="form-group col-md-4 submit_btn" style="display: none">
|
||||
{{ Form::submit(__('payments.update_payment'), ['class'=>'btn btn-success', 'id'=>'update_payment']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/js/validator.js') }}"></script>
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
// disabled intentionally until it's a required feature
|
||||
// $('#expense_date').datepicker({
|
||||
// autoclose: true,
|
||||
// todayHighlight: true,
|
||||
// format: 'dd-mm-yyyy',
|
||||
// });
|
||||
|
||||
var x = parseInt("{!!json_encode($max_id) !!}"); //initial text box count
|
||||
var max_fields = x + 20; //maximum input boxes allowed
|
||||
var wrapper = $(".input_fields_wrap"); //Fields wrapper
|
||||
var add_button = $(".add_item"); //Add button ID
|
||||
|
||||
|
||||
$(add_button).click(function(e) { //on add input button click
|
||||
e.preventDefault();
|
||||
if (x < max_fields) { //max input box allowed
|
||||
x++; //text box increment
|
||||
$(wrapper).append("\
|
||||
<div class='row'>\n\
|
||||
<div class='span1'></div>\n\
|
||||
\n\
|
||||
<div class='col'>\n\
|
||||
<div class='form-group'>\n\
|
||||
<div class='controls'>\n\
|
||||
<select name='item_id[]' id='item_" + x + "' class='form-control compulsory'>\n\
|
||||
<?php echo $option_items; ?>\n\
|
||||
</select>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\n\
|
||||
<div class='col'>\n\
|
||||
<div class='form-group'>\n\
|
||||
<div class='controls'>\n\
|
||||
<select name='supplier_id[]' id='supplier_id_" + x + "' class='form-control compulsory'>\n\
|
||||
<?php echo $option_suppliers; ?>\n\
|
||||
</select>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\n\
|
||||
<div class='col'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='number' min=0 name='quantity[]' value=1 id ='quantity_" + x + "' class='form-control compulsory qty'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\n\
|
||||
<div class='col'>\n\
|
||||
<div class='form-group'>\n\
|
||||
<div class='controls'>\n\
|
||||
<input type='number' min=0 name='amount[]' value=0 id='amount_" + x + "' class='form-control compulsory amt' />\n\
|
||||
<br/>\n\
|
||||
<a href='#' class='remove_field label label-danger' style='margin-top:5px;'>delete</a>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\n\
|
||||
<div class='col'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='hidden' name='expense_acc_id[]' id ='expense_acc_id_" + x + "'>\n\
|
||||
<input type='text' name='expense_acc_name[]' id ='expense_acc_name_" + x + "' class='form-control compulsory' readonly='true'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
"); //add input box
|
||||
}
|
||||
});
|
||||
|
||||
$(wrapper).on("click", ".remove_field", function(e) { //user click on remove text
|
||||
e.preventDefault();
|
||||
$(this).parent('div').parent('div').parent('div').parent('div').remove();
|
||||
|
||||
var final_total = 0;
|
||||
var total_field = $("#total");
|
||||
|
||||
$("[id^='amount_']").each(function() {
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
total_field.val(final_total);
|
||||
x--;
|
||||
});
|
||||
|
||||
$(".input_fields_wrap").on('change', "select, .qty .amt", function() {
|
||||
|
||||
var id = parseInt(this.id.substr(this.id.indexOf("_") + 1));
|
||||
|
||||
var item_id = $("#item_" + id).val(); //console.log(item_id)
|
||||
var quantity = $("#quantity_" + id).val();
|
||||
var amount_field = $("#amount_" + id);
|
||||
var expense_acc_id = $("#expense_acc_id_" + id);
|
||||
var expense_acc_name = $("#expense_acc_name_" + id);
|
||||
var total_field = $("#total_amount");
|
||||
var final_total = 0;
|
||||
|
||||
if (item_id === "" || quantity === "") {
|
||||
alert("Item and quantity are required");
|
||||
amount_field.val("");
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/get_expense_acc',
|
||||
data: {
|
||||
'item_id': item_id
|
||||
},
|
||||
cache: false,
|
||||
success: function(result) {
|
||||
if (result[0] != null) {
|
||||
expense_acc_id.val(result[0].id);
|
||||
expense_acc_name.val(result[0].name);
|
||||
}
|
||||
},
|
||||
error: function(error) {
|
||||
//console.log(error);
|
||||
}
|
||||
});
|
||||
|
||||
var dataString = "item_id=" + item_id + "&quantity=" + quantity;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/total_price',
|
||||
data: dataString,
|
||||
cache: false,
|
||||
success: function(result) {
|
||||
//console.log(result)
|
||||
amount_field.val(result[0]);
|
||||
$("[id^='amount']").each(function() {
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
total_field.val(final_total);
|
||||
},
|
||||
error: function(error) {
|
||||
//console.log(error)
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$("#payments_items").focusout(function(e) {
|
||||
var total_amount = 0;
|
||||
$("[id^=amount]").each(function() {
|
||||
var auto_price = $(this).val();
|
||||
var auto_price_integer = parseInt(auto_price);
|
||||
total_amount += auto_price_integer;
|
||||
});
|
||||
if (total_amount === "NaN") {
|
||||
total_amount = 0;
|
||||
}
|
||||
$("#total_amount").val(total_amount);
|
||||
|
||||
// determine if submit_btn should display
|
||||
if (total_amount > 0) {
|
||||
$('.submit_btn').show();
|
||||
} else {
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('#expense_date').change(function() {
|
||||
var bank = $('#bank').val();
|
||||
var date = $(this).val();
|
||||
var date_parts = date.split("-");
|
||||
const dateExpense = new Date(date_parts[2] + '-' + date_parts[1] + '-' + date_parts[0] + 'T00:00:00'); // yyyy-mm-ddThh:mm:ss
|
||||
|
||||
var today = new Date();
|
||||
var dd = String(today.getDate()).padStart(2, '0');
|
||||
var mm = String(today.getMonth() + 1).padStart(2, '0'); // January is 0!
|
||||
var yyyy = today.getFullYear();
|
||||
var today_formatted = dd + '-' + mm + '-' + yyyy;
|
||||
|
||||
const diffTime = Math.abs(today - dateExpense); // milliseconds
|
||||
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); // div by milliseconds in a day
|
||||
|
||||
// Ask if they want to transact beyond 90 days!!!
|
||||
var proceed = true;
|
||||
if (diffDays > 90) {
|
||||
proceed = confirm('This transaction will be older than 90 days!!! Are you sure you want proceed with this payment?');
|
||||
}
|
||||
|
||||
var total_amount = $('#total_amount').val();
|
||||
var account_balance_input = $('#account_balance');
|
||||
|
||||
if (proceed == true) {
|
||||
if (bank !== '') {
|
||||
// Current Account Balance
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance_per_date',
|
||||
data: {
|
||||
'bank': bank,
|
||||
'date': today_formatted
|
||||
},
|
||||
async: true,
|
||||
success: function(response) {
|
||||
var bank_record = JSON.parse(response);
|
||||
var account_balance = bank_record['account_balance'];
|
||||
account_balance_input.val(account_balance);
|
||||
|
||||
if (account_balance <= 0) {
|
||||
alert('Account Balance is Zero(0) UGX');
|
||||
$('.submit_btn').hide();
|
||||
} else if (parseInt(total_amount) > account_balance) {
|
||||
alert('Your Account Balance is low');
|
||||
$('.submit_btn').hide();
|
||||
} else {
|
||||
$('.submit_btn').show();
|
||||
}
|
||||
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
alert('Please Select A Bank Account.');
|
||||
$(this).val('');
|
||||
}
|
||||
} else {
|
||||
$(this).val('');
|
||||
}
|
||||
});
|
||||
|
||||
function calculate_values() {
|
||||
let total_amount = 0;
|
||||
|
||||
// calculate total amount
|
||||
$('.amt').each(function() {
|
||||
total_amount += parseInt(this.value);
|
||||
});
|
||||
// console.log(total_amount);
|
||||
// show total amount to pay
|
||||
$('#total').val(total_amount);
|
||||
|
||||
}
|
||||
|
||||
function change_amt(qty) {
|
||||
let px = $('.amt').val();
|
||||
var total_unit_cost = qty * px;
|
||||
// console.log(total_unit_cost);
|
||||
$('#amt').val(total_unit_cost);
|
||||
}
|
||||
|
||||
// Prevent making payment if user opts out
|
||||
$(document).ready(function() {
|
||||
// Select the submit buttons of forms with data-confirm attribute
|
||||
var submit_buttons = $("form[data-confirm] input[type='submit']");
|
||||
|
||||
// On click of one of these submit buttons
|
||||
submit_buttons.on('click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var button = $(this);
|
||||
var form = button.closest('form'); // Get the related form
|
||||
var msg = form.data('confirm'); // Get the confirm message
|
||||
|
||||
if (confirm(msg)) form.submit();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
+391
@@ -0,0 +1,391 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
@endpush
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>Cash Expenses Report</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> Home</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> Finance Home</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> View Payments</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payments.menu')
|
||||
@include('flash::message')
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="panel">
|
||||
<div class="panel-body">
|
||||
|
||||
{{ Form::open(['method'=>'post','route' => 'payments.view_payments']) }}
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label>Expense By:</label>
|
||||
<select class="form-control compulsory required" name="staff_member" id="staff_member" required>
|
||||
<option value="">-select-</option>
|
||||
<option value="ALL STAFF">ALL STAFF</option>
|
||||
@foreach($staff_members as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->username }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label>Vendor:</label>
|
||||
<select class="form-control compulsory required" name="vendor" id="vendor" required>
|
||||
<option value="">-select-</option>
|
||||
<option value="ALL VENDORS">ALL VENDORS</option>
|
||||
@foreach($suppliers as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label>Select Date:</label>
|
||||
<select class="form-control compulsory required" name="dates" id="dates" required>
|
||||
<option value="">-select-</option>
|
||||
<option value="today">TODAY</option>
|
||||
<option value="yesterday">YESTERDAY</option>
|
||||
<option value="custom_date">CUSTOM DATE</option>
|
||||
<option value="custom_date_range">DATE RANGE</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div id="sDate" style="display: none;">
|
||||
<div class="form-group">
|
||||
{{ Form::label('start_date', 'Date On') }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('start_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'start_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div id="eDate" style="display: none;">
|
||||
<div class="form-group">
|
||||
{{ Form::label('end_date', 'End Date') }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('end_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'end_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-group" style="margin-top: 25px;">
|
||||
{{ Form::submit('Submit', ['class'=>'btn btn-success btn-rounded btn-block pull-right']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
<hr />
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@if(isset($display))
|
||||
<h3 class="label label-info label-rounded"> {!! isset($display) ? $display : '' !!}</h3>
|
||||
@endif
|
||||
<br />
|
||||
<div class="table-responsive">
|
||||
<br />
|
||||
<table id="table" class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Staff In-Charge</th>
|
||||
<th>Vendor</th>
|
||||
<th>Transcation ID</th>
|
||||
<th>Paid From Account</th>
|
||||
<th>Memo</th>
|
||||
<th>Payment Date</th>
|
||||
<th>Record Date</th>
|
||||
<th>Amount</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$count = 0;
|
||||
$total = 0;
|
||||
@endphp
|
||||
|
||||
@if($payments)
|
||||
@if(count($payments) > 0)
|
||||
@foreach( $payments as $item)
|
||||
@php
|
||||
$display_state = "";
|
||||
$hospital_bill_id = $item->bill_id;
|
||||
$hospital_bill = is_null($item->bill_id) ? null : \Streamline\Models\HospitalBill::withTrashed()->find($item->bill_id);
|
||||
if ($hospital_bill) {
|
||||
$hospital_bill_type = $hospital_bill->bill_type;
|
||||
$display_state = in_array($hospital_bill_type, ['DRU','SUN']) ? 'none' : '';
|
||||
}
|
||||
@endphp
|
||||
<tr style="display: {!! $display_state !!} ">
|
||||
<td>{{ $count + 1 }}</td>
|
||||
<td>{{ get_full_name($item->created_by, 'id', 'first_name', 'last_name', 'users') }}</td>
|
||||
<td>{{ get_name($item->vendor, 'id', 'name', 'suppliers') }}</td>
|
||||
<td>{{ $item->transaction_id }}</td>
|
||||
<td>{{ get_name($item->account_id, 'id', 'name', 'chart_of_accounts') }}</td>
|
||||
<td>{{ $item->memo }}</td>
|
||||
<td>{{ streamline_date($item->expense_date) }}</td>
|
||||
<td>{{ streamline_date_time_short($item->created_at) }}</td>
|
||||
<td>{{ ugandan_shillings($item->sum) }}</td>
|
||||
<td>
|
||||
@if($item->bill_id)
|
||||
<a class="btn btn-sm btn-rounded btn-primary" href="{{ route('payments.voucher', $item->bill_id) }}"><i class="fa fa-eye"></i> Detail</a>
|
||||
@else
|
||||
<a class="btn btn-primary btn-rounded btn-sm" href="{{ route('payments.payment_details', $item->transaction_id) }}" target="_blank"><i class="fa fa-eye"></i> Detail</a>
|
||||
@endif
|
||||
|
||||
@if(Auth::user()->can('edit-payment-record'))
|
||||
@if (is_payment_transaction_reconciled($item->id) == false)
|
||||
<a class="btn btn-sm btn-rounded btn-warning" href="{{ route('payments.payment_details_edit', $item->transaction_id) }}" target="_blank"><i class="fa fa-pencil"></i> {{ __('payments.edit') }}</a>
|
||||
@else
|
||||
<a data-toggle="modal" data-target="#reconciledBillModal" class="btn btn-sm btn-rounded btn-warning" style="font-size: 12px; background-color:#d5a767"><i class="fa fa-pencil"></i>{{ __('payments.edit') }}</a>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@if(Auth::user()->can('delete-payment-record'))
|
||||
@if (is_payment_transaction_reconciled($item->id) == false)
|
||||
<button class="btn btn-sm btn-rounded btn-danger" onclick="remove('{{ $item->transaction_id }}')"><i class="fa fa-trash"></i> {{ __('payments.delete') }}</button>
|
||||
@else
|
||||
<a data-toggle="modal" data-target="#reconciledBillModal" class="btn btn-sm btn-rounded btn-danger" style="font-size: 12px; background-color: rgb(219 162 174"><i class="fa fa-pencil"></i>{{ __('payments.delete') }}</a>
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@php
|
||||
if ($display_state != 'none') {
|
||||
$count ++;
|
||||
$total += $item->sum;
|
||||
}
|
||||
@endphp
|
||||
@endforeach
|
||||
@endif
|
||||
@endif
|
||||
|
||||
</tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><strong>Total</strong></td>
|
||||
<td>{{ ugandan_shillings($total) }}</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ Form::open(['method'=>'post','route' => 'payments.view_payments', 'id'=>'reload_payments']) }}
|
||||
{{ Form::hidden('staff_member', $request->staff_member) }}
|
||||
{{ Form::hidden('vendor', $request->vendor) }}
|
||||
{{ Form::hidden('dates', $request->dates) }}
|
||||
{{ Form::hidden('start_date', $request->start_date) }}
|
||||
{{ Form::hidden('end_date', $request->end_date) }}
|
||||
{{ Form::close() }}
|
||||
|
||||
<div class="modal fade" id="reconciledBillModal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<span class="label label-info">Please note</span>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12">
|
||||
<h3>{{ __('payments.payment_already_reconciled_message') }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">{{ __('payments.close') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<!-- Date Picker Plugin JavaScript -->
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('#dates').change(function(e) {
|
||||
|
||||
if ($(this).val() === "custom_date") {
|
||||
|
||||
$("#eDate").hide();
|
||||
$("#sDate").show();
|
||||
|
||||
} else if ($(this).val() === "custom_date_range") {
|
||||
|
||||
$("#sDate").show();
|
||||
$("#eDate").show();
|
||||
} else {
|
||||
|
||||
$("#eDate").hide();
|
||||
$("#sDate").hide();
|
||||
}
|
||||
});
|
||||
|
||||
function bank_deposit(cashier_income_id, amount) {
|
||||
$('#deposit_amount').val(amount);
|
||||
$('#cashier_income_id').val(cashier_income_id);
|
||||
$('#banking_modal').modal('show');
|
||||
}
|
||||
|
||||
$('#confirm_deposit').click(function() {
|
||||
|
||||
var cashier_income_id = $('#cashier_income_id').val();
|
||||
var deposit_amount = $('#deposit_amount').val();
|
||||
var deposit_account = $('#deposit_account').val();
|
||||
var deposit_date = $('#deposit_date').val();
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/quick_bank_deposit',
|
||||
data: {
|
||||
'cashier_income_id': cashier_income_id,
|
||||
'deposit_amount': deposit_amount,
|
||||
'deposit_account': deposit_account,
|
||||
'deposit_date': deposit_date,
|
||||
},
|
||||
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
$('#banking_modal').modal('hide');
|
||||
$('#bank_' + cashier_income_id).hide();
|
||||
$('#div_' + cashier_income_id).append("<label class='label label-success'>BANKED</label>");
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function get_acc_bal(bank_id) {
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance',
|
||||
data: {
|
||||
'bank_id': bank_id
|
||||
},
|
||||
|
||||
success: function(response) {
|
||||
var acc_bal = response[0].balance;
|
||||
var amount = $('#deposit_amount').val();
|
||||
$('#current_account_balance').val(acc_bal);
|
||||
$('#new_account_balance').val(acc_bal + parseInt(amount));
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function remove(trans_id) {
|
||||
var check = confirm('Are You Sure You Want To Delete ALL Payments For Transaction Id: ' + trans_id + '?');
|
||||
if (check) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/payments/delete_payments',
|
||||
data: {
|
||||
'trans_id': trans_id
|
||||
},
|
||||
success: function(result) {
|
||||
if (result != 'fail') {
|
||||
alert('All payments for Transaction Id: ' + trans_id + ' have been deleted successfully!');
|
||||
$('#reload_payments').submit();
|
||||
} else {
|
||||
alert('Failed to delete payments for Transaction Id: ' + trans_id)
|
||||
}
|
||||
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error)
|
||||
alert('Something Went Wrong, Please Contact Support.')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery('#end_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery('#start_date ,#deposit_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'pdf', 'print'
|
||||
],
|
||||
"aoColumnDefs": [{
|
||||
"aTargets": [2, 3],
|
||||
"defaultContent": "",
|
||||
}]
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('#staff_member, #vendor').select2({
|
||||
placeholder: "-select-"
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
+746
@@ -0,0 +1,746 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
<link href="{{ asset('elite/bower_components/typeahead.js-master/dist/typehead-min.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<style type="text/css">
|
||||
#discounts_table td {
|
||||
border-left: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
#paid_services_table td {
|
||||
border-left: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
#services_table td {
|
||||
border-left: 1px solid #dddddd;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.payments') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.new_payment') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payments.menu')
|
||||
|
||||
<div class="white-box">
|
||||
@include('flash::message')
|
||||
|
||||
{{ Form::open(['route' => 'payments.make_payment', 'data-toggle' => 'validator', 'data-confirm' => 'Are you sure you want proceed with this payment?']) }}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="panel panel-default" id="payments_items">
|
||||
<div class="panel-heading">
|
||||
<div class="row">
|
||||
<div class="col text-left">
|
||||
{{ __('payments.items') }}
|
||||
<a class="label label-success add_item" style="color: white; margin-left: 25px;">{{ __('payments.add_item') }}</a>
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
{{-- <a href="{{ route('payments.streamline_bill') }}" class="label label-success">Generate Stre@mline Bill</a>--}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="input_fields_wrap">
|
||||
<div class="row">
|
||||
<div class="span1"></div>
|
||||
<div class="col">
|
||||
<div class=" control-group">
|
||||
<label class="control-label" for="item">{{ __('payments.payment_items') }}</label>
|
||||
<div class="form-group">
|
||||
<select name='item_id[]' id='item_0' class="form-control item_id">
|
||||
<option>-select-</option>
|
||||
@foreach($items as $item)
|
||||
<option style='color: orange;' value='{{ $item->id }}'>{{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class=" control-group">
|
||||
<label class="control-label" for="item">{{ __('payments.vendor_slash_supplier') }}</label>
|
||||
<div class="form-group">
|
||||
<select name='supplier_id[]' id='supplier_id_0' class="form-control vendor_id">
|
||||
<option>-select-</option>
|
||||
@foreach($suppliers as $item)
|
||||
<option style='color: orange;' value='{{ $item->id }}'>{{ $item->name }}</option>
|
||||
@endforeach
|
||||
<option style='color: orange;' value="N/A">N/A</option>
|
||||
</select>
|
||||
<small><a href="#" data-toggle="modal" class="pull-right" onclick="show_add_supplier_modal(0)">{{ __('payments.add_vendor') }}</a></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@php
|
||||
$back_date = \Streamline\Models\HospitalInformation::first()->pluck('back_date');
|
||||
|
||||
$option_items = "<option value=''>-select-</option>";
|
||||
foreach ($items as $item){
|
||||
$option_items .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
|
||||
$option_suppliers = "<option value=''>-select-</option>";
|
||||
foreach ($suppliers as $item){
|
||||
$option_suppliers .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
$option_suppliers .= "<option value='N/A'>N/A</option>";
|
||||
|
||||
$option_expense_accounts = "<option value=''>-select-</option>";
|
||||
foreach ($expense_accounts as $exp_account){
|
||||
$option_expense_accounts .= "<option value='$exp_account->id'>$exp_account->name</option>";
|
||||
}
|
||||
@endphp
|
||||
|
||||
<div class='col'>
|
||||
<div class="form-group">
|
||||
<label class='control-label'>{{ __('payments.quantity') }}</label>
|
||||
<div>
|
||||
<input type='number' name='quantity[]' id='quantity_0' value="1" class='form-control compulsory qty'>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<label class="control-label">{{ __('payments.amount') }}</label>
|
||||
<div class="controls">
|
||||
<input type="number" name="amount[]" id="amount_0" class="compulsory form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<div class="form-group">
|
||||
<label class='control-label'>{{ __('payments.item_memo') }}</label>
|
||||
<div>
|
||||
<input type='text' name='item_memo[]' id='item_memo_0' value="" class='form-control item_memo'>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<div class="form-group">
|
||||
<label class='control-label'>{{ __('payments.expense_account') }}</label>
|
||||
<div>
|
||||
@if (Auth::user()->can('change-expense-account-on-make-payment'))
|
||||
@php $can_change_expense_account = 1; @endphp
|
||||
<select name='expense_acc_id[]' id='expense_acc_id_0' class="form-control compulsory expense_acc_id" required>
|
||||
<?php echo $option_expense_accounts; ?>
|
||||
</select>
|
||||
@else
|
||||
@php $can_change_expense_account = 0; @endphp
|
||||
<input type='text' name='expense_acc_name[]' id='expense_acc_name_0' class='form-control compulsory' readonly='true'>
|
||||
<input type='hidden' name='expense_acc_id[]' id='expense_acc_id_0'>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<table class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="8">{{ __('payments.payment') }}</th>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="2">{{ __('finance.account_to_pay_from') }}:</td>
|
||||
<td colspan="2">{{ __('finance.date_of_expense') }}:</td>
|
||||
<td colspan="2">{{ __('finance.current_account_balance') }}:</td>
|
||||
<td colspan="2">{{ __('finance.payment_items_total') }}:</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="form-group">
|
||||
<select class="form-control compulsory required select_items" name="bank" id="bank" required>
|
||||
<option value="">{{ __('finance.select') }}</option>
|
||||
@foreach($banks as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
<div class="form-group">
|
||||
{{ Form::text('expense_date', '', ['class'=>'form-control compulsory', 'id'=>'expense_date', 'readonly']) }}
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
<div class="form-group">
|
||||
{{ Form::text('account_balance', 0, ['class'=>'form-control compulsory', 'id'=>'account_balance', 'readonly']) }}
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
<div class="form-group-group">
|
||||
<div class="controls">
|
||||
<input type="number" name="total_amount" id="total_amount" class="form-control compulsory" readonly='true' />
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="8">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<br />
|
||||
<div class="form-group">
|
||||
{{ Form::textarea('memo', '', ['class'=>'form-control compulsory', 'placeholder'=>'Memo']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="form-group col-md-4 submit_btn" style="display: none">
|
||||
{{ Form::submit(__('payments.submit_payment'), ['class'=>'btn btn-success', 'id'=>'save_payment']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
|
||||
<div class="modal" id="add_new_vendor_modal" tabindex="-1" role="dialog" aria-labelledby="add_new_vendor_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12 text-left">
|
||||
<h4>Add New Vendor</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_name', 'Vendor Name') }}
|
||||
{{ Form::text('supplier_name', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_name']) }}
|
||||
</div>
|
||||
|
||||
<input id="input_id" type="hidden">
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_company', 'Company') }}
|
||||
{{ Form::text('supplier_company', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_company']) }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_contact', 'Mobile Number') }}
|
||||
{{ Form::text('supplier_contact', '', ['class'=>'form-control compulsory', 'data-mask'=>"0799 999 999", 'required','id'=>'supplier_contact']) }}
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('supplier_address', 'Address') }}
|
||||
{{ Form::text('supplier_address', '', ['class'=>'form-control compulsory', 'required','id'=>'supplier_address']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-success" data-dismiss="modal" onclick="save_supplier()">Save changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/js/validator.js') }}"></script>
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
function show_add_supplier_modal(id) {
|
||||
$('#input_id').val(id);
|
||||
$('#add_new_vendor_modal').modal('show');
|
||||
}
|
||||
|
||||
function save_supplier() {
|
||||
|
||||
let row_id = $('#input_id').val();
|
||||
var supplier_name = $('#supplier_name').val();
|
||||
var supplier_company = $('#supplier_company').val();
|
||||
var supplier_contact = $('#supplier_contact').val();
|
||||
var supplier_address = $('#supplier_address').val();
|
||||
|
||||
let has_errors = false;
|
||||
let error_messages = "";
|
||||
|
||||
if (supplier_name === '') {
|
||||
error_messages += "Please fill in the supplier's name\n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if (supplier_company === '') {
|
||||
error_messages += "Please fill in the supplier's company \n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if (supplier_contact === '') {
|
||||
error_messages += "Please fill in the supplier's contact \n";
|
||||
has_errors = true;
|
||||
}
|
||||
|
||||
if (supplier_address === '') {
|
||||
error_messages += "Please fill in the supplier's address \n";
|
||||
has_errors = true;
|
||||
}
|
||||
if (has_errors) {
|
||||
alert(error_messages);
|
||||
} else {
|
||||
$.ajax({
|
||||
url: '/save_new_supplier',
|
||||
type: 'get',
|
||||
data: {
|
||||
supplier_name: supplier_name,
|
||||
supplier_company: supplier_company,
|
||||
supplier_contact: supplier_contact,
|
||||
supplier_address: supplier_address
|
||||
},
|
||||
success: function(response) {
|
||||
//response = last inserted id
|
||||
$('#supplier_id_' + row_id).append($('<option>', {
|
||||
value: response,
|
||||
text: supplier_name
|
||||
}));
|
||||
$('#supplier_id_' + row_id).val(response); //preselect the newly added referral
|
||||
alert('new supplier has been added');
|
||||
},
|
||||
error: function(response) {
|
||||
// console.log('there was an error');
|
||||
alert('There was an error, Contact IT.')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$('#saveNewSupplier').click(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
let min_days = <?php echo $back_date[0]; ?>;
|
||||
let can_change_exp_account = <?php echo $can_change_expense_account; ?>;
|
||||
//console.log("can change account =="+can_change_exp_account);
|
||||
var min_date = new Date();
|
||||
min_date.setDate(min_date.getDate()-min_days);
|
||||
$('#expense_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
endDate: new Date(),
|
||||
startDate: min_date,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
|
||||
var max_fields = 20; //maximum input boxes allowed
|
||||
var wrapper = $(".input_fields_wrap"); //Fields wrapper
|
||||
var add_button = $(".add_item"); //Add button ID
|
||||
|
||||
var x = 1; //initlal text box count
|
||||
|
||||
$(add_button).click(function(e) { //on add input button click
|
||||
e.preventDefault();
|
||||
|
||||
if (x < max_fields) { //max input box allowed
|
||||
x++; //text box increment
|
||||
|
||||
let expense_acc_options = "<input type='hidden' name='expense_acc_id[]' id ='expense_acc_id_" + x + "'><input type='text' name='expense_acc_name[]' id ='expense_acc_name_" + x + "' class='form-control compulsory' readonly='true'>";
|
||||
|
||||
if(can_change_exp_account == 1){
|
||||
expense_acc_options = "<select name='expense_acc_id[]' id='expense_acc_id_" + x + "' class='form-control compulsory expense_acc_id_" + x + "' required>" +
|
||||
"<?php echo $option_expense_accounts; ?>" +
|
||||
"</select>";
|
||||
}
|
||||
|
||||
$(wrapper).append("\
|
||||
<div class='row'>\n\
|
||||
<div class='span1'></div>\n\
|
||||
<div class='col'>\n\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<select name='item_id[]' id='item_" + x + "' class='form-control compulsory'>" +
|
||||
|
||||
"<?php echo $option_items; ?>" +
|
||||
|
||||
"</select>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
\<div class='col'>\n\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<select name='supplier_id[]' id='supplier_id_" + x + "' class='form-control compulsory'>" +
|
||||
|
||||
"<?php echo $option_suppliers; ?>" +
|
||||
|
||||
"</select>\n\
|
||||
</div>\n\
|
||||
<small><a href='#' data-toggle='modal' class='pull-right' onclick='show_add_supplier_modal(" + x + ")'>add vendor</a></small>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>" +
|
||||
"<input type='number' name='quantity[]' value='1' id ='quantity_" + x + "' class='form-control compulsory qty'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col'>\n\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<input type='number' name='amount[]' id='amount_" + x + "' class='form-control compulsory' />" +
|
||||
"<br/>" +
|
||||
" <a href='#' class='remove_field label label-danger' style='margin-top:5px;'>delete</a>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>" +
|
||||
"<input type='text' name='item_memo[]' value='' id ='item_memo_" + x + "' class='form-control item_memo'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>\n\
|
||||
"+expense_acc_options+"'\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
"); //add input box
|
||||
}
|
||||
generalSelect2Set('item_'+x);
|
||||
generalSelect2Set('supplier_id_'+x);
|
||||
genSelect2Set('expense_acc_id_'+x);
|
||||
|
||||
$('.select2-selection.select2-selection--single').css('border-left', '3px solid #F08080');/*add compulsory class*/
|
||||
$('.select2-selection.select2-selection--single.sec_d').css('border-left', '3px solid #aaa');
|
||||
$('.select2-selection__arrow').css('top','3px');
|
||||
//$('.select2-selection.select2-selection--single').css('height','calc(3.85rem)');
|
||||
});
|
||||
|
||||
$(wrapper).on("click", ".remove_field", function(e) { //user click on remove text
|
||||
e.preventDefault();
|
||||
$(this).parent('div').parent('div').parent('div').parent('div').remove();
|
||||
|
||||
let final_total = 0;
|
||||
|
||||
$("[id^='amount_']").each(function() {
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
|
||||
$("#total_amount").val(final_total);
|
||||
x--;
|
||||
});
|
||||
|
||||
$(".input_fields_wrap").on('change', "select, .qty", function() {
|
||||
|
||||
var id = parseInt(this.id.substr(this.id.indexOf("_") + 1));
|
||||
|
||||
var item_id = $("#item_" + id).val(); //console.log(item_id)
|
||||
var quantity = $("#quantity_" + id).val();
|
||||
var amount_field = $("#amount_" + id);
|
||||
var expense_acc_id = $("#expense_acc_id_" + id);
|
||||
var expense_acc_name = $("#expense_acc_name_" + id);
|
||||
var total_field = $("#total_amount");
|
||||
var final_total = 0;
|
||||
|
||||
if (item_id === "" || quantity === "") {
|
||||
alert("Item and quantity are required");
|
||||
amount_field.val("");
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "get_expense_acc",
|
||||
data: {
|
||||
'item_id': item_id
|
||||
},
|
||||
cache: false,
|
||||
success: function(result) {
|
||||
if (result[0] != null) {
|
||||
expense_acc_id.val(result[0].id);
|
||||
expense_acc_name.val(result[0].name);
|
||||
}
|
||||
// if (result[1] != null) {
|
||||
// payable_acc_id.val(result[1].id);
|
||||
// payable_acc_name.val(result[1].name);
|
||||
// }
|
||||
// console.log(result);
|
||||
},
|
||||
error: function(error) {
|
||||
//console.log(error);
|
||||
}
|
||||
});
|
||||
|
||||
var dataString = "item_id=" + item_id + "&quantity=" + quantity;
|
||||
// console.log(dataString);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "total_price",
|
||||
data: dataString,
|
||||
cache: false,
|
||||
success: function(result) {
|
||||
|
||||
amount_field.val(result[0]); //console.log(result)
|
||||
$("[id^='amount']").each(function() {
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
total_field.val(final_total);
|
||||
},
|
||||
error: function(error) {
|
||||
//console.log(error)
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#payments_items").focusout(function(e) {
|
||||
var total_amount = 0;
|
||||
$("[id^=amount]").each(function() {
|
||||
var auto_price = $(this).val();
|
||||
var auto_price_integer = parseInt(auto_price);
|
||||
total_amount += auto_price_integer;
|
||||
});
|
||||
if (total_amount === "NaN") {
|
||||
total_amount = 0;
|
||||
}
|
||||
$("#total_amount").val(total_amount);
|
||||
});
|
||||
|
||||
$('#expense_date').change(function() {
|
||||
var bank = $('#bank').val();
|
||||
var is_payment_of_greater_expense_allowed = <?php echo is_payment_of_greater_expense_allowed(); ?>;
|
||||
var date = $(this).val();
|
||||
var date_parts = date.split("-");
|
||||
const dateExpense = new Date(date_parts[2] + '-' + date_parts[1] + '-' + date_parts[0] + 'T00:00:00'); // yyyy-mm-ddThh:mm:ss
|
||||
|
||||
var today = new Date();
|
||||
var dd = String(today.getDate()).padStart(2, '0');
|
||||
var mm = String(today.getMonth() + 1).padStart(2, '0'); // January is 0!
|
||||
var yyyy = today.getFullYear();
|
||||
var today_formatted = dd + '-' + mm + '-' + yyyy;
|
||||
|
||||
const diffTime = Math.abs(today - dateExpense); // milliseconds
|
||||
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); // div by milliseconds in a day
|
||||
|
||||
// Ask if they want to transact beyond 90 days!!!
|
||||
var proceed = true;
|
||||
if (diffDays > 90) {
|
||||
proceed = confirm('This transaction will be older than 90 days!!! Are you sure you want proceed with this payment?');
|
||||
}
|
||||
|
||||
var total_amount = $('#total_amount').val();
|
||||
var account_balance_input = $('#account_balance');
|
||||
|
||||
if (proceed == true) {
|
||||
if (bank !== '') {
|
||||
// Current Account Balance
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance_per_date',
|
||||
data: {
|
||||
'bank': bank,
|
||||
'date': today_formatted
|
||||
},
|
||||
async: true,
|
||||
success: function(response) {
|
||||
var bank_record = JSON.parse(response);
|
||||
var account_balance = bank_record['account_balance'];
|
||||
account_balance_input.val(account_balance);
|
||||
|
||||
if (account_balance <= 0) {
|
||||
alert('Account Balance is Zero(0) UGX');
|
||||
if (is_payment_of_greater_expense_allowed === 1) {
|
||||
$('.submit_btn').show();
|
||||
} else{
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
} else if (parseInt(total_amount) > account_balance) {
|
||||
alert('Your Account Balance is low');
|
||||
if (is_payment_of_greater_expense_allowed === 1) {
|
||||
$('.submit_btn').show();
|
||||
} else{
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
} else {
|
||||
$('.submit_btn').show();
|
||||
}
|
||||
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
alert('Please Select A Bank Account.');
|
||||
$(this).val('');
|
||||
}
|
||||
} else {
|
||||
$(this).val('');
|
||||
}
|
||||
});
|
||||
|
||||
$('#bank').change(function() {
|
||||
var bank = $('#bank').val();
|
||||
var total_amount = $('#total_amount').val();
|
||||
var account_balance_input = $('#account_balance');
|
||||
var expense_date = $('#expense_date').val();
|
||||
console.log("expense date == "+expense_date);
|
||||
var is_payment_of_greater_expense_allowed = <?php echo is_payment_of_greater_expense_allowed(); ?>;
|
||||
var today = new Date();
|
||||
var dd = String(today.getDate()).padStart(2, '0');
|
||||
var mm = String(today.getMonth() + 1).padStart(2, '0'); // January is 0!
|
||||
var yyyy = today.getFullYear();
|
||||
var today_formatted = dd + '-' + mm + '-' + yyyy;
|
||||
|
||||
if (bank !== '') {
|
||||
// Current Account Balance
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance_per_date',
|
||||
data: {
|
||||
'bank': bank,
|
||||
'date': today_formatted
|
||||
},
|
||||
async: true,
|
||||
success: function(response) {
|
||||
var bank_record = JSON.parse(response);
|
||||
var account_balance = bank_record['account_balance'];
|
||||
account_balance_input.val(account_balance);
|
||||
|
||||
if (account_balance <= 0) {
|
||||
alert('Account Balance is Zero(0) UGX');
|
||||
if (is_payment_of_greater_expense_allowed === 1 && expense_date != '') {
|
||||
$('.submit_btn').show();
|
||||
} else{
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
} else if (parseInt(total_amount) > account_balance) {
|
||||
alert('Your Account Balance is low');
|
||||
if (is_payment_of_greater_expense_allowed === 1 && expense_date != '') {
|
||||
$('.submit_btn').show();
|
||||
} else{
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
} else {
|
||||
if (expense_date != '') {
|
||||
$('.submit_btn').show();
|
||||
} else {
|
||||
$('.submit_btn').hide();
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
error: function(error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
alert('Please Select A Bank Account.');
|
||||
$(this).val('');
|
||||
}
|
||||
});
|
||||
|
||||
function calculate_values() {
|
||||
let total_amount = 0;
|
||||
|
||||
// calculate total amount
|
||||
$('.amt').each(function() {
|
||||
total_amount += parseInt(this.value);
|
||||
});
|
||||
// console.log(total_amount);
|
||||
// show total amount to pay
|
||||
$('#total').val(total_amount);
|
||||
|
||||
}
|
||||
|
||||
function change_amt(qty) {
|
||||
let px = $('.amt').val();
|
||||
var total_unit_cost = qty * px;
|
||||
// console.log(total_unit_cost);
|
||||
$('#amt').val(total_unit_cost);
|
||||
}
|
||||
|
||||
function generalSelect2Set(id) {
|
||||
$('#'+id).select2({
|
||||
//width: "100%"
|
||||
});
|
||||
}
|
||||
|
||||
function genSelect2Set(expe){
|
||||
$('.'+expe).select2({
|
||||
//width: "100%"
|
||||
});
|
||||
}
|
||||
|
||||
// Prevent making payment if user opts out
|
||||
$(document).ready(function() {
|
||||
// Select the submit buttons of forms with data-confirm attribute
|
||||
var submit_buttons = $("form[data-confirm] input[type='submit']");
|
||||
|
||||
// On click of one of these submit buttons
|
||||
submit_buttons.on('click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var button = $(this);
|
||||
var form = button.closest('form'); // Get the related form
|
||||
var msg = form.data('confirm'); // Get the confirm message
|
||||
|
||||
if (confirm(msg)) form.submit();
|
||||
});
|
||||
|
||||
$('.item_id, .vendor_id, .expense_acc_id, #bank').select2({
|
||||
//width: "100%"
|
||||
});
|
||||
|
||||
$('.select2-selection.select2-selection--single').css('border-left', '3px solid #F08080');/*add compulsory class*/
|
||||
$('.select2-selection.select2-selection--single.sec_d').css('border-left', '3px solid #aaa');
|
||||
$('.select2-selection__arrow').css('top','3px');
|
||||
$('.select2-selection.select2-selection--single').css('height','calc(3.85rem)');
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
Executable
+255
@@ -0,0 +1,255 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
|
||||
<h4 class="page-title">{{ __('payments.create_inventory_bill') }}</h4>
|
||||
</div>
|
||||
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li><a href="{{ route('invoices') }}"><i class="fa fa-file"></i> {{ __('payments.invoices_home') }}</a></li>
|
||||
<li class="active">{{ __('payments.generate_invoice') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payments.menu')
|
||||
@include('flash::message')
|
||||
|
||||
<div class="white-box">
|
||||
|
||||
{{ Form::open(['method'=>'post','route' => 'payments.bills.inventory.save']) }}
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.vendor') }}:</label>
|
||||
<div class="input-group">
|
||||
{{ Form::text('vendor_name', get_name($quotation->supplier_id, 'id', 'name', 'suppliers'), ['class'=>'form-control required compulsory', 'readonly']) }}
|
||||
{{ Form::hidden('vendor', $quotation->supplier_id) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="sDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('start_date', __('payments.bill_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('bill_date', '', ['class'=>'form-control required compulsory', 'readonly','required', 'id'=>'bill_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="eDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('end_date', __('payments.bill_due_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('bill_due_date', '', ['class'=>'form-control required compulsory', 'readonly','required', 'id'=>'bill_due_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div id="eDate">
|
||||
<div class="form-group">
|
||||
{{ Form::label('bill_number', __('payments.bill_number')) }}
|
||||
{{ Form::text('bill_number', '', ['class'=>'form-control required compulsory','required', 'id'=>'bill_number']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table color-bordered-table success-bordered-table table-striped table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('payments.item_name') }}</th>
|
||||
<th>{{ __('payments.approved_quantity') }}</th>
|
||||
<th>{{ __('payments.approved_bill_per_item') }}</th>
|
||||
<th>{{ __('payments.approved_cost') }}</th>
|
||||
<th>{{ __('payments.received_quantity') }}</th>
|
||||
<th>{{ __('payments.received_bill_per_item') }}</th>
|
||||
<th>{{ __('payments.received_cost') }}</th>
|
||||
{{-- <th>Chart Of Account</th>--}}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$total_amount = 0;
|
||||
$approved_amount =0;
|
||||
@endphp
|
||||
@foreach($quotations as $result)
|
||||
|
||||
<input type='hidden' name="quotation_number" value="{{ $result->quotation_number }}">
|
||||
<input type='hidden' name="quotation_type_id" value="{{ $result->quotation_type_id }}">
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
@if($result->quotation_type_id == 1)
|
||||
<input type='hidden' name="item_id[]" value="{{ $result->drug_id }}">
|
||||
|
||||
{{ get_name($result->drug_id, 'id', 'name', 'drugs') }}
|
||||
@elseif($result->quotation_type_id == 2)
|
||||
<input type='hidden' name="item_id[]" value="{{ $result->drug_id }}">
|
||||
|
||||
{{ get_name($result->drug_id, 'id', 'name', 'sundries') }}
|
||||
@elseif($result->quotation_type_id == 3)
|
||||
<input type='hidden' name="item_id[]" value="{{ $result->drug_id }}">
|
||||
|
||||
{{ get_name($result->drug_id, 'id', 'name', 'dentals') }}
|
||||
@elseif($result->quotation_type_id == 4)
|
||||
<input type='hidden' name="item_id[]" value="{{ $result->drug_id }}">
|
||||
|
||||
{{ get_name($result->drug_id, 'id', 'name', 'radiologies') }}
|
||||
@elseif($result->quotation_type_id == 5)
|
||||
<input type='hidden' name="item_id[]" value="{{ $result->drug_id }}">
|
||||
|
||||
{{ get_name($result->drug_id, 'id', 'name', 'labs') }}
|
||||
@elseif($result->quotation_type_id == 6)
|
||||
<input type='hidden' name="item_id[]" value="{{ $result->drug_id }}">
|
||||
|
||||
{{ get_name($result->drug_id, 'id', 'name', 'general_items') }}
|
||||
@elseif($result->quotation_type_id == 7)
|
||||
<input type='hidden' name="item_id[]" value="{{ $result->drug_id }}">
|
||||
|
||||
{{ get_name($result->drug_id, 'id', 'name', 'eye_glasses') }}
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<input class="form-control" readonly name="approved_quantity[]" value="{{ $result->quantity }}">
|
||||
</td>
|
||||
<td>
|
||||
<input class="form-control" readonly name="approved_unit_cost[]" value="{{ ($result->bill) }}">
|
||||
</td>
|
||||
<td>
|
||||
<input class="form-control" readonly name="approved_amount[]" value="{{ ($result->bill * $result->quantity ) }}">
|
||||
</td>
|
||||
<td>
|
||||
<input class="form-control" readonly name="quantity[]" value="{{ $result->receive_quantity }}">
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<input class="form-control" readonly name="unit_cost[]" value="{{ ($result->receive_bill) }}">
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@php
|
||||
$total = $result->total_price;
|
||||
$total_amount += $total;
|
||||
$approved_amount += ($result->bill * $result->quantity);
|
||||
@endphp
|
||||
<input class="form-control" readonly name="amount[]" value="{{ ($total) }}">
|
||||
@if($result->quotation_type_id != 6)
|
||||
<input type="hidden" name="expense_acc_id[]" value="{{ 14 }}">
|
||||
@else
|
||||
<input type="hidden" name="expense_acc_id[]" value="{{ get_name($result->drug_id, 'id', 'expenses_account_id', 'general_items') }}">
|
||||
@endif
|
||||
</td>
|
||||
{{-- <td>--}}
|
||||
{{-- <select class="form-control compulsory" required name="expense_acc_id[]">--}}
|
||||
{{-- <option value="{{ 14 }}">{{ get_name(14, 'id', 'name', 'chart_of_accounts') }}</option>--}}
|
||||
{{-- </select>--}}
|
||||
{{-- </td>--}}
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.bill_memo') }}</label>
|
||||
<textarea rows="7" class="form-control compulsory" name="bill_memo"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group-group">
|
||||
<label>{{ __('payments.approved_total_amount') }}</label>
|
||||
<div class="controls">
|
||||
<input type="text" name="total_amount" value="{{ $approved_amount }}" id="total_amount" class="form-control compulsory" readonly='true'/>
|
||||
</div>
|
||||
</div><br/>
|
||||
<div class="form-group-group">
|
||||
<label>{{ __('payments.total_amount') }}</label>
|
||||
<div class="controls">
|
||||
<input type="text" name="total_amount" value="{{ $total_amount }}" id="total_amount" class="form-control compulsory" readonly='true'/>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<p><b>{{ __('payments.quotation_approved_by') }}: </b> {{ get_full_name($quotations[0]->approval_user, 'id', 'first_name', 'last_name', 'users') }}</p>
|
||||
<p><b>{{ __('payments.quotation_received_by') }}: </b> {{ get_full_name($quotations[0]->receive_user, 'id', 'first_name', 'last_name', 'users') }}</p>
|
||||
<p><b>{{ __('payments.items_received_on') }}: </b> {{ streamline_date($quotations[0]->receive_date) }}</p>
|
||||
</div>
|
||||
<div class="col-md-6 pull-right">
|
||||
<button class="btn btn-rounded btn-primary pull-right">{{ __('payments.save_bill') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery('#end_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery('#bill_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
$('#bill_due_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
startDate: new Date(),
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('#staff_member, #vendor').select2({
|
||||
placeholder: "-select-"
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
Executable
+311
@@ -0,0 +1,311 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
@endpush
|
||||
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.create_bill_received_inventory') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
{{-- <li><a href="{{ route('invoices') }}"><i class="fa fa-file"></i> {{ __('payments.invoices_home') }}</a></li> --}}
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.view_payments') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('expenses::payments.menu')
|
||||
@include('flash::message')
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="panel">
|
||||
<div class="panel-body">
|
||||
|
||||
{{ Form::open(['method'=>'post','route' => 'payments.bills.inventory']) }}
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.generated_by') }}:</label>
|
||||
<select class="form-control compulsory required" name="staff_member" id="staff_member" required>
|
||||
<option value="">-select-</option>
|
||||
<option value="ALL STAFF">ALL STAFF</option>
|
||||
@foreach($staff_members as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->username }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.vendor') }}:</label>
|
||||
<select class="form-control compulsory required" name="vendor" id="vendor" required>
|
||||
<option value="">-select-</option>
|
||||
<option value="ALL VENDORS">{{ __('payments.all_vendors') }}</option>
|
||||
@foreach($suppliers as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.select_date') }}:</label>
|
||||
<select class="form-control compulsory required" name="dates" id="dates" required>
|
||||
<option value="">-select-</option>
|
||||
<option value="today">TODAY</option>
|
||||
<option value="yesterday">YESTERDAY</option>
|
||||
<option value="custom_date">CUSTOM DATE</option>
|
||||
<option value="custom_date_range">DATE RANGE</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div id="sDate" style="display: none;">
|
||||
<div class="form-group">
|
||||
{{ Form::label('start_date', __('payments.date_on')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('start_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'start_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div id="eDate" style="display: none;">
|
||||
<div class="form-group">
|
||||
{{ Form::label('end_date', __('payments.end_date')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('end_date', '', ['class'=>'form-control required compulsory', 'readonly', 'id'=>'end_date']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-group" style="margin-top: 25px;">
|
||||
{{ Form::submit(__('payments.submit'), ['class'=>'btn btn-success btn-rounded btn-block pull-right']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
<hr/>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@if(isset($display))
|
||||
<h3 class="label label-info label-rounded"> {!! isset($display) ? $display : '' !!}</h3>
|
||||
@endif
|
||||
<br/>
|
||||
<div class="table-responsive">
|
||||
<br/>
|
||||
<table class="table color-bordered-table success-bordered-table table-striped table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('payments.item_type') }}</th>
|
||||
<th>{{ __('payments.quantity') }}</th>
|
||||
<th>{{ __('payments.cost') }}</th>
|
||||
<th>{{ __('payments.supplier') }}</th>
|
||||
<th>{{ __('payments.approved_by') }}</th>
|
||||
<th>{{ __('payments.received_on') }}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if(count($quotations) > 0)
|
||||
@foreach($quotations as $result)
|
||||
<tr>
|
||||
<td>
|
||||
{{ get_name($result->quotation_type_id, 'id', 'name', 'quotation_types') }}
|
||||
</td>
|
||||
<td>
|
||||
@php
|
||||
$results_to_count = [];
|
||||
$quotation_number = $result->quotation_number;
|
||||
if ($quotation_number) {
|
||||
$results_to_count = DB::select("select drug_id from quotations where quotation_number = {$quotation_number} AND deleted_at IS NULL");
|
||||
}
|
||||
@endphp
|
||||
{{ count($results_to_count) }} {{ __('payments.items') }}
|
||||
</td>
|
||||
<td>
|
||||
@php
|
||||
$quote_total = 0;
|
||||
$quotation_number = $result->quotation_number;
|
||||
if ($quotation_number) {
|
||||
$total_amount = DB::select("select SUM(total_price) as total from quotations where quotation_number = {$quotation_number} AND deleted_at IS NULL");
|
||||
$quote_total = $total_amount[0]->total;
|
||||
}
|
||||
@endphp
|
||||
{{ ugandan_shillings($quote_total) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ get_name(get_name($result->quotation_number, "quotation_number", "supplier_id", 'quotations'), "id", "name", "suppliers") }}
|
||||
</td>
|
||||
<td>
|
||||
@php
|
||||
$user_id = get_name($result->quotation_number, "quotation_number", "approval_user", 'quotations');
|
||||
@endphp
|
||||
{{ get_full_name($user_id, "id", "first_name", "last_name", "users") }}
|
||||
</td>
|
||||
<td>
|
||||
{{ streamline_date(get_name($result->quotation_number, "quotation_number", "receive_date", 'quotations')) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ Form::open(['method'=>'post','route'=>'payments.bills.inventory.create' ]) }}
|
||||
{{ Form::hidden('quotation_number', $result->quotation_number) }}
|
||||
<button class="btn btn-primary btn-rounded btn-sm">
|
||||
<i class="fa fa-info-circle"></i>
|
||||
<span style="margin-left: 10px;">{{ __('payments.details') }}</span>
|
||||
</button>
|
||||
{{ Form::close() }}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<!-- Date Picker Plugin JavaScript -->
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
|
||||
$('#dates').change(function (e) {
|
||||
|
||||
if($(this).val() === "custom_date"){
|
||||
|
||||
$("#eDate").hide();
|
||||
$("#sDate").show();
|
||||
|
||||
}else if($(this).val() === "custom_date_range"){
|
||||
|
||||
$("#sDate").show();
|
||||
$("#eDate").show();
|
||||
}else{
|
||||
|
||||
$("#eDate").hide();
|
||||
$("#sDate").hide();
|
||||
}
|
||||
});
|
||||
|
||||
function bank_deposit(cashier_income_id, amount) {
|
||||
$('#deposit_amount').val(amount);
|
||||
$('#cashier_income_id').val(cashier_income_id);
|
||||
$('#banking_modal').modal('show');
|
||||
}
|
||||
|
||||
$('#confirm_deposit').click(function () {
|
||||
|
||||
var cashier_income_id = $('#cashier_income_id').val();
|
||||
var deposit_amount = $('#deposit_amount').val();
|
||||
var deposit_account = $('#deposit_account').val();
|
||||
var deposit_date = $('#deposit_date').val();
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/quick_bank_deposit',
|
||||
data: {
|
||||
'cashier_income_id' : cashier_income_id,
|
||||
'deposit_amount' : deposit_amount,
|
||||
'deposit_account' : deposit_account,
|
||||
'deposit_date' : deposit_date,
|
||||
},
|
||||
|
||||
success: function(response){
|
||||
console.log(response);
|
||||
$('#banking_modal').modal('hide');
|
||||
$('#bank_' + cashier_income_id).hide();
|
||||
$('#div_' + cashier_income_id).append("<label class='label label-success'>BANKED</label>");
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function get_acc_bal(bank_id) {
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/banking/get_current_account_balance',
|
||||
data: {'bank_id' : bank_id},
|
||||
|
||||
success: function(response){
|
||||
var acc_bal = response[0].balance;
|
||||
var amount = $('#deposit_amount').val();
|
||||
$('#current_account_balance').val(acc_bal);
|
||||
$('#new_account_balance').val(acc_bal + parseInt(amount));
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery('#end_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery('#start_date ,#deposit_date').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy'
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'copy', 'csv', 'excel', 'pdf', 'print'
|
||||
],
|
||||
"aoColumnDefs": [{
|
||||
"aTargets": [2,3],
|
||||
"defaultContent": "",
|
||||
}]
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
$('#staff_member, #vendor').select2({
|
||||
placeholder: "-select-"
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<a href="{{ route('payments.new_payment') }}" class="nav-item btn btn-success" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payments.new_payment') }}</span></a>
|
||||
<a href="{{ route('payments.create_bills') }}" class="nav-item btn btn-success" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payments.create_or_register_bill') }}</span></a>
|
||||
<a href="{{ route('payments.bills.inventory') }}" class="nav-item btn btn-success" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payments.received_inventory_bills') }}</span></a>
|
||||
<a href="{{ route('payments.bills') }}" class="nav-item btn btn-success" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payments.bills') }}</span></a>
|
||||
<a href="{{ route('payments.view_payments') }}" class="nav-item btn btn-success" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payments.expenses_report') }}</span></a>
|
||||
<a href="{{ route('payments.bills.inactive') }}" class="nav-item btn btn-danger" style="border-radius: 5px;"><i class="fa fa-plus"></i> <span style="margin-left: 5px">{{ __('payments.inactive_bills') }}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+574
@@ -0,0 +1,574 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/typeahead.js-master/dist/typehead-min.css') }}" rel="stylesheet">
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<style type="text/css">
|
||||
#discounts_table td{
|
||||
border-left: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
#paid_services_table td{
|
||||
border-left: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
#services_table td{
|
||||
border-left: 1px solid #dddddd;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.make_payment') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.make_payment') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-10 offset-1">
|
||||
|
||||
@include('flash::message')
|
||||
|
||||
<div class="white-box" style="background-color: #F5FFFA">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="pull-left">
|
||||
<address>
|
||||
<h3> <b class="text-danger">{{ $hospital_information->name }}</b></h3>
|
||||
<p class="text-muted m-l-5">{{ $hospital_information->phone_number }}, {{ $hospital_information->email }},
|
||||
<br/> {{ get_name($hospital_information->sub_county,'id', 'name', 'subcounties') }}, {{ get_name($hospital_information->district,'id', 'name', 'districts') }},
|
||||
<br/> {{ $hospital_information->country }}.</p>
|
||||
</address>
|
||||
</div>
|
||||
<div class="pull-right text-right">
|
||||
<address>
|
||||
<p class="m-t-30"><b>{{ __('payments.payment_date') }} : </b> <i class="fa fa-calendar"></i> {{ streamline_date_time(\Carbon\Carbon::now()->toDateTimeString()) }}</p>
|
||||
</address>
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- check if there are registered service items, display error if not -->
|
||||
<br/>
|
||||
{{ Form::open(['route' => 'payments.make_payment', 'data-toggle' => 'validator']) }}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="row">
|
||||
<div class="col text-left">
|
||||
{{ __('payments.items') }}
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
<button class="btn btn-success btn-sm btn-rounded">{{ __('payments.ADD_PAYMENT_ITEM') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="input_fields_wrap" id="payments_items">
|
||||
<div class="row">
|
||||
<div class="span1"></div>
|
||||
<div class="col">
|
||||
<div class=" control-group">
|
||||
<label class="control-label" for="item">{{ __('payments.payment_items') }}</label>
|
||||
<div class="form-group">
|
||||
<select name='item_id[]' id='item_0' class="form-control">
|
||||
<option>-select-</option>
|
||||
@foreach($items as $item)
|
||||
<option style='color: orange;' value='{{ $item->id }}'>{{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Item -->
|
||||
|
||||
@php
|
||||
$options = "<option value=''>--select--</option>";
|
||||
foreach ($items as $item){
|
||||
$options .= "<option value='$item->id'>$item->name</option>";
|
||||
}
|
||||
@endphp
|
||||
|
||||
<div class='col'>
|
||||
<div class="form-group">
|
||||
<label class='control-label' class=''>{{ __('payments.quantity') }}</label>
|
||||
<div class=''>
|
||||
<input type='text' name='quantity[]' id ='quantity_0' value="0" class='form-control compulsory'>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Quantity -->
|
||||
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-md-6 text-left">
|
||||
<label class="control-label">{{ __('payments.amount') }}</label>
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<label class="label label-info" id="edit_item_0" style="display: none;">{{ __('payments.edit_unit_price') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="controls">
|
||||
<input type="text" name="amount[]" id="amount_0" class="compulsory form-control"/>
|
||||
</div>
|
||||
<span style="margin-bottom: 4px; font-size: x-small; float: right;" id="unit-cost_0"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='col'>
|
||||
<div class="form-group">
|
||||
<label class='control-label' class=''>{{ __('payments.expense_account') }}</label>
|
||||
<a class="label label-success add_item" style="color: white; margin-left: 25px;">{{ __('payments.add_item') }}</a>
|
||||
<div class=''>
|
||||
<input type='text' name='expense_accn[]' id ='expense_accn_0' class='form-control compulsory' readonly='true'>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Expense account -->
|
||||
|
||||
|
||||
</div>
|
||||
</div><!-- Payment Items -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<table class="table color-bordered-table success-bordered-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="6"><b>{{ __('payments.payment') }}</b></th>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="6"><b>{{ __('payments.bank_account_details') }}</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="form-group">
|
||||
<label class="control-label">{{ __('payments.account') }}</label>
|
||||
<select class="form-control compulsory required" name="bank" id="bank" onchange="show_acc_bal(this.value)" required>
|
||||
<option value="">-select-</option>
|
||||
@foreach($banks as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
<div class="form-group">
|
||||
<label class="control-label">{{ __('payments.account_balance') }}</label>
|
||||
{{ Form::text('account_balance', 0, ['class'=>'form-control compulsory', 'id'=>'account_balance', 'readonly']) }}
|
||||
{{ Form::hidden('bank_id', 0, ['class'=>'form-control compulsory', 'id'=>'bank_id']) }}
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
|
||||
<div class="row">
|
||||
<div class='col'>
|
||||
<div class="form-group-group">
|
||||
<label class="control-label" for="tot">{{ __('payments.payment_items_total') }}</label>
|
||||
<div class="controls">
|
||||
<input type="text" name="total_amount" id="total_amount" class="form-control compulsory" readonly='true'/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- Total -->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<br/>
|
||||
<div class="form-group">
|
||||
{{ Form::textarea('memo', '', ['class'=>'form-control', 'placeholder'=>'Memo']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<br/>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-4 submit_btn" style="display: none">
|
||||
{{ Form::submit(__('payments.submit_payment'), ['class'=>'btn btn-success', 'id'=>'save_payment']) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="edit_payment_item_modal" tabindex="-1" role="dialog" aria-labelledby="edit_payment_item_modal_label" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-6 text-left">
|
||||
<h5 class="modal-title" id="edit_payment_item_modal_label"><b>{{ __('payments.EDIT_PAYMENT_ITEM_PRICE') }}</b></h5>
|
||||
</div>
|
||||
<div class="col-sm-6 text-right">
|
||||
<strong>{{ __('payments.date') }}:</strong> {{ \Carbon\Carbon::now()->format('D m Y') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row" style="padding: 10px;">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<label>{{ __('payments.new_unit_cost') }}</label>
|
||||
<input name="item_id" id="item_id" type="hidden">
|
||||
<input name="item_unit_cost" id="item_unit_cost" class="form-control" />
|
||||
<input name="reset_id" id="reset_id" type="hidden"/>
|
||||
<input name="preset_qty" id="preset_qty" type="hidden"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">{{ __('payments.cancel') }}</button>
|
||||
<button type="button" class="btn btn-success" id="confirm_edit">{{ __('payments.confirm_edit') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/js/validator.js') }}"></script>
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
|
||||
// $(".input_fields_wrap").on('change', "select", function () {
|
||||
// // var i = parseInt(this.id.replace("item_", ""), 10);
|
||||
// var i = parseInt(this.id.substr(this.id.indexOf("_") + 1));
|
||||
//
|
||||
// var item_id = $("#item_" + i).val();
|
||||
// var quantity = $("#quantity_" + i).val();
|
||||
// var amount_field = $("#amount_" + i);
|
||||
// var expense = $("#expense_accn_" + i);
|
||||
// var total_field = $("#total_amount");
|
||||
// var final_total = 0;
|
||||
//
|
||||
// if (item_id === "" || quantity === "") {
|
||||
// alert("Item and quantity are required");
|
||||
// amount_field.val("");
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// $.ajax({
|
||||
// type: "POST",
|
||||
// url: "get_expense_acc",
|
||||
// data: {'item_id' : item_id },
|
||||
// cache: false,
|
||||
// success: function (result){
|
||||
// expense.val(result);
|
||||
// },
|
||||
// error: function (error) {
|
||||
// console.log(error);
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// var dataString = "item_id=" + item_id + "&quantity=" + quantity;
|
||||
// $.ajax({
|
||||
// type: "POST",
|
||||
// url: "total_price",
|
||||
// data: dataString,
|
||||
// cache: false,
|
||||
// success: function (result) {
|
||||
// amount_field.val(result); console.log('cows')
|
||||
// $("[id^='amount_']").each(function () {
|
||||
// final_total += Number($(this).val());
|
||||
// });
|
||||
// total_field.val(final_total);
|
||||
// // $(".add_item").trigger("click");
|
||||
// },
|
||||
// error: function (error) {
|
||||
// console.log(error)
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
|
||||
$("[id^='edit_item_']").click(function () {
|
||||
|
||||
var id = /\d+(?=\D*$)/.exec($(this).attr('id'));
|
||||
var quantity = $("#quantity_" + id).val();
|
||||
var unit_cost_field = $("#unit-cost_" + id);
|
||||
var item = parseFloat($("#item_" + id).val());
|
||||
|
||||
$('#reset_id').val(id);
|
||||
$('#item_id').val(item);
|
||||
$('#preset_qty').val(quantity);
|
||||
$('#edit_payment_item_modal').modal('show');
|
||||
});
|
||||
|
||||
$('#confirm_edit').click(function () {
|
||||
var id = $('#reset_id').val();
|
||||
var amount = $('#item_unit_cost').val();
|
||||
var quantity = $('#preset_qty').val();
|
||||
var item = $('#item_id').val();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/payment_items/quick_update",
|
||||
data: {
|
||||
'item_id' : item,
|
||||
'amount' : amount
|
||||
},
|
||||
cache: false,
|
||||
success: function (result) {
|
||||
console.log(result)
|
||||
$('#edit_payment_item_modal').modal('hide');
|
||||
$('#quantity_' + id).val(1);
|
||||
$('#amount_' + id).val(quantity * amount);
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error)
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
$("[id^='quantity'],[id^='amount'],[id^='amount']").on("change keyup", function () {
|
||||
var id = /\d+(?=\D*$)/.exec($(this).attr('id'));
|
||||
|
||||
var item = parseFloat($("#item_" + id).val());
|
||||
var quantity = parseFloat($("#quantity_" + id).val()) || 1;
|
||||
var amount = parseFloat($("#amount_" + id).val()) || 0;
|
||||
var edit_btn = $('#edit_item_' + id);
|
||||
|
||||
var unit_cost_field = $("#unit-cost_" + id);
|
||||
var final_total = 0;
|
||||
|
||||
var dataString = "item_id=" + item;
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "total_price",
|
||||
data: dataString,
|
||||
cache: false,
|
||||
success: function (result) {
|
||||
var price_factor = result;
|
||||
unit_cost_field.text((price_factor) + ' ugx per item');
|
||||
edit_btn.show();
|
||||
var cost = quantity * price_factor;
|
||||
$("#amount_" + id).val(cost); console.log(price_factor * quantity)
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error)
|
||||
}
|
||||
});
|
||||
|
||||
// $.ajax({
|
||||
// url: '/prescriptions/get_factor/'+frequency_id,
|
||||
// data: {},
|
||||
// success: function(data){
|
||||
// var factor = parseFloat(data);
|
||||
// var quantity = parseFloat(equiv_total * factor * duration_days) || 0;
|
||||
// var required = quantity / pack;
|
||||
// var dispense = Math.ceil(required); // @TODO Roundup this to the nearest whole number
|
||||
|
||||
// $("#quantity_dispensed" + id).val(dispense);
|
||||
//
|
||||
// var selling_price = parseInt($("#selling_price" + id).val());
|
||||
// var cost = dispense * selling_price;
|
||||
// $("#auto_price" + id).text(cost + " UGx");
|
||||
// },
|
||||
// error: function(response){
|
||||
// //
|
||||
// }
|
||||
// });
|
||||
});
|
||||
|
||||
$("#payments_items").focusout(function(e) {
|
||||
var total_amount = 0;
|
||||
$("[id^=amount]").each(function(){
|
||||
var auto_price = $(this).val();
|
||||
var auto_price_integer = parseInt(auto_price);
|
||||
total_amount += auto_price_integer;
|
||||
console.log(auto_price_integer);
|
||||
});
|
||||
$("#total_amount").val(total_amount);
|
||||
});
|
||||
|
||||
|
||||
var max_fields = 20; //maximum input boxes allowed
|
||||
var wrapper = $(".input_fields_wrap"); //Fields wrapper
|
||||
var add_button = $(".add_item"); //Add button ID
|
||||
|
||||
var x = 1; //initlal text box count
|
||||
|
||||
$(add_button).click(function (e) { //on add input button click
|
||||
e.preventDefault();
|
||||
if (x < max_fields) { //max input box allowed
|
||||
x++; //text box increment
|
||||
$(wrapper).append("\
|
||||
<div class='row'>\n\
|
||||
<div class='span1'></div>\n\
|
||||
<div class='col'>\n\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<select name='item_id[]' id='item_" + x + "' class='form-control compulsory'>" +
|
||||
|
||||
"<?php echo $options; ?>" +
|
||||
|
||||
"</select>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>" +
|
||||
"<input type='text' name='quantity[]' value='1' id ='quantity_" + x + "' class='form-control compulsory'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col'>\n\
|
||||
\<div class=\"col-md-6 text-right\">\
|
||||
<label class=\"label label-info\"id='edit_item_" + x + "' style=\"display: block;\">Edit unit price</label>\
|
||||
</div>\
|
||||
<div class='form-group'>" +
|
||||
"<div class='controls'>\n\
|
||||
<input type='text' name='amount[]' id='amount_" + x + "' class='form-control compulsory' readonly='true' />" +
|
||||
"<br/>"+
|
||||
" <a href='#' class='remove_field label label-danger' style='margin-top:5px;'>delete</a>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
<div class='col'>\n\
|
||||
<div>\n\
|
||||
<div class='form-group'>\n\
|
||||
<input type='text' name='expense_accn[]' id ='expense_accn_" + x + "' class='form-control compulsory' readonly='true'>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
</div>\n\
|
||||
"); //add input box
|
||||
}
|
||||
});
|
||||
|
||||
$(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
|
||||
e.preventDefault();
|
||||
$(this).parent('div').parent('div').parent('div').parent('div').remove();
|
||||
|
||||
var final_total = 0;
|
||||
var total_field = $("#total");
|
||||
|
||||
$("[id^='amount_']").each(function () {
|
||||
final_total += Number($(this).val());
|
||||
});
|
||||
total_field.val(final_total);
|
||||
x--;
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
// display the appropriate price of the service
|
||||
function show_service_price(item_id, prompt_div_id) {
|
||||
// get patient id
|
||||
let patient_id = $('#patient_id').val();
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/payments/get_payment_item_details',
|
||||
data: {'item_id' : item_id},
|
||||
|
||||
success: function(response){
|
||||
|
||||
// add amount to div
|
||||
$('#' + (prompt_div_id - 1000)).html(response);
|
||||
|
||||
// enable button for calculating
|
||||
$('#calculate_button').attr('disabled', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// display the appropriate price of the service
|
||||
function show_acc_bal(bank_id) {
|
||||
|
||||
$.ajax({
|
||||
method: 'POST',
|
||||
url: '/payments/get_account_balance',
|
||||
data: {'bank_id' : bank_id},
|
||||
|
||||
success: function(response){
|
||||
var acc_bal = response[0].balance;
|
||||
$('#account_balance').val(acc_bal);
|
||||
$('#bank_id').val(response[0].id);
|
||||
if(acc_bal <= 0){
|
||||
alert('Account Balance is Zero(0) UGX');
|
||||
$('.submit_btn').hide();
|
||||
}else{
|
||||
alert('Are you sure you want proceed with this payment ?');
|
||||
$('.submit_btn').show();
|
||||
}
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function calculate_values(){
|
||||
let total_amount = 0;
|
||||
|
||||
// calculate total amount
|
||||
$('.amt').each(function () {
|
||||
total_amount += parseInt(this.value);
|
||||
});
|
||||
console.log(total_amount);
|
||||
// show total amount to pay
|
||||
$('#total').val(total_amount);
|
||||
|
||||
}
|
||||
|
||||
function change_amt (qty) {
|
||||
let px = $('.amt').val();
|
||||
var total_unit_cost = qty * px;
|
||||
console.log(total_unit_cost);
|
||||
$('#amt').val(total_unit_cost);
|
||||
}
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
||||
|
||||
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ app()->getLocale() }}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ asset('uploads/streamline/color/streamline_icon-02.png') }}">
|
||||
<title>{{ config('app.name', 'Patient Receipt - Stre@mline') }}</title>
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="{{ asset('bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
body{
|
||||
font-size: 0.8em;
|
||||
}
|
||||
/*thead, tfoot { display: table-row-group }*/
|
||||
thead {
|
||||
display: table-header-group;
|
||||
}
|
||||
tfoot {
|
||||
display: table-row-group;
|
||||
}
|
||||
tr {
|
||||
page-break-before: always;
|
||||
page-break-after: always;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container-fluid">
|
||||
@include('layouts.header_pdf_print')
|
||||
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<td><b>{{ __('payments.payment') }}</b></td>
|
||||
<td>#{{ $trans_id }}</td>
|
||||
<td><b>{{ __('payments.payment_made_on') }}</b></td>
|
||||
<td>{{ streamline_date($expense_date) }}</td>
|
||||
<td><b>{{ __('payments.record_date') }}</b></td>
|
||||
<td>{{ streamline_date_time_short($date) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>{{ __('payments.memo') }}</b></td>
|
||||
<td colspan="5">{{ $memo }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('payments.item') }}</th>
|
||||
<th>{{ __('payments.vendor') }}</th>
|
||||
<th>{{ __('payments.item_memo') }}</th>
|
||||
<th>{{ __('payments.quantity') }}</th>
|
||||
<th>{{ __('payments.unit_cost') }}</th>
|
||||
<th>{{ __('payments.amount') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$total = 0;
|
||||
@endphp
|
||||
|
||||
@foreach( $payment as $item)
|
||||
<tr>
|
||||
<td>{{ get_name($item->item_id, 'id', 'name', 'payment_items') }}</td>
|
||||
<td>{{ get_name($item->vendor, 'id', 'name', 'suppliers') }}</td>
|
||||
<td>{{ $item->item_memo }}</td>
|
||||
<td>{{ $item->quantity }}</td>
|
||||
<td>{{ ugandan_shillings($item->unit_cost) }}</td>
|
||||
<td>{{ ugandan_shillings($item->amount) }}</td>
|
||||
</tr>
|
||||
@php
|
||||
$total += $item->amount;
|
||||
@endphp
|
||||
|
||||
@endforeach
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><strong>{{ __('payments.total') }}</strong></td>
|
||||
<td>{{ ugandan_shillings($total) }}</td>
|
||||
</tr>
|
||||
<tbody>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p><b>{{ __('payments.received_by') }}: </b><br><br>
|
||||
{{ __('payments.name') }}: .............................................................. <br><br>
|
||||
{{ __('payments.signature') }}: ............................... </p><br>
|
||||
<p><b>{{ __('payments.printed_by') }}: </b> {{ get_full_name(auth()->User()->id, 'id', 'first_name', 'last_name', 'users') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/typeahead.js-master/dist/typehead-min.css') }}" rel="stylesheet">
|
||||
|
||||
<style type="text/css">
|
||||
#divToPrint{
|
||||
font-size: 13px;
|
||||
color: #7c7c7c;
|
||||
}
|
||||
|
||||
#receipt_table{
|
||||
font-size: 1em;
|
||||
font-weight: normal;
|
||||
font-family: monospace
|
||||
}
|
||||
|
||||
#receipt_table th{
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
#receipt_table td{
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.receipt-label{
|
||||
margin-top: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.receipt-title{
|
||||
font-weight: bolder;
|
||||
text-decoration: underline;
|
||||
display: block; font-family:
|
||||
monospace
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-7">
|
||||
<h4>{{ __('payments.services_receipt') }}</h4>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}"><i class="fa fa-home"></i> {{ __('payments.home') }}</a></li>
|
||||
<li><a href="{{ route('finance') }}"><i class="fa fa-money"></i> {{ __('payments.finance_home') }}</a></li>
|
||||
<li class="active"><i class="fa fa-credit-card"></i> {{ __('payments.payments_voucher') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="white-box">
|
||||
<div class="row" style="float:right;"><button class="btn btn-success glyphicon glyphicon-print" onclick="print_receipt()"> {{ __('payments.print') }}</button></div>
|
||||
<div class="row" id="divToPrint">
|
||||
<div class="col-sm-3"></div>
|
||||
<div class="col-sm-6" style="text-align: center;">
|
||||
<p style="text-align: center; font-size: 1em">
|
||||
<span style="font-weight: bolder; text-decoration: underline; display: block; font-family: monospace"><b>{{ $hospital_information->name }}</b></span>
|
||||
<span style="font-weight: bolder; text-decoration: underline; display: block; font-family: monospace">{{ $hospital_information->address }}</span>
|
||||
<span class="receipt-label"><b>{{ __('patient_finance.tel') }}:</b> {{ $hospital_information->phone_number }}</span><br>
|
||||
<span class="receipt-label"><b>{{ __('patient_finance.email') }}:</b> {{ $hospital_information->email }}</span><br>
|
||||
<span class="receipt-label"><b>{{ __('patient_finance.cashier') }}:</b> {{ auth()->user()->first_name }} {{ auth()->user()->last_name }}</span><br>
|
||||
<span class="receipt-label"><b>{{ __('patient_finance.date') }}:</b> {{ streamline_date_time_short($receipt_date) }}</span><br>
|
||||
<span class="receipt-label"><b>{{ __('patient_finance.receipt_number') }}: </b> {{ $receipt_number }}</span><br>
|
||||
<span class="receipt-label"><b>REF</b> : {{ $patient->first_name }} {{ $patient->last_name }}</span><br>
|
||||
<span class="receipt-label"><b>{{ __('patient_finance.patient_category') }} :</b> {{ get_name($patient->category_id, "id", "name", "patient_categories") }}</span>
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<table class="table" id="receipt_table">
|
||||
<thead>
|
||||
<th style="width: 60%"><b>{{ __('patient_finance.description') }}</b></th>
|
||||
<th style="width: 20%"><b>{{ __('patient_finance.price') }}</b></th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@for($i = 0; $i < count($service_ids_array); $i++)
|
||||
<tr>
|
||||
<td>{{ get_name($service_ids_array[$i], "id", "name", "services") }}</td>
|
||||
<td>{{ ugandan_shillings($service_prices_array[$i]) }}</td>
|
||||
</tr>
|
||||
@endfor
|
||||
|
||||
<tr>
|
||||
<td colspan="2"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>{{ __('patient_finance.total_to_pay') }}</b></td>
|
||||
<td><b>{{ ugandan_shillings($total_amount_pay) }}</b></td>
|
||||
</tr>
|
||||
|
||||
@if($discounts_applied > 0)
|
||||
<tr>
|
||||
<td><b>{{ __('payments.discounts_applied') }}</b></td>
|
||||
<td><b>{{ ugandan_shillings($discounts_applied) }}</b></td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
<tr>
|
||||
<td><b>{{ __('payments.patient_to_pay') }}</b></td>
|
||||
<td><b>{{ ugandan_shillings($patient_to_pay) }}</b></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
</div>
|
||||
<i style="font-size: 0.8em; margin-left: 50%;">© Stre@mline</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('styles')
|
||||
<script type="text/javascript">
|
||||
function print_receipt() {
|
||||
let myDiv = document.getElementById('divToPrint');
|
||||
let newWindow = window.open('', 'SecondWindow', 'toolbar=0,stat=0');
|
||||
|
||||
newWindow.document.write("<html><body " +
|
||||
"class='' " +
|
||||
" onload='window.print()'>" +
|
||||
myDiv.innerHTML +
|
||||
"</body></html>");
|
||||
newWindow.document.close();
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| API Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here is where you can register API routes for your application. These
|
||||
| routes are loaded by the RouteServiceProvider within a group which
|
||||
| is assigned the "api" middleware group. Enjoy building your API!
|
||||
|
|
||||
*/
|
||||
|
||||
Route::middleware('auth:api')->get('/expenses', function () {
|
||||
return "Expenses";
|
||||
});
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::group(['middleware' => ['auth', 'disablebackbutton', 'user-locale','subscription-tracking', 'password-expiry']], function () {
|
||||
/* Payments */
|
||||
Route::any('payments/get_expense_acc', 'PaymentController@get_expense_acc')->name('payments.get_expense_acc');
|
||||
Route::any('payments/total_price', 'PaymentController@total_price')->name('payments.total_price');
|
||||
|
||||
Route::get('payments/new_payment', 'PaymentController@index')->name('payments.new_payment');
|
||||
Route::any('/payments/get_payment_item_details', 'PaymentController@get_payment_item_details')->name('payments.get_payment_item_details');
|
||||
Route::any('/payments/get_account_balance', 'PaymentController@get_account_balance')->name('payments.get_account_balance');
|
||||
Route::any('/payments/make_payment', 'PaymentController@make_payment')->name('payments.make_payment');
|
||||
Route::any('/payments/view_payments', 'PaymentController@history')->name('payments.view_payments');
|
||||
Route::any('/payments/payment_details/{id}', 'PaymentController@detail')->name('payments.payment_details');
|
||||
Route::post('/print_payment_voucher_details', 'PaymentController@print_payment_voucher_detail')->name('payments.print_payment_voucher_detail');
|
||||
Route::any('/payments/payment_details_edit/{id}', 'PaymentController@edit_payments')->name('payments.payment_details_edit');
|
||||
Route::any('/payments/update_payments', 'PaymentController@update_payments')->name('payments.update_payments');
|
||||
Route::any('/payments/delete_payments', 'PaymentController@delete_payments')->name('payments.delete_payments');
|
||||
Route::any('/payments/streamline_bill/transfer', 'PaymentController@transfer_to_account')->name('payments.streamline_bill.transfer');
|
||||
|
||||
/* bills */
|
||||
Route::any('/payments/bills', 'PaymentController@bills')->name('payments.bills');
|
||||
Route::any('/payments/bills_bulk_pay', 'PaymentController@bills_bulk_pay')->name('payments.bills_bulk_pay');
|
||||
Route::any('/payments/save_bill', 'PaymentController@save_bill')->name('payments.save_bill');
|
||||
Route::any('/payments/create_bills', 'PaymentController@create_bills')->name('payments.create_bills');
|
||||
Route::any('/payments/edit_bill/{id}', 'PaymentController@edit_bill')->name('payments.edit_bill');
|
||||
Route::any('/payments/update_bill/{id}', 'PaymentController@update_bill')->name('payments.update_bill');
|
||||
Route::any('/payments/delete_bill', 'PaymentController@delete_bill')->name('payments.delete_bill');
|
||||
Route::any('/payments/pending_bills', 'PaymentController@pending_bills')->name('payments.pending_bills');
|
||||
Route::any('/payments/inactive_bills', 'PaymentController@inactive_bills')->name('payments.inactive_bills');
|
||||
Route::any('/payments/get_bill_details/{id}', 'PaymentController@get_bill_details')->name('payments.get_bill_details');
|
||||
Route::any('/payments/get_bill_number', 'PaymentController@get_bill_number')->name('payments.get_bill_number');
|
||||
Route::any('/payments/store_bill_payment', 'PaymentController@store_bill_payment')->name('payments.store_bill_payment');
|
||||
Route::any('payments/undo_bill_payment/{id}', 'PaymentController@undo_bill_payment')->name('payments.undo_bill_payment');
|
||||
Route::any('/payments/voucher/{id}', 'PaymentController@voucher')->name('payments.voucher');
|
||||
Route::any('/payments/bills/inactive', 'PaymentController@bills_inactive')->name('payments.bills.inactive');
|
||||
Route::post('/payments/bill/activate{id}', 'PaymentController@bill_activate')->name('payments.bill.activate');
|
||||
Route::any('/payments/custom_bills/{vendor}/{category}', 'PaymentController@custom_bills')->name('payments.custom_bills');
|
||||
Route::any('/payments/custom_bill/{vendor}/{category}/{id}', 'PaymentController@custom_bill')->name('payments.custom_bill');
|
||||
|
||||
/* inventory bills */
|
||||
Route::any('/payments/bills/inventory', 'PaymentController@inventory')->name('payments.bills.inventory');
|
||||
Route::any('/payments/bills/inventory/create', 'PaymentController@create_inventory_bill')->name('payments.bills.inventory.create');
|
||||
Route::any('/payments/bills/inventory/save', 'PaymentController@save_inventory_bill')->name('payments.bills.inventory.save');
|
||||
|
||||
/* Payment Items */
|
||||
Route::any('/payment_items/inactive', 'PaymentItemController@inactive')->name('payment_items.inactive');
|
||||
Route::post('/payment_items/activate{id}', 'PaymentItemController@activate')->name('payment_items.activate');
|
||||
Route::resource('payment_items', 'PaymentItemController');
|
||||
Route::any('/payment_items/quick_update', 'PaymentItemController@quick_update')->name('payment_items.quick_update');
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
image: alpine/git:latest
|
||||
|
||||
pipelines:
|
||||
branches:
|
||||
main:
|
||||
- step:
|
||||
name: Merge To Beta
|
||||
script:
|
||||
- git remote set-url origin https://Kabricks:${APP_SECRET}@bitbucket.org/dcsammi/${BITBUCKET_REPO_SLUG}
|
||||
- git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
|
||||
- git fetch
|
||||
- git checkout beta
|
||||
- git merge main
|
||||
- git commit --amend -m "[skip ci] Merge changes from main"
|
||||
- git push
|
||||
- step:
|
||||
name: Deploy To Test
|
||||
script:
|
||||
- echo "Ready to deploy to demo or production!"
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Expenses",
|
||||
"alias": "expenses",
|
||||
"description": "Expenses",
|
||||
"keywords": [],
|
||||
"priority": 0,
|
||||
"providers": [
|
||||
"Modules\\Expenses\\Providers\\ExpensesServiceProvider"
|
||||
],
|
||||
"files": []
|
||||
}
|
||||
Reference in New Issue
Block a user