Changed get_unic_dec to get_qty_dec for eliminating return -1.
[fa-stable.git] / sales / customer_invoice.php
index 6f38b64d718b9ef7f0472af845839c0287a8738f..e6ded2d3a4e025315f2adc6241c7c53145d0cf6d 100644 (file)
@@ -160,16 +160,15 @@ if ( (isset($_GET['DeliveryNumber']) && ($_GET['DeliveryNumber'] > 0) )
        }
        else {
                $order_no = $_GET['InvoicePrepayments'];
-               $payments =  get_payments_for($_GET['InvoicePrepayments'], ST_SALESORDER);
        }
        processing_start();
 
-       $_SESSION['Items'] = new Cart(ST_SALESORDER, $order_no, ST_SALESINVOICE);
+       $_SESSION['Items'] = new cart(ST_SALESORDER, $order_no, ST_SALESINVOICE);
        $_SESSION['Items']->order_no = $order_no;
        $_SESSION['Items']->src_docs = array($order_no);
        $_SESSION['Items']->trans_no = 0;
        $_SESSION['Items']->trans_type = ST_SALESINVOICE;
-       $_SESSION['Items']->prepayments = $payments;
+
        $_SESSION['Items']->update_payments();
 
        copy_from_cart();
@@ -205,7 +204,8 @@ function check_quantities()
                                $max = $itm->quantity;
                        } else {
                                $min = 0;
-                               $max = $itm->quantity - $itm->qty_done;
+                               // Fixing floating point problem in PHP.
+                               $max = round2($itm->quantity - $itm->qty_done, get_qty_dec($itm->stock_id));
                        }
                        if (check_num('Line'.$line_no, $min, $max)) {
                                $_SESSION['Items']->line_items[$line_no]->qty_dispatched =
@@ -342,7 +342,7 @@ function check_data()
                        return false;
                }
        } else {
-               if (($_SESSION['Items']->payment_terms['days_before_due'] < 0) && !count($_SESSION['Items']->prepayments)) {
+               if (($_SESSION['Items']->payment_terms['days_before_due'] == -1) && !count($_SESSION['Items']->prepayments)) {
                        display_error(_("There is no non-invoiced payments for this order. If you want to issue final invoice, select delayed or cash payment terms."));
                        return false;
                }
@@ -355,6 +355,7 @@ function check_data()
 if (isset($_POST['process_invoice']) && check_data()) {
        $newinvoice=  $_SESSION['Items']->trans_no == 0;
        copy_to_cart();
+
        if ($newinvoice) 
                new_doc_date($_SESSION['Items']->document_date);
 
@@ -649,10 +650,10 @@ if ($prepaid)
                        $allocs += $pmt['amt'];
                }
        }
-
        label_row(_("Payments received:"), implode(',', $list));
        label_row(_("Invoiced here:"), price_format($_SESSION['Items']->prep_amount), 'class=label');
-       label_row(_("Left to be invoiced:"), price_format($_SESSION['Items']->get_trans_total()-max($_SESSION['Items']->prep_amount, $allocs)), 'class=label');
+       label_row($_SESSION['Items']->payment_terms['days_before_due'] == -1 ? _("Left to be invoiced:") : _("Invoiced so far:"),
+               price_format($_SESSION['Items']->get_trans_total()-max($_SESSION['Items']->prep_amount, $allocs)), 'class=label');
 }
 
 textarea_row(_("Memo:"), 'Comments', null, 50, 4);