updated streamline-setup v2

This commit is contained in:
2025-01-15 08:53:49 -08:00
committed by alec.turner
parent a2ce9248f0
commit 4b569f81b0
20228 changed files with 2932048 additions and 63204 deletions
@@ -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;
}
File diff suppressed because it is too large Load Diff
@@ -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'));
}
}
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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>
@@ -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">&times;</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' />" +
"&nbsp;\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
@@ -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">&times;</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' />" +
"&nbsp;\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
@@ -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
@@ -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
@@ -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> &nbsp;<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">&times;</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
@@ -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
@@ -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\
&nbsp;<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
@@ -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">&times;</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
@@ -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/>" +
"&nbsp;<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
@@ -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
@@ -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
@@ -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>
@@ -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> &nbsp;<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/>"+
"&nbsp;<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
@@ -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>
@@ -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%;">&copy; 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": []
}