Incorrect Journal Balance (sales invoice) when many decimals in tax and price.
[fa-stable.git] / sales / includes / cart_class.inc
index 7d68e2a4622fc60cfccf6bee5298556fd1c079b5..f7e05815c285efc2185f7a336e75d07c05ff97c5 100644 (file)
@@ -71,11 +71,11 @@ class Cart
        var $dimension_id;
        var $dimension2_id;
        var $payment;
-       var $payment_terms; // cached payment terms
+       var $payment_terms = array('cash_sale' => false, 'days_before_due' => 0); // cached payment terms
        var $credit;
        // prepayment mode:
-       var $prepaid;           // true for documents issued in prepayment mode
-       var $prep_amount;       // prepayment required for SO, invoiced amount for prepaiament invoice
+       var $prepaid=false;     // true for documents issued in prepayment mode
+       var $prep_amount=0;     // prepayment required for SO, invoiced amount for prepaiament invoice
        var $sum_paid;          // sum of all allocated prepayments both to order and related invoices
        var $alloc;             // sum of payments allocated to this document
        var $prepayments = array(); // allocation records for this document
@@ -285,12 +285,19 @@ class Cart
        // Makes parent documents for direct delivery/invoice by recurent call.
        // $policy - 0 or 1:  writeoff/return for IV, back order/cancel for DN
        function write($policy=0) {
-
+               
+               global $SysPrefs, $Refs;
+               
                begin_transaction(); // prevents partial database changes in case of direct delivery/invoice
                if ($this->reference != 'auto' && $this->trans_no == 0 && !is_new_reference($this->reference, $this->trans_type))
                {
-                       commit_transaction();
-                       return -1;
+                       if (!empty($SysPrefs->prefs['ref_no_auto_increase']))
+                               $this->reference = $Refs->get_next($this->trans_type, null, array('date' => Today()));
+                       else    
+                       {
+                               commit_transaction();
+                               return -1;
+                       }
                }
                if (count($this->src_docs) == 0 && ($this->trans_type == ST_SALESINVOICE || $this->trans_type == ST_CUSTDELIVERY) && !$this->is_prepaid()) {
                        // this is direct document - first add parent
@@ -558,7 +565,6 @@ class Cart
                $total = $this->get_items_total() + $this->freight_cost;
                $dec = user_price_dec();
                if (!$this->tax_included ) {
-                       $total += $this->get_shipping_tax();
                        $taxes = $this->get_taxes();
                        foreach($taxes as $tax)
                                $total += round($tax['Value'], $dec);