Fixed payments reallocation for prepayment orders; blocked edition for open prepaymen...
[fa-stable.git] / sales / includes / cart_class.inc
index b4c7f8f5b7c4562cb0a5ad7603b70ade8387edea..6296e5ccc1188c17e4dd72c06c84a178ac67a3b7 100644 (file)
@@ -81,6 +81,8 @@ class cart
        var $prepayments = array(); // allocation records for this document
        var $ex_rate;
 
+       var $fixed_asset = false;
+
        //-------------------------------------------------------------------------
        //
        //  $trans_no==0 => open new/direct document
@@ -216,7 +218,8 @@ class cart
                                read_sales_order($trans_no[0], $this, $type);
                        } else {        // other type of sales transaction
                                read_sales_trans($type, $trans_no, $this);
-                               $this->prepayments = get_payments_for($trans_no[0], $type);
+                               $this->prepayments = get_payments_for($trans_no[0], $type, $this->customer_id);
+                               $this->update_payments();
                                if ($this->order_no) { // free hand credit notes have no order_no
                                        $sodata = get_sales_order_header($this->order_no, ST_SALESORDER);
                                        $this->cust_ref = $sodata["customer_ref"];
@@ -634,12 +637,12 @@ class cart
                $remainder = prepaid_invoice_remainder($this->order_no);
 
                // recalculate prepaid part from payments
-               if ($this->payment_terms['days_before_due'] < 0)
+               if ($this->payment_terms['days_before_due'] == -1)
                {       // this is partial invoice for selected prepayments made.
                        $paid = 0;
                        foreach($this->prepayments as $payment)
                                $paid += $payment['amt'];
-                       $this->prep_amount = min($remainder, $paid);
+                       $this->prep_amount = $this->trans_no ? $paid : min($remainder, $paid);
                } else  // this is final invoice
                        $this->prep_amount = $remainder;
        }