File: /home/workzeni/agency-erp-05.workzenix.com/resources/views/payment/edit.blade copy.php
@extends('layouts.master')
@section('title', 'Payments')
@section('content')
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0">Edit Payment</h5>
<a href="{{ route(
([
1 => 'admin',
2 => 'manager',
3 => 'account',
4 => 'user',
][auth()->user()->role] ??
'user') .
'.payment.list',
) }}"
class="btn btn-danger btn-sm">Manage Payment</a>
@if ($errors->any())
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
</div>
<div class="card-body">
<form action="{{ route('payment.update', $payment->id) }}" method="POST" enctype="multipart/form-data"
class="form">
@csrf
@method('PUT')
@if (in_array(auth()->user()->role, [1, 2, 3]))
<div class="row row-cols-md-2">
<div class="form-group">
<label for="agency_id">Select Agency <span class="text-danger">*</span></label>
<select name="agency_id" id="agency_id" class="form-control" required>
<option value="" disabled>Select Agency</option>
@foreach ($agencies as $agency)
<option value="{{ $agency->id }}"
{{ $payment->agency_id == $agency->id ? 'selected' : '' }}>
{{ $agency->name }}
</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="user_id">Select User <span class="text-danger">*</span></label>
<select name="user_id" id="user_id" class="form-control" required>
<option value="" disabled>Select User</option>
@if ($payment->user)
<option value="{{ $payment->user->id }}" selected>
{{ $payment->user->name }} ({{ $payment->user->phone ?? '' }})
</option>
@endif
</select>
</div>
</div>
@endif
<div class="row row-cols-md-2">
<div class="form-group">
<label for="payment_type">Payment Type <span class="text-danger">*</span></label>
<select class="form-control" name="type" id="payment_type" required>
<option disabled>-- Select Payment Type --</option>
<option value="cash" {{ $payment->type == 'cash' ? 'selected' : '' }}>Bank Cash</option>
<option value="check" {{ $payment->type == 'check' ? 'selected' : '' }}>Bank Check</option>
<option value="iban" {{ $payment->type == 'iban' ? 'selected' : '' }}>Bank IBAN</option>
</select>
</div>
<div class="form-group">
<label for="">Bank Name</label>
<input type="text" name="bank_name" class="form-control" value="{{ $payment->bank_name }}">
</div>
</div>
<div class="row row-cols-md-2">
<div class="form-group">
<label for="">Amount (BDT) <span class="text-danger">*</span></label>
<input type="number" name="amount" class="form-control" step="0.01"
value="{{ $payment->amount }}" required>
</div>
<div class="form-group">
<label for="currency">Currency <span class="text-danger">*</span></label>
<select class="form-control" name="currency" required>
<option value="BDT" {{ $payment->currency == 'BDT' ? 'selected' : '' }}>BDT</option>
<option value="SAR" {{ $payment->currency == 'SAR' ? 'selected' : '' }}>SAR</option>
</select>
</div>
<div class="form-group">
<label for="">Transaction id / Check Number <span class="text-danger">*</span></label>
<input type="text" name="transaction_id" class="form-control"
value="{{ $payment->transaction_id }}">
</div>
<div class="form-group">
<label for="">Payment Date <span class="text-danger">*</span></label>
<input type="date" name="paid" class="form-control"
value="{{ $payment->paid ? $payment->paid->format('Y-m-d') : '' }}" required>
</div>
<div class="form-group" style="display: none;">
<label for="">Currency rate <span class="text-danger">*</span></label>
<input type="number" name="currency_rate" class="form-control" step="0.01"
value="{{ $payment->currency_rate }}">
</div>
<div class="form-group" style="display: none;">
<label for="">Total Amount</label>
<input type="number" name="total_amount" id="total_amount" class="form-control" step="0.01"
value="{{ $payment->total_amount }}" readonly>
</div>
</div>
<div class="form-group">
<label for="">Proof of Payment</label>
<input type="file" name="proof" class="form-control">
@if ($payment->proof)
<small class="text-muted">Current: <a href="{{ asset('storage/' . $payment->proof) }}"
target="_blank">View Proof</a></small>
@endif
</div>
<div class="form-group">
<label for="">Additional Info</label>
<textarea name="additional" class="form-control" rows="5">{{ $payment->additional }}</textarea>
</div>
@if (in_array(auth()->user()->role, [1, 2, 3]))
<div class="form-group">
<label for="status">Status <span class="text-danger">*</span></label>
<select class="form-control" name="status" required>
<option value="0" {{ $payment->status == 0 ? 'selected' : '' }}>Pending</option>
<option value="1" {{ $payment->status == 1 ? 'selected' : '' }}>Approved</option>
<option value="2" {{ $payment->status == 2 ? 'selected' : '' }}>Rejected</option>
<option value="3" {{ $payment->status == 3 ? 'selected' : '' }}>Cancelled</option>
<option value="4" {{ $payment->status == 4 ? 'selected' : '' }}>Enable Edit</option>
</select>
</div>
@endif
<button type="submit" class="btn btn-primary mt-3">Update</button>
</form>
</div>
</div>
<script>
const paymentType = document.getElementById('payment_type');
const currencyRate = document.querySelector('input[name="currency_rate"]');
const amountInput = document.querySelector('input[name="amount"]');
const totalAmount = document.querySelector('input[name="total_amount"]');
const currencyRateGroup = currencyRate.closest('.form-group');
const totalAmountGroup = totalAmount.closest('.form-group');
function toggleFields() {
if (paymentType.value === 'iban') {
currencyRateGroup.style.display = 'block';
totalAmountGroup.style.display = 'block';
currencyRate.setAttribute('required', 'required');
} else {
currencyRateGroup.style.display = 'none';
currencyRate.removeAttribute('required');
currencyRate.value = '';
}
calculateTotalAmount(); // Always calculate on toggle
}
function calculateTotalAmount() {
const amount = parseFloat(amountInput.value) || 0;
const rate = parseFloat(currencyRate.value) || 0;
if (paymentType.value === 'iban') {
if (rate > 0) {
totalAmount.value = (amount / rate).toFixed(2);
} else {
totalAmount.value = '';
}
} else {
totalAmount.value = amount.toFixed(2);
}
// Always show total amount field if there's any amount
if (amount > 0) {
totalAmountGroup.style.display = 'block';
} else {
totalAmountGroup.style.display = paymentType.value === 'iban' ? 'block' : 'none';
}
}
// Event listeners
paymentType.addEventListener('change', toggleFields);
amountInput.addEventListener('input', calculateTotalAmount);
currencyRate.addEventListener('input', calculateTotalAmount);
window.addEventListener('DOMContentLoaded', () => {
toggleFields();
});
</script>
<script>
const agencySelect = document.getElementById('agency_id');
const userSelect = document.getElementById('user_id');
const selectedUserId = "{{ $payment->user_id }}";
agencySelect.addEventListener('change', function() {
const agencyId = this.value;
userSelect.innerHTML = '<option>Loading...</option>';
fetch(`/admin/payment/get-users/${agencyId}`)
.then(response => response.json())
.then(users => {
userSelect.innerHTML = '';
if (users.length > 0) {
userSelect.innerHTML = '<option value="">Select User</option>';
users.forEach(user => {
const isSelected = user.id == selectedUserId ? 'selected' : '';
userSelect.innerHTML += `<option value="${user.id}" ${isSelected}>
${user.name} (${user.phone ?? ''})
</option>`;
});
} else {
userSelect.innerHTML = '<option>No users found</option>';
}
})
.catch(() => {
userSelect.innerHTML = '<option>Error loading users</option>';
});
});
// Trigger initial load if agency is already selected
if (agencySelect.value) {
agencySelect.dispatchEvent(new Event('change'));
}
</script>
@endsection