begin_transaction();
hook_db_prevoid($trans_type, $order_no);
+ $order = get_sales_order_header($order_no, $trans_type);
+
$sql = "DELETE FROM ".TB_PREF."sales_orders WHERE order_no=" . db_escape($order_no)
. " AND trans_type=".db_escape($trans_type);
.db_escape($order_no) . " AND trans_type=".db_escape($trans_type);
db_query($sql, "order Detail Delete");
- add_audit_trail($trans_type, $order_no, Today(), _("Deleted."));
+ add_audit_trail($trans_type, $order_no, sql2date($order['ord_date']), _("Deleted."));
commit_transaction();
}
hook_db_prewrite($order, $order->trans_type);
if ($order->trans_type == ST_SALESORDER)
- $allocs = get_payments_for($order_no, ST_SALESORDER);
+ $allocs = get_payments_for($order_no, $order->trans_type, $order->customer_id);
$sql = "UPDATE ".TB_PREF."sales_orders SET type =".db_escape($order->so_type)." ,
debtor_no = " . db_escape($order->customer_id) . ",
} /* inserted line items into sales order details */
if ($order->trans_type == ST_SALESORDER)
- reallocate_payments($order_no, ST_SALESORDER, $ord_date, $total, $allocs);
+ reallocate_payments($order_no, ST_SALESORDER, $ord_date, $total, $allocs, $order->customer_id);
add_audit_trail($order->trans_type, $order_no, $order->document_date, _("Updated."));
$Refs->save($order->trans_type, $order_no, $order->reference, null, $order->fixed_asset);
line.quantity,
discount_percent,
qty_sent as qty_done,
+ item.long_description,
item.units,
item.mb_flag,
item.material_cost
$order->alloc = $myrow['alloc'];
$order->sum_paid = $myrow["sum_paid"]; // sum of all prepayments to so (also invoiced)
$order->prep_amount = $myrow["prep_amount"];
- $order->prepayments = get_payments_for($order_no, $myrow['trans_type']);
+ $order->prepayments = get_payments_for($order_no, $myrow['trans_type'], $myrow['debtor_no']);
$result = get_sales_order_details($order_no, $order->trans_type);
if (db_num_rows($result) > 0)
PrepaidOrders
*/
function get_sql_for_sales_orders_view($trans_type, $trans_no, $filter,
- $stock_item='', $from='', $to='', $ref='', $location=ALL_TEXT, $customer_id=ALL_TEXT)
+ $stock_item='', $from='', $to='', $ref='', $location=ALL_TEXT, $customer_id=ALL_TEXT, $show_voided = 0, $by_delivery=0, $no_auto=0)
{
+ if ($filter=='OutstandingOnly')
+ $order_value = 'Sum(line.unit_price*(line.quantity-line.qty_sent)*(1-line.discount_percent))+freight_cost';
+ else
+ $order_value = 'Sum(line.unit_price*line.quantity*(1-line.discount_percent))+freight_cost';
$sql = "SELECT
sorder.order_no,
."sorder.ord_date,
sorder.delivery_date,
sorder.deliver_to,
- Sum(line.unit_price*line.quantity*(1-line.discount_percent))+freight_cost AS OrderValue,
+ $order_value AS OrderValue,
sorder.type,
debtor.curr_code,
Sum(line.qty_sent) AS TotDelivered,
allocs.ord_payments,
inv.inv_payments,
sorder.total,
- sorder.trans_type
+ sorder.trans_type,
+ sorder.debtor_no
FROM ".TB_PREF."sales_orders as sorder
LEFT JOIN (SELECT trans_no_to, sum(amt) ord_payments FROM ".TB_PREF."cust_allocations WHERE trans_type_to=".ST_SALESORDER." GROUP BY trans_no_to)
allocs ON sorder.trans_type=".ST_SALESORDER." AND allocs.trans_no_to=sorder.order_no
{
$date_after = date2sql($from);
$date_before = date2sql($to);
-
- $sql .= " AND sorder.ord_date >= '$date_after'"
- ." AND sorder.ord_date <= '$date_before'";
+ $by_date = $by_delivery ? 'delivery_date' : 'ord_date';
+ $sql .= " AND sorder.$by_date >= '$date_after'"
+ ." AND sorder.$by_date <= '$date_before'";
}
+ if ($no_auto)
+ $sql .= " AND sorder.reference != 'auto'";
}
if ($trans_type == ST_SALESQUOTE && !check_value('show_all'))
$sql .= " AND sorder.delivery_date >= '".date2sql(Today())."' AND line.qty_sent=0"; // show only outstanding, not realized quotes
sorder.customer_ref,
sorder.ord_date,
sorder.deliver_to";
+ if ($show_voided == 0)
+ $sql .= " HAVING OrderValue != 0";
+ $sql .= " ORDER BY sorder.order_no DESC";
return $sql;
}
$sql = "UPDATE ".TB_PREF."sales_orders SET type = ".db_escape($status)." WHERE order_no=".db_escape($id);
db_query($sql, "Can't change sales order type");
}
+
+/*
+ Check whether sales order is issued in prepaid mode and already opened
+*/
+
+function is_prepaid_order_open($order_no)
+{
+ $sql = "SELECT count(*)
+ FROM ".TB_PREF."sales_orders o,
+ ((SELECT trans_no_to FROM ".TB_PREF."cust_allocations
+ WHERE trans_type_to=".ST_SALESORDER." AND trans_no_to=".db_escape($order_no).")
+ UNION
+ (SELECT order_ FROM ".TB_PREF."debtor_trans
+ WHERE type=".ST_SALESINVOICE." AND order_=".db_escape($order_no).")) related
+ WHERE
+ o.prep_amount>0
+ AND o.trans_type = ".ST_SALESORDER."
+ AND o.order_no = " . db_escape($order_no);
+
+ $result = db_fetch(db_query($sql, "cannot check prepaid order open"));
+
+ return $result[0];
+}
+
+function last_sales_order_detail($order, $field)
+{
+ $sql = "SELECT $field
+ FROM ".TB_PREF."sales_order_details d
+ LEFT JOIN " .TB_PREF."sales_orders o on d.order_no=o.order_no
+ WHERE debtor_no=" . db_escape($order->customer_id) . "
+ ORDER BY d.id DESC LIMIT 1";
+
+ $last_query=db_query($sql, "Could not retrieve last order detail");
+ $row = db_fetch_row($last_query);
+ return $row == false ? false : $row[0];
+}