HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: /home/workzeni/agency-erp-05.workzenix.com/resources/views/payment/create.blade.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">Create 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.store') }}" method="POST" class="form" enctype="multipart/form-data">
                @csrf

                @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 selected>Select Agency</option>
                                @foreach ($agencies as $agency)
                                    <option value="{{ $agency->id }}">{{ $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 selected>Select User</option>
                            </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>-- Select Payment Type --</option>
                            <option value="cash">Bank Cash</option>
                            <option value="check">Bank Check</option>
                            <option value="iban">Bank IBAN</option>
                        </select>
                    </div>
                    <div class="form-group">
                        <label for="">Bank Name</label>
                        <input type="text" name="bank_name" class="form-control">
                    </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" 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" selected>BDT</option>
                            <option value="SAR">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" id="amount">
                    </div>

                    <div class="form-group">
                        <label for="">Payment Date<span class="text-danger">*</span></label>
                        <input type="date" name="paid" class="form-control" required>
                    </div>

                    <div class="form-group" style="display: none;">
                        <label for="">Currency rate (SAR to BDT)<span class="text-danger">*</span></label>
                        <input type="number" name="currency_rate" class="form-control" step="0.01">
                    </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"
                            readonly>
                    </div>

                </div>


                <div class="form-group">
                    <label for="">Proof of Payment</label>
                    <input type="file" name="proof" class="form-control" id="">
                </div>
                <div class="form-group">
                    <label for="">Additional Info</label>
                    <textarea name="additional" class="form-control" rows="5" id=""></textarea>
                </div>


                <button type="submit" class="btn btn-primary mt-3">Submit</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>
        document.getElementById('agency_id').addEventListener('change', function() {
            let agencyId = this.value;
            let userSelect = document.getElementById('user_id');
            userSelect.innerHTML = '<option>Loading...</option>';

            fetch(`/admin/payment/get-users/${agencyId}`)
                .then(res => res.json())
                .then(data => {
                    userSelect.innerHTML = '';
                    if (data.length > 0) {
                        userSelect.innerHTML = '<option value="">Select User</option>';
                        data.forEach(user => {
                            userSelect.innerHTML +=
                                `<option value="${user.id}">${user.name} (${user.phone ?? ''})</option>`;

                        });
                    } else {
                        userSelect.innerHTML = '<option>No users found</option>';
                    }
                })
                .catch(() => {
                    userSelect.innerHTML = '<option>Error loading users</option>';
                });
        });
    </script>
@endsection