[0000100] Keep getting left allocated weird results (rounding problems).
[fa-stable.git] / includes / ui / ui_view.inc
index c1364786608d52b4c08b636ec818a561e3196f14..d30db81b95249d24db56c692929a248af4553862 100644 (file)
@@ -271,44 +271,41 @@ function get_trans_view_str($type, $trans_no, $label="")
 }
 
 //--------------------------------------------------------------------------------------
-
-function exchange_rate_display($from_currency, $to_currency, $date_, $buttons=true)
+// Displays currency exchange rate for given date.
+// When there is no exrate for today, 
+// gets it form ECB and stores in local database.
+//
+function exchange_rate_display($from_currency, $to_currency, $date_, $edit_rate=false)
 {
     global $Ajax;
-    $hint = _('Get daily ECB exchange rate and save for later use in invoicing process');
+
        if ($from_currency != $to_currency)
        {
-               if ($buttons && isset($_POST['get_rate']))
-               {
-                       $comp_currency = get_company_currency();
-                       if ($from_currency == $comp_currency)
-                               $currency = $to_currency;
-                       else
-                               $currency = $from_currency;
-                       $rate = get_ecb_rate($currency);
-                       if ($rate==0) 
-                       {
-                               display_error(_("Cannot get exchange rate for this currency. Please add exchange rate manually on Exchange Rates page.") );
-                               $rate = get_exchange_rate_from_to($to_currency, $from_currency, $date_);
-                       } else 
-                       {
-                               if (get_date_exchange_rate($currency, $date_))
-                                       update_exchange_rate($currency, $date_, $rate, $rate);
-                               else
+               $comp_currency = get_company_currency();
+               if ($from_currency == $comp_currency)
+                       $currency = $to_currency;
+               else
+                       $currency = $from_currency;
+               $rate = 0;
+               if ($date_ == Today()) {
+                       $rate = get_date_exchange_rate($currency, $date_);
+                       if (!$rate) {
+                               $rate = get_ecb_rate($currency);
+                               if ($rate) 
                                        add_exchange_rate($currency, $date_, $rate, $rate);
                        }
-                       if ($from_currency == $comp_currency)
-                               $rate = 1 / $rate;
-                       $Ajax->activate('get_rate');
                }
-               else
-                       $rate = get_exchange_rate_from_to($to_currency, $from_currency, $date_);
+               if (!$rate)
+                       $rate = get_exchange_rate_from_home_currency($currency, $date_);
+               if ($from_currency != $comp_currency)
+                       $rate = 1 / ($rate / get_exchange_rate_from_home_currency($to_currency, $date_));
+
                $rate = number_format2($rate, user_exrate_dec());
-       label_row(_("Exchange Rate:"),"1 " . $from_currency . " = <span id='_ex_rate'>" . $rate . "</span> " . $to_currency .
-               ($buttons?"  " . submit('get_rate',_("Get"), false, $hint, true):""));
-           if($buttons) {
-                 $Ajax->addUpdate('get_rate','_ex_rate', $rate);
-               }
+               if ($edit_rate)
+                       text_row(_("Exchange Rate:"), '_ex_rate', $rate, 8, 8, null, "", " $from_currency = 1 $to_currency"); 
+               else
+               label_row(_("Exchange Rate:"),"<span id='_ex_rate'>$rate</span> $from_currency = 1 $to_currency" );
+               $Ajax->addUpdate('_ex_rate','_ex_rate', $rate);
        }
 }
 
@@ -498,6 +495,8 @@ function display_allocations($alloc_result, $total)
        label_cell(systypes::name($alloc_row['type']));
        label_cell(get_trans_view_str($alloc_row['type'],$alloc_row['trans_no']));
        label_cell(sql2date($alloc_row['tran_date']));
+       $alloc_row['Total'] = round2($alloc_row['Total'], user_price_dec());
+       $alloc_row['amt'] = round2($alloc_row['amt'], user_price_dec());
        amount_cell($alloc_row['Total']);
        //amount_cell($alloc_row['Total'] - $alloc_row['PrevAllocs'] - $alloc_row['amt']);
        amount_cell($alloc_row['Total'] - $alloc_row['amt']);
@@ -512,6 +511,7 @@ function display_allocations($alloc_result, $total)
        end_row();
        start_row();
     label_cell(_("Left to Allocate:"), "align=right colspan=5");
+    $total = round2($total, user_price_dec());
     amount_cell($total - $total_allocated);
     end_row();
 
@@ -847,6 +847,9 @@ function CC() {
 ";
        $js .= "
       dateField.value = dateString;
+         setFocus(dateField.name);
+         if (dateField.className=='searchbox')
+               dateField.onblur();
       hide();
     }
     return;
@@ -1007,19 +1010,19 @@ function CC() {
     if(document.getElementById){
       calendar = document.getElementById(calendarId);
       calendar.innerHTML = calendarDrawTable(currentYear, currentMonth);
-      setProperty('display', 'block');
       var fieldPos = new positionInfo(dateField);
       var calendarPos = new positionInfo(calendarId);
       var x = fieldPos.getElementLeft();
       var y = fieldPos.getElementBottom();
       setProperty('left', x + 'px');
       setProperty('top', y + 'px');
+      setProperty('display', 'block');
       if (document.all) {
-        setElementProperty('display', 'block', 'CCIframe');
         setElementProperty('left', x + 'px', 'CCIframe');
         setElementProperty('top', y + 'px', 'CCIframe');
         setElementProperty('width', calendarPos.getElementWidth() + 'px', 'CCIframe');
         setElementProperty('height', calendarPos.getElementHeight() + 'px', 'CCIframe');
+        setElementProperty('display', 'block', 'CCIframe');
       }
     }
   }