AlixFast PerfectPanel v2 — panel patches (apply by hand, check your version)
==========================================================================

1) app/controller/addfunds.php — dispatch line (next to the other methods):
   elseif ($methodId == 110) { $this->load->controller('addfunds/Initiators/alixfast'); }
   (Exact syntax varies by version — follow the existing stripe/paypal dispatch.)

2) app/controller/addfunds/getForm.php — AlixFast branch (method 110):
   Amount field labelled "Amount (PKR)", note:
     "Amount is entered in PKR only. It is converted to USD at the panel
      rate when credited. Minimum: PKR {min} | Maximum: PKR {max}"
   where {min}/{max} come from the paymentmethods row (methodMin/methodMax),
   NOT hardcoded numbers. Amount input gets min={min} max={max}.
   Button: "Initiate Payment".

3) app/controller/addfunds.php (methods list for the template):
   The JSON sent to addfunds.twig must include min, max, methodMin and
   methodMax from the paymentmethods row for every method. In v1 it only
   sent id, name, instructions and fee — that is why Admin min/max changes
   never reached the form. Add those four fields to the methods array.

4) app/views/<THEME>/addfunds.twig — Quick Deposit + History:
   a) Quick Deposit: AlixFast card FIRST, logo /assets/alixfast-logo.png,
      clicking it selects AlixFast in the dropdown and loads its form.
   b) User Payment History: show ONLY Successful Credit rows.
      Pending / Failed / unpaid rows must NOT render for users at all
      (not merely hidden with CSS). Full history stays in Admin only.
      Columns: ID, DATE, METHOD, AMOUNT, TRANSACTION ID, STATUS.
      Transaction ID = AlixFast checkout id (from the "AlixFast:<id>" note),
      Amount = PKR amount paid, Status = "Successful Credit" for
      webhook-confirmed rows.
   c) Return banner (when URL has alixfast=credited):
      "Paid PKR {paid_pkr} -> credited ${credited_usd} (converted to USD)."

5) Admin payment-settings (optional, follow your existing method-37 pattern):
   Add method 110 to the automatic-methods list so Admin -> Payments ->
   AlixFast shows Public Key, Secret Key and a read-only Webhook URL field
   (https://YOURPANEL.com/alixfast-pay/callback.php). Keys saved in Admin
   (paymentmethods.methodExtras: public_key / secret_key) must be read
   FIRST by alixfast-pay/config.php, falling back to its own constants —
   otherwise an Admin save will not change the keys actually used.

6) DO NOT add an AlixFast branch to app/controller/payment.php (the native
   callback route). The standalone alixfast-pay/callback.php is the ONLY
   crediting webhook — this prevents double credit.

7) Theme editor warning (Gill, Oct 2026): the panel Admin theme editor
   returned "Forbidden" on Save even for unchanged files. If you hit the
   same block, edit theme files via Hostinger File Manager directly —
   do NOT force saves through the editor.
