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/admin/fund_transfer/list.blade.php
@extends('layouts.master')
@section('title', 'Fund Transfer List')
@section('content')
    <div class="container-fluid">
        <div class="row">
            <div class="col-12">
                <div class="card">
                    <div class="card-header d-flex justify-content-between align-items-center">
                        <h3 class="mb-0">Fund Transfer List</h3>
                        <a href="#" id="add_fund" class="btn btn-primary btn-sm" data-toggle="modal"
                            data-target="#fundTransferModal">
                            Add New
                        </a>

                    </div>
                    <!-- /.card-header -->
                    <div class="card-body">
                        <table id="example1" class="table table-bordered table-striped">
                            <thead>
                                <tr>
                                    <th>SL</th>
                                    <th>Agency</th>
                                    <th>BDT</th>
                                    <th>SAR</th>
                                    <th>Date</th>
                                    <th>Proof</th>
                                    <th>Status</th>
                                    <th>Action</th>
                                </tr>
                            </thead>
                            <tbody>
                                @if ($fundTransfers->isEmpty())
                                    <tr>
                                        <td colspan="8" class="text-center">No fund transfers found.</td>
                                    </tr>
                                @else
                                    @foreach ($fundTransfers as $fundTransfer)
                                        <tr>
                                            <td>{{ $loop->iteration }}</td>
                                            <td>{{ $fundTransfer->agency->name }}</td>
                                            <td>
                                                {{ $fundTransfer->bdt_amount }}
                                            </td>
                                            <td>
                                                {{ $fundTransfer->sar_amount }}
                                                </br>1 SAR rate: {{ $fundTransfer->currency_rate }}
                                            </td>
                                            <td>{{ $fundTransfer->transferred_date }}</td>
                                            <td>
                                                <a href="{{ asset('storage/' . $fundTransfer->proof) }}" target="_blank"
                                                    class="btn btn-success btn-sm">View Proof</a>
                                            </td>
                                            <td>
                                                @if ($fundTransfer->status == 0)
                                                    <span class="btn btn-warning ">Pending</span>
                                                @elseif ($fundTransfer->status == 1)
                                                    <span class="btn btn-success">Approved</span>
                                                @else
                                                    <span class="btn btn-danger">Rejected</span>
                                                @endif
                                            </td>
                                            <td>
                                                <a href="{{ route('fund-transfer.show', $fundTransfer->id) }}"
                                                    class="btn btn-primary btn-sm view-fund">
                                                    View
                                                </a>

                                                @php
                                                    $showEdit =
                                                        $fundTransfer->status == 0 ||
                                                        ($fundTransfer->status == 1 &&
                                                            \Carbon\Carbon::parse($fundTransfer->updated_at)
                                                                ->addDays(7)
                                                                ->isFuture());
                                                @endphp

                                                @if ($showEdit)
                                                    <a href="{{ route('fund-transfer.edit', $fundTransfer->id) }}"
                                                        class="btn btn-info btn-sm">Edit</a>
                                                @endif


                                            </td>
                                        </tr>
                                    @endforeach
                                @endif
                            </tbody>
                            <tfoot>
                                <tr>
                                    <th>SL</th>
                                    <th>Agency</th>
                                    <th>BDT</th>
                                    <th>SAR</th>
                                    <th>Date</th>
                                    <th>Proof</th>
                                    <th>Action</th>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                    <!-- /.card-body -->
                </div>
                <!-- /.card -->
            </div>
            <!-- /.col -->
        </div>
        <!-- /.row -->
    </div>

    <!-- Add Fund Transfer Modal -->
    <div class="modal fade" id="fundTransferModal" tabindex="-1" aria-labelledby="fundTransferModalLabel"
        aria-hidden="true">
        <div class="modal-dialog modal-lg modal-dialog-scrollable">
            <form action="{{ route('fund-transfer.store') }}" method="POST" enctype="multipart/form-data"
                class="needs-validation" novalidate>
                @csrf
                <div class="modal-content">
                    <div class="modal-header bg-primary text-white">
                        <h5 class="modal-title" id="fundTransferModalLabel">Add Fund Transfer</h5>
                        <button type="button" class="btn-close text-white" data-bs-dismiss="modal"
                            aria-label="Close"></button>
                    </div>

                    <div class="modal-body">
                        <div class="row g-3">

                            <!-- Agency -->
                            <div class="col-md-6">
                                <label for="agency_id" class="form-label">Select Agency <span
                                        class="text-danger">*</span></label>
                                <select name="agency_id" id="agency_id" class="form-select" required>
                                    <option value="">-- Select Agency --</option>
                                    @foreach ($agencies as $agency)
                                        <option value="{{ $agency->id }}">{{ $agency->name }}</option>
                                    @endforeach
                                </select>
                            </div>

                            <!-- BDT Amount -->
                            <div class="col-md-6">
                                <label for="bdt_amount" class="form-label">
                                    BDT Amount <span id="bdt_balance_display" class="text-muted">(Balance: --)</span>
                                    <span class="text-danger">*</span>
                                </label>

                                <input type="number" step="0.01" name="bdt_amount" id="bdt_amount" class="form-control"
                                    required>
                                <div id="bdt_error" class="text-danger small mt-1" style="display: none;"></div>
                            </div>


                            <!-- Currency Rate -->
                            <div class="col-md-6">
                                <label for="currency_rate" class="form-label">Currency Rate (SAR to BDT)<span
                                        class="text-danger">*</span></label>
                                <input type="number" step="0.001" name="currency_rate" id="currency_rate"
                                    class="form-control" required>
                            </div>

                            <!-- SAR Amount -->
                            <div class="col-md-6">
                                <label for="sar_amount" class="form-label">SAR Amount <span
                                        class="text-danger">*</span></label>
                                <input type="number" step="0.01" name="sar_amount" id="sar_amount" class="form-control"
                                    readonly required>
                            </div>

                            <!-- Transaction ID -->
                            <div class="col-md-6">
                                <label for="transaction_id" class="form-label">Transaction ID <span
                                        class="text-danger">*</span></label>
                                <input type="text" name="transaction_id" id="transaction_id" class="form-control"
                                    required>
                            </div>

                            <!-- Transferred Date -->
                            <div class="col-md-6">
                                <label for="transferred_date" class="form-label">Transferred Date <span
                                        class="text-danger">*</span></label>
                                <input type="date" name="transferred_date" id="transferred_date" class="form-control"
                                    required>
                            </div>

                            <!-- Proof File -->
                            <div class="col-md-6">
                                <label for="proof" class="form-label">Upload Proof<span
                                        class="text-danger">*</span></label>
                                <input type="file" name="proof" id="proof" class="form-control" required>
                            </div>

                            <!-- Additional Note -->
                            <div class="col-md-6">
                                <label for="additional" class="form-label">Additional Note</label>
                                <textarea name="additional" id="additional" class="form-control" rows="2"
                                    placeholder="Enter any additional information..."></textarea>
                            </div>

                            <!-- Status -->
                            <div class="col-md-6">
                                <label for="status" class="form-label">Status <span
                                        class="text-danger">*</span></label>
                                <select name="status" id="status" class="form-select" required>
                                    <option value="0">Pending</option>
                                    <option value="1">Approved</option>
                                    <option value="2">Rejected</option>
                                </select>
                            </div>

                        </div> <!-- /.row -->
                    </div>

                    <div class="modal-footer">
                        <button type="submit" class="btn btn-success">
                            <i class="fas fa-check-circle"></i> Submit
                        </button>
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                            <i class="fas fa-times"></i> Cancel
                        </button>
                    </div>
                </div>
            </form>
        </div>
    </div>

@endsection

@section('scripts')

    <script>
        let agencyBalance = 0;

        function calculateSARAmount() {
            let bdt = parseFloat(document.getElementById('bdt_amount').value) || 0;
            let rate = parseFloat(document.getElementById('currency_rate').value) || 0;
            let sar = bdt / rate;

            document.getElementById('sar_amount').value = sar.toFixed(2);
        }

        $(document).ready(function() {
            // On agency change, fetch the agency balance (bdt_acct)
            $('#agency_id').on('change', function() {
                const agencyId = $(this).val();

                if (!agencyId) return;

                $.ajax({
                    url: `/get-agency-balance/${agencyId}`,
                    type: 'GET',
                    success: function(response) {
                        agencyBalance = parseFloat(response.bdt_acct);

                        // ✅ Update balance in label
                        $('#bdt_balance_display').text(
                        `(Balance: ${agencyBalance.toFixed(2)} BDT)`);

                        // Optional: reset BDT input if current value exceeds new agency balance
                        const currentAmount = parseFloat($('#bdt_amount').val()) || 0;
                        if (currentAmount > agencyBalance) {
                            $('#bdt_amount').val('');
                            $('#sar_amount').val('');
                            $('#bdt_error')
                                .text(`BDT amount cannot exceed ${agencyBalance}`)
                                .show();
                            $('#bdt_amount').addClass('is-invalid');
                        } else {
                            $('#bdt_error').hide();
                            $('#bdt_amount').removeClass('is-invalid');
                        }
                    },
                    error: function() {
                        agencyBalance = 0;

                        // Reset balance display on error
                        $('#bdt_balance_display').text(`(Balance: --)`);

                        $('#bdt_error')
                            .text('Failed to fetch agency balance.')
                            .show();
                        $('#bdt_amount').addClass('is-invalid');
                    }
                });
            });

            // On BDT input change, validate against agency balance
            $('#bdt_amount').on('input', function() {
                const enteredAmount = parseFloat($(this).val()) || 0;
                const errorDiv = $('#bdt_error');

                if (enteredAmount > agencyBalance) {
                    errorDiv
                        .text(`BDT amount cannot exceed ${agencyBalance}`)
                        .show();
                    $(this).addClass('is-invalid');
                    $('#sar_amount').val('');
                } else {
                    errorDiv.hide();
                    $(this).removeClass('is-invalid');
                    calculateSARAmount();
                }
            });

            // On rate input, also recalculate SAR
            $('#currency_rate').on('input', function() {
                calculateSARAmount();
            });
        });
    </script>




    <script>
        function calculateSARAmount() {
            let bdt = parseFloat(document.getElementById('bdt_amount').value) || 0;
            let rate = parseFloat(document.getElementById('currency_rate').value) || 0;
            let sar = bdt / rate;

            document.getElementById('sar_amount').value = sar.toFixed(2);
        }

        // Bind events
        document.addEventListener('DOMContentLoaded', function() {
            const bdtInput = document.getElementById('bdt_amount');
            const rateInput = document.getElementById('currency_rate');

            if (bdtInput && rateInput) {
                bdtInput.addEventListener('input', calculateSARAmount);
                rateInput.addEventListener('input', calculateSARAmount);
            }
        });
    </script>



    <script>
        $(function() {
            $("#example1").DataTable({
                "responsive": true,
                "lengthChange": false,
                "autoWidth": false,
                "buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
            }).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');
            $('#example2').DataTable({
                "paging": true,
                "lengthChange": false,
                "searching": false,
                "ordering": true,
                "info": true,
                "autoWidth": false,
                "responsive": true,
            });
        });
    </script>

@endsection