Added Sales Quotations, inquiry and report
[fa-stable.git] / sales / includes / cart_class.inc
index 8662bf7595313ef7c9470870d21b46b3bc03f751..719f661733c058e8bc11c8dc5a5b400d3011ec7d 100644 (file)
@@ -23,7 +23,7 @@ include_once($path_to_root . "/taxes/tax_calc.inc");
 
 class cart
 {
-       var $trans_type; // invoice, order, delivery note ...
+       var $trans_type; // invoice, order, quotation, delivery note ...
        var $trans_no = array();// array (num1=>ver1,..) or 0 for new
        var $so_type = 0;               // for sales order: simple=0 template=1
        var $cart_id;           // used to detect multi-tab edition conflits
@@ -82,7 +82,10 @@ class cart
                /*Constructor function initialises a new shopping cart */
                $this->line_items = array();
                $this->sales_type = "";
-               $this->trans_type = 30;
+               if ($type == 32)
+                       $this->trans_type = $type;
+               else    
+                       $this->trans_type = 30;
                $this->dimension_id = 0;
                $this->dimension2_id = 0;
                $this->read($type, $trans_no, $view );
@@ -96,8 +99,8 @@ class cart
 
                if (!is_array($trans_no)) $trans_no = array($trans_no);
                if ($trans_no[0]) {
-                       if ($type == 30) { // sales order
-                               read_sales_order($trans_no[0], $this);
+                       if ($type == 30 || $type == 32) { // sales order || sales quotation
+                               read_sales_order($trans_no[0], $this, $type);
                                if ($view) {    // prepare for DN/IV entry
                                        for($line_no = 0; $line_no < count($this->line_items); $line_no++) {
                                                $line = &$this->line_items[$line_no];
@@ -108,7 +111,7 @@ class cart
                        } else {        // derivative transaction
                                        read_sales_trans($type, $trans_no, $this);
                                        if ($this->order_no) { // free hand credit notes have no order_no
-                                               $sodata = get_sales_order_header($this->order_no);
+                                               $sodata = get_sales_order_header($this->order_no, 30);
                                                $this->cust_ref = $sodata["customer_ref"];
                                        // currently currency is hard linked to debtor account
                                        //      $this->customer_currency = $sodata["curr_code"];
@@ -120,7 +123,7 @@ class cart
                                                $src_details = 0;
                                                if ($src_type == 30) { // get src data from sales_orders
                                                        $this->src_docs = array( $sodata['order_no']=>$sodata['version']);
-                                                       $srcdetails = get_sales_order_details($this->order_no);
+                                                       $srcdetails = get_sales_order_details($this->order_no, 30);
                                                } else {        // get src_data from debtor_trans
                                                        $this->src_docs = get_customer_trans_version($src_type, get_parent_trans($type,$trans_no[0]));
                                                        $srcdetails = get_customer_trans_details($src_type,array_keys($this->src_docs));
@@ -151,11 +154,11 @@ class cart
                                  $this->customer_id = get_global_customer();
                                else
                                  $this->customer_id = '';
-                               $this->document_date = Today();
+                               $this->document_date =  new_doc_date();
                                if (!is_date_in_fiscalyear($this->document_date))
                                        $this->document_date = end_fiscalyear();
                                $this->reference = references::get_next($this->trans_type);
-                               if ($type != 30) // Added 2.1 Joe Hunt 2008-11-12
+                               if ($type != 30 && $type != 32) // Added 2.1 Joe Hunt 2008-11-12
                                {
                                        $dim = get_company_pref('use_dimension');
                                        if ($dim > 0)
@@ -222,15 +225,11 @@ class cart
                        $this->trans_no = 0;
                        $this->order_no= $this->trans_type==13 ? key($src->trans_no) : $src->order_no;
                }
-// if we want to save old or derivative document first decode html entities
-// from text fields. For new documents this is not needed.
-               if ($this->trans_no || $this->trans_type != 30) {
-                       $this->reference = @html_entity_decode($this->reference);
-                       $this->Comments = @html_entity_decode($this->Comments);
-                       foreach($this->line_items as $lineno => $line) {
-                               $this->line_items[$lineno]->stock_id = @html_entity_decode($line->stock_id);
-                               $this->line_items[$lineno]->description = @html_entity_decode($line->description);
-                       }
+               $this->reference = @html_entity_decode($this->reference);
+               $this->Comments = @html_entity_decode($this->Comments);
+               foreach($this->line_items as $lineno => $line) {
+                       $this->line_items[$lineno]->stock_id = @html_entity_decode($line->stock_id);
+                       $this->line_items[$lineno]->item_description = @html_entity_decode($line->item_description);
                }
                switch($this->trans_type) {
                        case 10:
@@ -240,6 +239,7 @@ class cart
                        case 13:
                                return write_sales_delivery($this, $policy);
                        case 30:
+                       case 32:
                                if ($this->trans_no==0) // new document
                                        return add_sales_order($this);
                                else