function read($type, $trans_no = 0, $view=false ) {
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 ($view) { // prepare for DN/IV entry
for($line_no = 0; $line_no < count($this->line_items); $line_no++) {
$line = &$this->line_items[$line_no];
+ $line->src_id = $line->id; // save src line ids for update
$line->qty_dispatched = $line->quantity - $line->qty_done;
}
}
- } else { // derivative transaction
+ } 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);
$sign = 1; // $type==13 ? 1 : -1; // this is strange debtor_trans atavism
$line = &$this->line_items[$line_no];
+ $line->src_id = $srcline['id']; // save src line ids for update
$line->qty_old = $line->qty_dispatched = $line->quantity;
$line->quantity += $sign * ($srcline['quantity'] - $srcline['qty_done']); // add free qty on src doc
}
} else {
for($line_no = 0; $line_no < count($this->line_items); $line_no++) {
$line = &$this->line_items[$line_no];
+ $line->src_id = $line->id; // save src line ids for update
$line->qty_dispatched = $line->quantity;
}
}
get_invoice_duedate($this->customer_id, $this->document_date);
else
$this->due_date =
- add_days($this->document_date, 10); // FIX this should be in company prefs
+ add_days($this->document_date, sys_prefs::default_delivery_required_by());
}
}
$src->reference = 'auto';
$src->write(1);
-
$type = $this->trans_type;
$ref = $this->reference;
+ $date = $this->document_date;
// re-read document
$this->read($src->trans_type, key($src->trans_no), true);
+ $this->document_date = $date;
$this->reference = $ref;
$this->trans_type = $type;
$this->src_docs= $this->trans_no;
$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);
+ }
+ }
switch($this->trans_type) {
case 10:
return write_sales_invoice($this);
var $tax_type;
var $tax_type_name;
var $src_no; // number of src doc for this line
+ var $src_id;
var $quantity;
var $price;
var $discount_percent;