<?php
-
+/**********************************************************************
+ Copyright (C) FrontAccounting, LLC.
+ Released under the terms of the GNU General Public License, GPL,
+ as published by the Free Software Foundation, either version 3
+ of the License, or (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
/* Definition of the cart class
this class can hold all the information for:
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
/*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 );
//
function read($type, $trans_no = 0, $view=false ) {
+ global $SysPrefs, $Refs;
+
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];
} 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"];
$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));
$this->trans_type = $type;
$this->trans_no = 0;
// set new sales document defaults here
- if (get_global_customer() != reserved_words::get_all())
+ if (get_global_customer() != ALL_TEXT)
$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
+ $this->reference = $Refs->get_next($this->trans_type);
+ if ($type != 30 && $type != 32) // Added 2.1 Joe Hunt 2008-11-12
{
$dim = get_company_pref('use_dimension');
if ($dim > 0)
if (!$pos['cash_sale'] || !$pos['credit_sale'])
$this->pos = -1; // mark not editable payment type
else
- $this->cash = date_diff($this->due_date, Today(), 'd')<2;
+ $this->cash = date_diff2($this->due_date, Today(), 'd')<2;
if ($this->cash) {
$this->Location = $pos['pos_location'];
$this->location_name = $pos['location_name'];
}
} else
$this->due_date =
- add_days($this->document_date, sys_prefs::default_delivery_required_by());
+ add_days($this->document_date, $SysPrefs->default_delivery_required_by());
}
}
$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:
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
return 0;
}
- function update_cart_item($line_no, $qty, $price, $disc)
+ function update_cart_item($line_no, $qty, $price, $disc, $description="")
{
+ if ($description != "")
+ $this->line_items[$line_no]->item_description = $description;
$this->line_items[$line_no]->quantity = $qty;
$this->line_items[$line_no]->qty_dispatched = $qty;
$this->line_items[$line_no]->price = $price;