Direct GRN, GRN to PO, Direct Purchase Invoice: added exchange rate edition/storage...
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Thu, 23 May 2013 13:18:34 +0000 (15:18 +0200)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Mon, 10 Jun 2013 16:50:18 +0000 (18:50 +0200)
purchasing/includes/db/grn_db.inc
purchasing/includes/db/invoice_db.inc
purchasing/includes/po_class.inc
purchasing/includes/supp_trans_class.inc
purchasing/includes/ui/grn_ui.inc
purchasing/includes/ui/invoice_ui.inc
purchasing/includes/ui/po_ui.inc
purchasing/po_entry_items.php
purchasing/po_receive_items.php

index 2bfa00dcf3f337abc80a8d1c2e120526f55fc571..6c684cff4cb838d799c157fb8bac0f1f4b1dd54d 100644 (file)
@@ -98,6 +98,8 @@ function add_grn(&$po)
        begin_transaction();
        hook_db_prewrite($po, ST_SUPPRECEIVE);
 
+       add_new_exchange_rate(get_supplier_currency($po->supplier_id), $date_, $po->ex_rate);
+
        $grn = add_grn_batch($po->order_no, $po->supplier_id, $po->reference, $po->Location, $date_);
 
     $clearing_act = get_company_pref('grn_clearing_act');
index 1d729ea53a117b5c31d95cf788e74bc7fef01363..83e9f7f83a4dfa6c1453f8d2b4aa6f8f251187f5 100644 (file)
@@ -124,6 +124,8 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
 
        $supplier = get_supplier($supp_trans->supplier_id);
 
+       add_new_exchange_rate($supplier['curr_code'], $supp_trans->tran_date, $supp_trans->ex_rate);
+
     foreach ($taxes as $n => $taxitem)
     {
                $taxes[$n]['Value'] =  round2($taxitem['Value'], user_price_dec());
index 142dd55dd16e363d9d774bf759a5008fcd9cf6fc..f9f75aacc027574db79d361e770ba2f2c3201d5c 100644 (file)
@@ -33,7 +33,8 @@ class purch_order
        var $tax_group_array = null; // saves db queries
        var $tax_included; // type of prices
        var $terms;
-       
+       var $ex_rate;
+
        var $reference;
        var $tax_overrides = array();           // array of taxes manually inserted during sales invoice entry (direct invoice)
        
index a62688e467b41c41bf8084ed2c7c01a8a1c89000..c85f8ae7d9fdf27fcb831dbf56ec954967a7c16b 100644 (file)
@@ -22,6 +22,7 @@ class supp_trans
        var $supplier_id;
        var $supplier_name;
        var $terms;
+       var $ex_rate;
        
        var $tax_description;
        var $tax_group_id;
index cfb2f26c21fa7dc120c76a4eeab39247a0017150..d0db38f3e4766560b80ef3ac9c6fff817d7877b2 100644 (file)
 ***********************************************************************/
 //---------------------------------------------------------------------------------------------------
 
-function display_grn_summary(&$po, $editable=false)
+function display_grn_summary(&$po)
 {
        global $Refs;
     start_table(TABLESTYLE2, "width=90%");
-    
+
     start_row();
        label_cells(_("Supplier"), $po->supplier_name, "class='tableheader2'");
-    
+
     if (!is_company_currency($po->curr_code))
        label_cells(_("Order Currency"), $po->curr_code, "class='tableheader2'");
-    
+
     label_cells(_("For Purchase Order"), get_trans_view_str(ST_PURCHORDER, $po->order_no),
        "class='tableheader2'");
-    
+
        label_cells(_("Ordered On"), $po->orig_order_date, "class='tableheader2'");
        end_row();
-               
+
        start_row();
-    if ($editable) 
-    {
+       label_cells(_("Reference"), $po->reference, "class='tableheader2'");
+       label_cells(_("Deliver Into Location"), get_location_name($po->Location), "class='tableheader2'");
+       label_cells(_("Supplier's Reference"), $po->supp_ref, "class='tableheader2'");
+
+    end_row();
+
+       label_row(_("Delivery Address"), $po->delivery_address, "class='tableheader2'", "colspan=9");
+
+    if ($po->Comments != "")
+       label_row(_("Order Comments"), $po->Comments, "class='tableheader2'", "colspan=9");
+    end_table(1);
+}
+
+function edit_grn_summary(&$po)
+{
+       global $Refs;
+
+       start_outer_table(TABLESTYLE2, "width=80%");
+
+       table_section(1);
+               label_row(_("Supplier"), $po->supplier_name);
+
+       if (!is_company_currency($po->curr_code))
+               label_row(_("Order Currency"), $po->curr_code);
+
+           label_row(_("For Purchase Order"), get_trans_view_str(ST_PURCHORDER, $po->order_no));
+
+               label_row(_("Ordered On"), $po->orig_order_date);
+
+       table_section(2);
        if (!isset($_POST['ref']))
            $_POST['ref'] = $Refs->get_next(ST_SUPPRECEIVE);
-       ref_cells(_("Reference"), 'ref', '', null, "class='tableheader2'");
-               
+       ref_row(_("Reference"), 'ref', '', null);
+
         if (!isset($_POST['Location']))
                $_POST['Location'] = $po->Location;
-        label_cell(_("Deliver Into Location"), "class='tableheader2'");
-        locations_list_cells(null, "Location", $_POST['Location']);
-        
+
+        locations_list_row(_("Deliver Into Location"), "Location", $_POST['Location']);
+
        if (!isset($_POST['DefaultReceivedDate']))
                $_POST['DefaultReceivedDate'] = new_doc_date();
-       
-       date_cells(_("Date Items Received"), 'DefaultReceivedDate', '', true, 0, 0, 0, "class='tableheader2'");    
+
+       date_row(_("Date Items Received"), 'DefaultReceivedDate', '', true, 0, 0, 0, '', true);
+
+       table_section(3);
                // currently this is related order supp reference
-//             ref_cells(_("Supplier's Reference"), 'supp_ref', _("Supplier's Reference"), null, "class='tableheader2'");
-               label_cells(_("Supplier's Reference"), $po->supp_ref, "class='tableheader2'");
-    } 
-    else 
-    {
-       label_cells(_("Reference"), $po->reference, "class='tableheader2'");
-       label_cells(_("Deliver Into Location"), get_location_name($po->Location), "class='tableheader2'");
-               label_cells(_("Supplier's Reference"), $po->supp_ref, "class='tableheader2'");
-    }
-    
-    end_row();
-    
-    if (!$editable)
-    
-       label_row(_("Delivery Address"), $po->delivery_address, "class='tableheader2'", "colspan=9");
-    
-    if ($po->Comments != "")
-       label_row(_("Order Comments"), $po->Comments, "class='tableheader2'", "colspan=9");
-    end_table(1);      
+//             ref_row(_("Supplier's Reference"), 'supp_ref', _("Supplier's Reference"));
+               label_row(_("Supplier's Reference"), $po->supp_ref);
+
+               label_row(_("Delivery Address"), $po->delivery_address);
+
+       if ($po->Comments != "")
+               label_row(_("Order Comments"), $po->Comments, "class='tableheader2'", "colspan=9");
+
+           if (!is_company_currency($po->curr_code))
+                       exchange_rate_display($po->curr_code, get_company_currency(), get_post('DefaultReceivedDate'));
+       end_outer_table(1);
 }
 
 ?>
\ No newline at end of file
index 1591f734cce37a0c6f6ed2a7759cbfb2e7653118..3421d1fb6b014f5bb5baf009cb17497a70b08891 100644 (file)
@@ -19,6 +19,7 @@ function copy_from_trans(&$supp_trans)
        $_POST['supp_reference'] = $supp_trans->supp_reference;
        $_POST['reference'] = $supp_trans->reference;
        $_POST['supplier_id'] = $supp_trans->supplier_id;
+       $_POST['_ex_rate'] = $supp_trans->ex_rate;
        if (isset($supp_trans->tax_overrides))
            foreach($supp_trans->tax_overrides as $id => $value)
                    $_POST['mantax'][$id] = price_format($value);
@@ -33,6 +34,7 @@ function copy_to_trans(&$supp_trans)
        $supp_trans->due_date = $_POST['due_date'];
        $supp_trans->supp_reference = $_POST['supp_reference'];
        $supp_trans->reference = $_POST['reference'];
+       $supp_trans->ex_rate = input_num('_ex_rate', null);
 
        $supp_trans->ov_amount = $supp_trans->ov_discount = 0; /* for starters */
     if (isset($_POST['mantax'])) {
index 4fa13ab20d4282c1cb6dc924ea9d3e5d178360f3..5f09dc10a52d5476e8f459e2ba4c6b78f00030ae 100644 (file)
@@ -26,6 +26,7 @@ function copy_from_cart()
        $_POST['Comments'] = $cart->Comments;
     $_POST['StkLocation'] = $cart->Location;
     $_POST['delivery_address'] = $cart->delivery_address;
+       $_POST['_ex_rate'] = $cart->ex_rate;
     foreach($cart->tax_overrides as $id => $value)
            $_POST['mantax'][$id] = price_format($value);
 }
@@ -43,6 +44,8 @@ function copy_to_cart()
        $cart->Comments = $_POST['Comments'];   
        $cart->Location = $_POST['StkLocation'];
        $cart->delivery_address = $_POST['delivery_address'];
+       $cart->ex_rate = input_num('_ex_rate', null);
+
     if (isset($_POST['mantax'])) {
                foreach($_POST['mantax'] as $id => $tax) {
                        $cart->tax_overrides[$id] = user_numeric($_POST['mantax'][$id]); }
@@ -113,7 +116,7 @@ function display_po_header(&$order)
 
        $editable = ($order->order_no == 0);
 
-       start_outer_table(TABLESTYLE2, "width=80%");
+       start_outer_table(TABLESTYLE2, 'width=80%');
 
        table_section(1);
     if ($editable)
@@ -148,6 +151,18 @@ function display_po_header(&$order)
        }
        set_global_supplier($_POST['supplier_id']);
 
+       date_row($order->trans_type==ST_PURCHORDER ? _("Order Date:") :
+               ($order->trans_type==ST_SUPPRECEIVE ? _("Delivery Date:") : _("Invoice 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('due_date');
+       }
+       supplier_credit_row($order->supplier_id, $order->credit);
+
        if (!is_company_currency($order->curr_code))
        {
                label_row(_("Supplier Currency:"), $order->curr_code);
@@ -155,8 +170,6 @@ function display_po_header(&$order)
                        $_POST['OrderDate']);
        }
 
-       supplier_credit_row($order->supplier_id, $order->credit);
-
 
     if ($editable)
     {
@@ -170,26 +183,6 @@ function display_po_header(&$order)
 
        table_section(2);
 
-       // check this out?????????
-       //if (!isset($_POST['OrderDate']) || $_POST['OrderDate'] == "")
-       //      $_POST['OrderDate'] = $order->orig_order_date;
-       //if (!isset($_POST['OrderDate']) || $_POST['OrderDate'] == "")
-       //{
-       //      $_POST['OrderDate'] = Today();
-       //      if (!is_date_in_fiscalyear($_POST['OrderDate']))
-       //              $_POST['OrderDate'] = end_fiscalyear();
-       //}
-       date_row($order->trans_type==ST_PURCHORDER ? _("Order Date:") :
-               ($order->trans_type==ST_SUPPRECEIVE ? _("Delivery Date:") : _("Invoice 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);
 
index eb0f56af7c15f01d83521858a74a6791813c6724..ec03796d2635246b934282691ca37f8e68e36824 100644 (file)
@@ -475,6 +475,7 @@ function handle_commit_order()
                                        $total += isset($taxitem['Override']) ? $taxitem['Override'] : $taxitem['Value'];
                                }
                        }
+                       $inv->ex_rate = $cart->ex_rate;
 
                        $inv_no = add_supp_invoice($inv);
                        commit_transaction(); // save PO+GRN+PI
index 3d09c3d8a3eac70fbadeb3d27e775f7c7e817c40..f80130e6402cea4caaf3a7b8eab51a09aefe6bfe 100644 (file)
@@ -266,6 +266,7 @@ function process_receive_po()
        $grn->orig_order_date = $_POST['DefaultReceivedDate'];
        $grn->reference = $_POST['ref'];
        $grn->Location = $_POST['Location'];
+       $grn->ex_rate = input_num('_ex_rate', null);
 
        $grn_no = add_grn($grn);
 
@@ -325,7 +326,7 @@ if (isset($_POST['ProcessGoodsReceived']))
 
 start_form();
 
-display_grn_summary($_SESSION['PO'], true);
+edit_grn_summary($_SESSION['PO'], true);
 display_heading(_("Items to Receive"));
 display_po_receive_items();