Bug 5695: Purchase Order Item Description should be saved on the PO line description...
[fa-stable.git] / purchasing / includes / db / po_db.inc
index fbc3a8cc984987c496ea701ab153815266755063..06ce31ffcf59d4d463f79cc33d0c90df16fa0734 100644 (file)
@@ -13,9 +13,8 @@
 
 function get_supplier_details_to_order(&$order, $supplier_id)
 {
-       $sql = "SELECT curr_code, supp_name, tax_group_id, supp.tax_included,
-                       supp.credit_limit - Sum(IFNULL(IF(trans.type=".ST_SUPPCREDIT.", -1, 1) 
-                               * (ov_amount + ov_gst + ov_discount),0)) as cur_credit,
+       $sql = "SELECT curr_code, supp_name, tax_group_id, supp.tax_included, dimension_id, dimension2_id,
+                       supp.credit_limit - Sum((ov_amount + ov_gst + ov_discount)) as cur_credit,
                                terms.terms, terms.days_before_due, terms.day_in_following_month
                FROM ".TB_PREF."suppliers supp
                         LEFT JOIN ".TB_PREF."supp_trans trans ON supp.supplier_id = trans.supplier_id
@@ -36,6 +35,8 @@ function get_supplier_details_to_order(&$order, $supplier_id)
        $_POST['supplier_id'] = $supplier_id;
        $_POST['supplier_name'] = $myrow["supp_name"];
        $_POST['curr_code'] = $myrow["curr_code"];
+       $_POST['dimension'] = $myrow["dimension_id"];
+       $_POST['dimension2'] = $myrow["dimension2_id"];
 
        $order->set_supplier($supplier_id, $myrow["supp_name"], $myrow["curr_code"], 
                $myrow["tax_group_id"], $myrow["tax_included"]);
@@ -48,7 +49,7 @@ function delete_po($po)
        global $Refs;
 
        begin_transaction();
-       hook_db_prevoid($po, ST_PURCHORDER);
+       hook_db_prevoid(ST_PURCHORDER, $po);
        $sql = "DELETE FROM ".TB_PREF."purch_orders WHERE order_no=".db_escape($po);
        db_query($sql, "The order header could not be deleted");
 
@@ -90,6 +91,12 @@ function add_po(&$po_obj)
      /*Insert the purchase order detail records */
      foreach ($po_obj->line_items as $line_no => $po_line)
      {
+       if (!$po_line->descr_editable)
+       {
+                       $data = get_purchase_data($po_obj->supplier_id, $po_line->stock_id);
+                       if ($data !== false && $data['supplier_description'] != "")
+                               $po_line->item_description = $data['supplier_description'];
+       }
                $sql = "INSERT INTO ".TB_PREF."purch_order_details (order_no, item_code, description, delivery_date,    unit_price,     quantity_ordered) VALUES (";
                $sql .= $po_obj->order_no . ", " . db_escape($po_line->stock_id). "," .
                db_escape($po_line->item_description). ",'" .
@@ -135,6 +142,12 @@ function update_po(&$po_obj)
     /*Now Update the purchase order detail records */
     foreach ($po_obj->line_items as $po_line)
     {
+       if (!$po_line->descr_editable)
+       {
+                       $data = get_purchase_data($po_obj->supplier_id, $po_line->stock_id);
+                       if ($data !== false && $data['supplier_description'] != "")
+                               $po_line->item_description = $data['supplier_description'];
+       }
        $sql = "INSERT INTO ".TB_PREF."purch_order_details (po_detail_item, order_no, item_code, 
                description, delivery_date, unit_price, quantity_ordered, quantity_received) VALUES ("
                        .db_escape($po_line->po_detail_rec ? $po_line->po_detail_rec : 0). ","
@@ -148,7 +161,7 @@ function update_po(&$po_obj)
                db_query($sql, "One of the purchase order detail records could not be updated");
     }
 
-       reallocate_payments($po_obj->order_no, ST_PURCHORDER, $po_obj->orig_order_date, $po_obj->get_trans_total(), $po_obj->prepayments);
+       reallocate_payments($po_obj->order_no, ST_PURCHORDER, $po_obj->orig_order_date, $po_obj->get_trans_total(), $po_obj->prepayments, $po_obj->supplier_id);
 
        add_audit_trail($po_obj->trans_type, $po_obj->order_no, Today(), _("Updated."));
        hook_db_postwrite($po_obj, ST_PURCHORDER);
@@ -159,6 +172,15 @@ function update_po(&$po_obj)
 
 //----------------------------------------------------------------------------------------
 
+function get_po($order_no) {
+    $sql = "SELECT * FROM ".TB_PREF."purch_orders WHERE order_no = ".db_escape($order_no);
+    $result = db_query($sql);
+
+    return db_fetch($result);
+}
+
+//----------------------------------------------------------------------------------------
+
 function read_po_header($order_no, &$order)
 {
        $sql = "SELECT po.*, supplier.*, loc.location_name 
@@ -185,14 +207,14 @@ function read_po_header($order_no, &$order)
                $order->credit = get_current_supp_credit($order->supplier_id);
 
        $order->orig_order_date = sql2date($myrow["ord_date"]);
-       $order->Comments = nl2br($myrow["comments"]);
+       $order->Comments = $myrow["comments"];
        $order->Location = $myrow["into_stock_location"];
        $order->supp_ref = $myrow["requisition_no"];
        $order->reference = $myrow["reference"];
        $order->delivery_address = $myrow["delivery_address"];
        $order->alloc = $myrow["alloc"];
        $order->prep_amount = $myrow["prep_amount"];
-       $order->prepayments = get_payments_for($order_no, ST_PURCHORDER);
+       $order->prepayments = get_payments_for($order_no, ST_PURCHORDER, $myrow["supplier_id"]);
 
        return true;
        }
@@ -207,7 +229,7 @@ function read_po_items($order_no, &$order, $open_items_only=false)
 {
        /*now populate the line po array with the purchase order details records */
 
-       $sql = "SELECT poline.*, units
+       $sql = "SELECT poline.*, units, editable
                FROM ".TB_PREF."purch_order_details poline
                        LEFT JOIN ".TB_PREF."stock_master item  ON poline.item_code=item.stock_id
                WHERE order_no =".db_escape($order_no);
@@ -223,13 +245,11 @@ function read_po_items($order_no, &$order, $open_items_only=false)
     {
                while ($myrow = db_fetch($result))
         {
-               $data = get_purchase_data($order->supplier_id, $myrow['item_code']);
-               if ($data !== false)
-               {
-                       if ($data['supplier_description'] != "")
-                               $myrow['description'] = $data['supplier_description'];
-               }               
-            if (is_null($myrow["units"]))
+                       $data = get_purchase_data($order->supplier_id, $myrow['item_code']);
+                       if ($data !== false && !$myrow['editable'] && $data['supplier_description'] != "" && 
+                               $myrow['description'] != $data['supplier_description']) // backward compatibility
+                               $myrow['description'] = $data['supplier_description'];
+                       if (is_null($myrow["units"]))
             {
                        $units = "";
             }
@@ -293,6 +313,8 @@ function get_sql_for_po_search_completed($from, $to, $supplier_id=ALL_TEXT, $loc
                porder.ord_date, 
                supplier.curr_code, 
                Sum(line.unit_price*line.quantity_ordered) AS OrderValue,
+               Sum(line.delivery_date < '". date2sql(Today()) ."'
+               AND (line.quantity_ordered > line.quantity_received)) As OverDue,
                porder.into_stock_location,
                chk.isopen
                FROM ".TB_PREF."purch_orders as porder