Added missing due date on direct invoice entry.
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Fri, 12 Nov 2010 11:36:25 +0000 (11:36 +0000)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Fri, 12 Nov 2010 11:36:25 +0000 (11:36 +0000)
purchasing/includes/db/invoice_db.inc
purchasing/includes/po_class.inc
purchasing/includes/supp_trans_class.inc
purchasing/includes/ui/invoice_ui.inc
purchasing/includes/ui/po_ui.inc
purchasing/po_entry_items.php

index a35ae8b5203853f17c3dd8eaa4547dd8a6e12900..4094e449d101c53bd0af6f9fbbfb55fbe74c7a35 100644 (file)
@@ -32,17 +32,13 @@ function read_supplier_details_to_trans(&$supp_trans, $supplier_id)
     $supp_trans->supplier_id = $supplier_id;
     $supp_trans->tax_included = $myrow['tax_included'];
     $supp_trans->supplier_name = $myrow['supp_name'];
-       $supp_trans->terms_description = $myrow['terms'];
+       $supp_trans->terms = array( 
+               'description' => $myrow['terms'],
+               'days_before_due' => $myrow['days_before_due'], 
+               'day_in_following_month' => $myrow['day_in_following_month'] );
+               
        $supp_trans->credit = $myrow['cur_credit'];
 
-       if ($myrow['days_before_due'] == 0)
-       {
-               $supp_trans->terms = "1" . $myrow['day_in_following_month'];
-       }
-       else
-       {
-               $supp_trans->terms = "0" . $myrow['days_before_due'];
-       }
        $supp_trans->tax_description = $myrow['tax_group_name'];
        $supp_trans->tax_group_id = $myrow['tax_group_id'];
 
@@ -350,7 +346,6 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
                }
        }
        
-
     commit_transaction();
 
     return $invoice_id;
index fa8961935661a9be7f9caba60f67ca3102ebee5a..c9ab5b0785570bb935c906e3976cd9c2d966535d 100644 (file)
@@ -25,12 +25,14 @@ class purch_order
        var $supplier_id;
        var $supplier_name;
        var $orig_order_date;
+       var $due_date;
        var $order_no; /*Only used for modification of existing orders otherwise only established when order committed */
        var $lines_on_order = 0;
        var $credit;
        var $tax_group_id;
        var $tax_group_array = null; // saves db queries
        var $tax_included; // type of prices
+       var $terms;
        
        var $reference;
        
index 21e5e5fbb32d3846593f9f8de5615c6b578052ca..130354d7142516a28303246d7f4e9cf7fd2da9da 100644 (file)
@@ -21,7 +21,6 @@ class supp_trans
        var $gl_codes; /*array of objects of class gl_codes using a counter as the pointer */
        var $supplier_id;
        var $supplier_name;
-       var $terms_description;
        var $terms;
        
        var $tax_description;
index c1600229c8a55ca379248416899f6704351cb604..41ae4b3ba366dc2b791408789f2424e6293e7625 100644 (file)
@@ -111,7 +111,7 @@ function invoice_header(&$supp_trans)
 
     date_row(_("Due Date") . ":", 'due_date');
 
-    label_row(_("Terms:"), $supp_trans->terms_description);
+    label_row(_("Terms:"), $supp_trans->terms['description']);
 
        table_section(3, "33%");
 
@@ -558,19 +558,22 @@ function display_grn_items(&$supp_trans, $mode=0)
 }
 
 //--------------------------------------------------------------------------------------------------
-function get_duedate_from_terms(&$supp_trans)
+function get_duedate_from_terms(&$trans)
 {
-       if (!is_date($supp_trans->tran_date))
+       $date = get_class($trans) == 'purch_order' ? $trans->orig_order_date : $trans->tran_date;
+
+       if (!is_date($date))
        {
-               $supp_trans->tran_date = Today();
+               $date = Today();
        }
-       if (substr( $supp_trans->terms, 0, 1) == "1")
+       if ($trans->terms['day_in_following_month'])
        { /*Its a day in the following month when due */
-               $supp_trans->due_date = add_days(end_month($supp_trans->tran_date), (int) substr( $supp_trans->terms,1));
+               $trans->due_date =
+                       add_days(end_month($date), $trans->terms["day_in_following_month"]);
        }
        else
        { /*Use the Days Before Due to add to the invoice date */
-               $supp_trans->due_date = add_days($supp_trans->tran_date, (int) substr( $supp_trans->terms,1));
+               $trans->due_date = add_days($date, $trans->terms["days_before_due"]);
        }
 }
 
index f379573d570996269463431c69c328385e57fc6d..10dd7c5f8e9aa21d47f8ccd94d9a2e1fea34811e 100644 (file)
@@ -19,6 +19,8 @@ function copy_from_cart()
 
        $_POST['supplier_id'] = $cart->supplier_id;
        $_POST['OrderDate'] = $cart->orig_order_date;
+       if ($cart->trans_type==ST_SUPPINVOICE)
+               $_POST['due_date'] = $cart->due_date;
     $_POST['supp_ref'] = $cart->supp_ref;
     $_POST['ref'] = $cart->reference;
        $_POST['Comments'] = $cart->Comments;
@@ -32,6 +34,8 @@ function copy_to_cart()
 
        $cart->supplier_id = $_POST['supplier_id'];     
        $cart->orig_order_date = $_POST['OrderDate'];
+       if ($cart->trans_type==ST_SUPPINVOICE)
+               $cart->due_date = $_POST['due_date'];
        $cart->reference = $_POST['ref'];
        $cart->supp_ref = $_POST['supp_ref'];
        $cart->Comments = $_POST['Comments'];   
@@ -44,10 +48,12 @@ 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
+                               * (ov_amount + ov_gst + ov_discount),0)) 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
-               WHERE supp.supplier_id = '$supplier_id'
+                        LEFT JOIN ".TB_PREF."payment_terms terms ON supp.payment_terms=terms.terms_indicator
+               WHERE supp.supplier_id = ".db_escape($supplier_id)."
                GROUP BY
                          supp.supp_name";
 
@@ -55,6 +61,11 @@ function get_supplier_details_to_order(&$order, $supplier_id)
 
        $myrow = db_fetch($result);
        $order->credit = $myrow["cur_credit"];
+       $order->terms = array( 
+               'description' => $myrow['terms'],
+               'days_before_due' => $myrow['days_before_due'], 
+               'day_in_following_month' => $myrow['day_in_following_month'] );
+
        $_POST['supplier_id'] = $supplier_id;
        $_POST['supplier_name'] = $myrow["supp_name"];
        $_POST['curr_code'] = $myrow["curr_code"];
@@ -76,8 +87,9 @@ function create_new_po($trans_type, $trans_no)
        $_POST['OrderDate'] = new_doc_date();
        if (!is_date_in_fiscalyear($_POST['OrderDate']))
                $_POST['OrderDate'] = end_fiscalyear();
-       $cart->orig_order_date = $_POST['OrderDate'];
+       $cart->due_date = $cart->orig_order_date = $_POST['OrderDate'];
 
+       
        $cart->trans_type = $trans_type;
        $cart->order_no = $trans_no;
        /*read in all the selected order into the Items cart  */
@@ -115,7 +127,10 @@ function display_po_header(&$order)
 
        if ($order->supplier_id != get_post('supplier_id',-1)) {
                $old_supp = $order->supplier_id;
-               get_supplier_details_to_order($order, $_POST['supplier_id']);
+               get_supplier_details_to_order($order, $_POST['supplier_id']); 
+           get_duedate_from_terms($order);
+               $_POST['due_date'] = $order->due_date;
+
                // supplier default price update
                foreach ($order->line_items as $line_no=>$item) {
                        $line = &$order->line_items[$line_no];
@@ -125,6 +140,7 @@ function display_po_header(&$order)
                                        *get_purchase_conversion_factor ($order->supplier_id, $line->stock_id);
                }
            $Ajax->activate('items_table');
+           $Ajax->activate('due_date');
        }
        set_global_supplier($_POST['supplier_id']);
 
@@ -137,7 +153,6 @@ function display_po_header(&$order)
 
        supplier_credit_row($order->supplier_id, $order->credit);
 
-       table_section(2);
 
     if ($editable)
     {
@@ -149,6 +164,8 @@ function display_po_header(&$order)
        label_row(_("Reference:"), $order->reference);
     }
 
+       table_section(2);
+
        // check this out?????????
        //if (!isset($_POST['OrderDate']) || $_POST['OrderDate'] == "")
        //      $_POST['OrderDate'] = $order->orig_order_date;
@@ -160,8 +177,14 @@ function display_po_header(&$order)
        //}
        date_row(_("Order Date:"), 'OrderDate', '', true, 0, 0, 0, null, true);
        if (isset($_POST['_OrderDate_changed'])) {
+               $order->orig_order_date = $_POST['OrderDate'];
+           get_duedate_from_terms($order);
+           $_POST['due_date'] = $order->due_date;
                $Ajax->activate('_ex_rate');
+               $Ajax->activate('due_date');
        }
+       if ($order->trans_type==ST_SUPPINVOICE)
+               date_row(_("Due Date:"), 'due_date', '', false, 0, 0, 0, null, true);
 
        text_row(_("Supplier's Reference:"), 'supp_ref', null, 16, 15);
        locations_list_row(_("Receive Into:"), 'StkLocation', null, false, true); 
index ce1d77973d43c3d4d59e34f03f81ac9df0ad298c..bffe486a78c4f198e5a933655989e1ee8c59ef91 100644 (file)
@@ -332,6 +332,13 @@ function can_commit()
                return false;
        } 
        
+       if (($_SESSION['PO']->trans_type==ST_SUPPINVOICE) && !is_date($_POST['due_date'])) 
+       {
+               display_error(_("The entered due date is invalid."));
+               set_focus('due_date');
+               return false;
+       } 
+       
        if (!$_SESSION['PO']->order_no) 
        {
        if (!$Refs->is_valid(get_post('ref'))) 
@@ -423,16 +430,15 @@ function handle_commit_order()
                        $inv->Comments = $cart->Comments;
                        $inv->supplier_id = $cart->supplier_id;
                        $inv->tran_date = $cart->orig_order_date;
+                       $inv->due_date = $cart->due_date;
                        $inv->reference = $ref;
                        $inv->supp_reference = $cart->supp_ref;
                        $inv->tax_included = $cart->tax_included;
                        $supp = get_supplier($cart->supplier_id);
                        $inv->tax_group_id = $supp['tax_group_id'];
 //                     $inv->ov_discount 'this isn't used at all'
-//                     $inv->terms = not used, TODO
-                       $terms =  $supp['payment_terms'];
                        $inv->ov_amount = $inv->ov_gst = 0;
-                       $inv->due_date = get_invoice_duedate($terms, $inv->tran_date);
+                       
                        foreach($cart->line_items as $key => $line) {
                                $inv->add_grn_to_trans($line->grn_item_id, $line->po_detail_rec, $line->stock_id,
                                        $line->item_description, $line->receive_qty, 0, $line->receive_qty,