PHP 8.2 More fixes. Deprecated dynamic member adds.
[fa-stable.git] / sales / includes / cart_class.inc
index b2d7a51f6a433749eab927143afa7a75a6592284..adfe941a22b78c7f83a89051862175ab1482b7b9 100644 (file)
@@ -21,7 +21,7 @@ iv)  a delivery note
 include_once($path_to_root . "/inventory/includes/inventory_db.inc");
 include_once($path_to_root . "/taxes/tax_calc.inc");
 
-class cart
+class Cart 
 {
        var $trans_type; // invoice, order, quotation, delivery note ...
        var $trans_no = array();// array (num1=>ver1,..) or 0 for new
@@ -45,7 +45,7 @@ class cart
        var $Branch;
        var $email;
 
-       var $deliver_to;
+       var $delivery_to;
        var $delivery_address;
        var $phone;
 
@@ -71,17 +71,18 @@ 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
        var $ex_rate;
 
        var $fixed_asset = false;
+       var $bo_policy = null;
 
        //-------------------------------------------------------------------------
        //
@@ -90,7 +91,7 @@ class cart
        //  $trans_no!=0 && $prepare_child==true => prepare for child doc entry
        //      $prepare_child is set to ST_SALESINVOICE for prepayment invoices
        //
-       function Cart($type, $trans_no=0, $prepare_child=false) {
+       function __construct($type, $trans_no=0, $prepare_child=false) {
                /*Constructor function initialises a new shopping cart */
                $this->line_items = array();
                $this->sales_type = "";
@@ -218,7 +219,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"];
@@ -284,12 +286,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
@@ -380,7 +389,7 @@ class cart
        function set_delivery($shipper, $destination, $address, $freight_cost=null)
        {
                $this->ship_via = $shipper;
-               $this->deliver_to = $destination;
+               $this->delivery_to = $destination;
                $this->delivery_address = $address;
                if (isset($freight_cost))
                        $this->freight_cost = $freight_cost;
@@ -557,7 +566,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);
@@ -692,7 +700,7 @@ class line_details
        var $qty_old = 0;
 
 
-       function line_details ($stock_id, $qty, $prc, $disc_percent,
+       function __construct($stock_id, $qty, $prc, $disc_percent,
                $qty_done, $standard_cost, $description, $id=0, $src_no=0, $src_id=0)
        {
        /* Constructor function to add a new LineDetail object with passed params */