Added Payment Link (Payment Service) for XUMM. A Dutch free Payment Service.
[fa-stable.git] / includes / ui / ui_view.inc
index 35363f896bd519e2792499ab0e241f37e9589401..ec818381900b2a5823d01387e3d131055d89b77e 100644 (file)
@@ -281,6 +281,12 @@ function exchange_rate_display($from_currency, $to_currency, $date_, $force_edit
                $rate = input_num('_ex_rate');
                if (check_ui_refresh() || !$rate) { // readonly or ui context changed
                        $comp_currency = get_company_currency();
+
+                       if (!isset($from_currency))
+                               $from_currency = $comp_currency;
+                       if (!isset($to_currency))
+                               $to_currency = $comp_currency;
+
                        if ($from_currency == $comp_currency)
                                $currency = $to_currency;
                        else
@@ -919,7 +925,7 @@ function get_js_select_combo_item() {
                } else {                        
                        var stock_element = doc.getElementsByName('stock_id');
                if( stock_element.length > 0) {
-                               stock_element.value = value;    
+                               stock_element[0].value = value; 
                                var stock_id = doc.getElementById('_stock_id_edit'); 
                                stock_id.value=value;
                                stock_id.onblur();              
@@ -933,6 +939,7 @@ function get_js_select_combo_item() {
 function get_js_set_combo_item() {
        $js = "function setComboItem(doc, client_id, value, text){
        var element = doc.getElementById(client_id);
+       var search = doc.getElementById('_'+client_id+'_edit');
                if(typeof(element) != 'undefined' && element != null && element.tagName === 'SELECT') {
                        var options = element.options;
                        options.length = 0;
@@ -941,6 +948,7 @@ function get_js_set_combo_item() {
                        option.text = text;
                        element.add(option, 0);
                        element.selectedIndex = 0;
+                       search.value = '';
                element.onchange();
            } else {
                        var stock_element = doc.getElementsByName('stock_id');
@@ -1520,6 +1528,7 @@ if (!isset($payment_services))
 {
        $payment_services = array(
                'PayPal' => "https://www.paypal.com/xclick?business=<company_email>&item_name=<comment>&amount=<amount>&currency_code=<currency>",
+               'XUMM' => "https://xumm.app/detect/request:{{account}}?amount=<amount>"
        );
 }
 /*
@@ -1538,6 +1547,41 @@ function payment_link($name, $options)
        foreach ($options as $id => $option)
                $patterns['<'.$id.'>'] = urlencode($options[$id]);
 
+    if ($name == 'XUMM')
+    {
+        // Get the account number for 'XRPL Account' from 'bank_accounts' table
+        $sql = "SELECT bank_account_number FROM ".TB_PREF."bank_accounts WHERE bank_account_name = 'XRPL Account'";
+        $result = db_query($sql, "could not retrieve XRPL Account bank account number");
+        $row = db_fetch($result);
+        if ($row == false) {
+               display_error(_("Could not retrieve XRPL Account bank account number"));
+               return false;
+        }
+        $account = $row['bank_account_number'];
+
+        // Replace the {{account}} placeholder in the XUMM URL with the extracted account value
+        $link = str_replace('{{account}}', urlencode($account), $link);
+
+        // Extract XRP exchange rate
+        $curr_code = 'XRP';
+        $date = date('Y-m-d'); // Get the current date in 'YYYY-MM-DD' format
+        $sql = "SELECT rate_buy FROM ".TB_PREF."exchange_rates WHERE curr_code = '$curr_code' AND date_ = '$date'";
+        $result = db_query($sql, "could not retrieve exchange rate for $curr_code - $date");
+        $row = db_fetch($result);
+        if ($row == false) {
+               display_error(sprintf(_("Could not retrieve exchange rate for %s - %s"), $curr_code, $date));
+               return false;
+        }
+        $exchange_rate = $row['rate_buy'];
+        if ($exchange_rate == 0) $exchange_rate = 1;
+
+        // Divide the amount by the exchange rate
+        $options['amount'] /= $exchange_rate;
+
+        // Replace the <amount> placeholder in the XUMM URL with the modified amount value
+        $link = str_replace('<amount>', urlencode($options['amount']), $link);
+    }
+
        return strtr($link, $patterns);
 }
 
@@ -1574,3 +1618,21 @@ function trans_editor_link($type, $trans_no)
                (is_closed_trans($type, $trans_no) ? set_icon(ICON_CLOSED, _('Closed')) :
                        pager_link(_("Edit"), sprintf($editor_url[$type], $trans_no, $type), ICON_EDIT));
 }
+
+function company_logo_on_view()
+{
+       // Display View Header
+       global $SysPrefs;
+
+       $logo = company_path() . "/images/" . $SysPrefs->prefs['coy_logo'];
+       $nl = 1;
+       if (!empty($SysPrefs->prefs['company_logo_report']) && $SysPrefs->prefs['coy_logo'] != '' && file_exists($logo))
+       {
+               $size = getimagesize($logo);
+               $height = $size[0] > 150 ? $size[1] * 150 / $size[0] : 30; 
+               $text = "<img src='$logo' height=$height>";
+       }
+       else
+               $text = $SysPrefs->prefs['coy_name'];
+       display_note($text, 0, $nl, "style='font-size:16px;font-weight:600'");
+}
\ No newline at end of file