Customer Dimension overrides an Item Dimension when creating GL transactions
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Fri, 1 Aug 2008 21:34:47 +0000 (21:34 +0000)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Fri, 1 Aug 2008 21:34:47 +0000 (21:34 +0000)
CHANGELOG.txt
sales/includes/db/customers_db.inc
sales/includes/db/sales_credit_db.inc
sales/includes/db/sales_delivery_db.inc
sales/includes/db/sales_invoice_db.inc

index 61269f27e197845a4ea081ac54d66433b9c9f1b2..191dbf8edebf6dccc4a9a2b878ad905c7f39d848 100644 (file)
@@ -19,6 +19,13 @@ Legend:
 ! -> Note
 $ -> Affected files
 
+01-Aug-2008 Joe Hunt
+! Customer Dimension overrides an Item Dimension when creating GL transactions
+$ /sales/includes/db/customers_db.inc
+  /sales/includes/db/sales_credit_db.inc
+  /sales/includes/db/sales_delivery_db.inc
+  /sales/includes/db/sales_invoice_db.inc
+  
 31-Jul-2008 Joe Hunt
 + Added a new menu entry after that Bank Payment or Bank Deposit has been processed.
 $ /gl/gl_bank.php
index c13554df510409137960a5bbaa708556d76919c6..30cf7b875b3b7362e161fc17c04fd0deb86b6f76 100644 (file)
@@ -89,6 +89,15 @@ function get_customer_details($customer_id, $to=null)
 
 }
 
+function get_customer($customer_id)
+{
+       $sql = "SELECT * FROM ".TB_PREF."debtors_master WHERE debtor_no=$customer_id";
+
+       $result = db_query($sql, "could not get customer");
+
+       return db_fetch($result);
+}
+
 function get_customer_name($customer_id)
 {
        $sql = "SELECT name FROM ".TB_PREF."debtors_master WHERE debtor_no=$customer_id";
index bb284f04d8326ff965e668ae0ff998a946147802..2faf9e7eb8c3a2957d14f7e8fdee605c17fca9a5 100644 (file)
@@ -198,14 +198,18 @@ function add_gl_trans_credit_costs($order, $order_line, $credit_no, $date_,
        $credit_type, $write_off_gl_code, &$branch_data)
 {
        $stock_gl_codes = get_stock_gl_code($order_line->stock_id);
+       $customer = get_customer($order->customer_id);
+       // 2008-08-01. If there is a Customer Dimension, then override with this,
+       // else take the Item Dimension (if any)
+       $dim = ($customer['dimension_id'] != 0 ? $customer["dimension_id"] : $stock_gl_codes["dimension_id"]);
+       $dim2 = ($customer['dimension2_id'] != 0 ? $customer["dimension2_id"] : $stock_gl_codes["dimension2_id"]);
 
        /* insert gl_trans to credit stock and debit cost of sales at standard cost*/
        if ($order_line->standard_cost != 0) {
                /*first the cost of sales entry*/
 
                add_gl_trans_std_cost(11, $credit_no, $date_, $stock_gl_codes["cogs_account"],
-                       $stock_gl_codes["dimension_id"], $stock_gl_codes["dimension2_id"], "",
-                       -($order_line->standard_cost * $order_line->qty_dispatched),
+                       $dim, $dim2, "", -($order_line->standard_cost * $order_line->qty_dispatched),
                        payment_person_types::customer(), $order->customer_id,
                        "The cost of sales GL posting could not be inserted");
 
@@ -242,16 +246,14 @@ function add_gl_trans_credit_costs($order, $order_line, $credit_no, $date_,
                        $sales_account = $branch_data['sales_account'];
                else
                        $sales_account = $stock_gl_codes['sales_account'];
-               add_gl_trans_customer(11, $credit_no, $date_, $sales_account, $stock_gl_codes["dimension_id"],
-                       $stock_gl_codes["dimension2_id"],
+               add_gl_trans_customer(11, $credit_no, $date_, $sales_account, $dim, $dim2,
                        ($line_taxfree_price * $order_line->qty_dispatched), $order->customer_id,
                        "The credit note GL posting could not be inserted");
 
                if ($order_line->discount_percent != 0) {
 
                        add_gl_trans_customer(11, $credit_no, $date_, $branch_data["sales_discount_account"],
-                               $stock_gl_codes["dimension_id"], $stock_gl_codes["dimension2_id"],
-                               -($line_taxfree_price * $order_line->qty_dispatched * $order_line->discount_percent),
+                               $dim, $dim2, -($line_taxfree_price * $order_line->qty_dispatched * $order_line->discount_percent),
                                $order->customer_id,
                                "The credit note discount GL posting could not be inserted");
 
index c216a572c6ff50a86aebb001807314b8e8655939..7c24cb12a8adb359e85d126b787f3f004b68c9ce 100644 (file)
@@ -10,6 +10,7 @@ function write_sales_delivery(&$delivery,$bo_policy)
 
        begin_transaction();
 
+       $customer = get_customer($delivery->customer_id);
        $delivery_items_total = $delivery->get_items_total_dispatch();
        $freight_tax = $delivery->get_shipping_tax();
 
@@ -74,9 +75,13 @@ function write_sales_delivery(&$delivery,$bo_policy)
                        if ($delivery_line->standard_cost != 0) {
 
                                /*first the cost of sales entry*/
+                               // 2008-08-01. If there is a Customer Dimension, then override with this,
+                               // else take the Item Dimension (if any)
+                               $dim = ($customer['dimension_id'] != 0 ? $customer["dimension_id"] : $stock_gl_code["dimension_id"]);
+                               $dim2 = ($customer['dimension2_id'] != 0 ? $customer["dimension2_id"] : $stock_gl_code["dimension2_id"]);
+
                                add_gl_trans_std_cost(13, $delivery_no,
-                               $delivery->document_date, $stock_gl_code["cogs_account"],
-                                       $stock_gl_code["dimension_id"], $stock_gl_code["dimension2_id"], "",
+                                       $delivery->document_date, $stock_gl_code["cogs_account"], $dim, $dim2, "",
                                        $delivery_line->standard_cost * $delivery_line->qty_dispatched,
                                        payment_person_types::customer(), $delivery->customer_id,
                                        "The cost of sales GL posting could not be inserted");
index 4bf6ee48bde98b1e2aa3638aa6bc7c75732d0e19..b3dfd743d7ebe5fb82f45fff89deab003b8f0623 100644 (file)
@@ -19,6 +19,8 @@ function write_sales_invoice(&$invoice)
 
        $branch_data = get_branch_accounts($invoice->Branch);
 
+       $customer = get_customer($invoice->customer_id);
+
        // offer price values without freight costs
        $items_total = $invoice->get_items_total_dispatch();
        $freight_tax = $invoice->get_shipping_tax();
@@ -93,26 +95,25 @@ function write_sales_invoice(&$invoice)
 
                if ($invoice_line->qty_dispatched != 0) {
                        $stock_gl_code = get_stock_gl_code($invoice_line->stock_id);
-                       // 2008-06-14. If there is a Branch Sales Account, then override with this,
-                       // else take the Item Sales Account
-                       if ($branch_data['sales_account'] != "")
-                               $sales_account = $branch_data['sales_account'];
-                       else
-                               $sales_account = $stock_gl_code['sales_account'];
 
                        if ($invoice_line->line_price() != 0) {
                                //Post sales transaction to GL credit sales
 
-                                       add_gl_trans_customer(10, $invoice_no, $date_, $sales_account,
-                                               $stock_gl_code["dimension_id"], $stock_gl_code["dimension2_id"],
-                                               (-$line_taxfree_price * $invoice_line->qty_dispatched),
-                                               $invoice->customer_id, "The sales price GL posting could not be inserted");
+                               // 2008-06-14. If there is a Branch Sales Account, then override with this,
+                               // else take the Item Sales Account
+                               $sales_account = ($branch_data['sales_account'] != "" ? $branch_data['sales_account'] : $stock_gl_code['sales_account']);
+                               // 2008-08-01. If there is a Customer Dimension, then override with this,
+                               // else take the Item Dimension (if any)
+                               $dim = ($customer['dimension_id'] != 0 ? $customer["dimension_id"] : $stock_gl_code["dimension_id"]);
+                               $dim2 = ($customer['dimension2_id'] != 0 ? $customer["dimension2_id"] : $stock_gl_code["dimension2_id"]);
+                               add_gl_trans_customer(10, $invoice_no, $date_, $sales_account, $dim, $dim2,
+                                       (-$line_taxfree_price * $invoice_line->qty_dispatched),
+                                       $invoice->customer_id, "The sales price GL posting could not be inserted");
 
                                if ($invoice_line->discount_percent != 0) {
 
                                        add_gl_trans_customer(10, $invoice_no, $date_,
-                                               $branch_data["sales_discount_account"], $stock_gl_code["dimension_id"],
-                                               $stock_gl_code["dimension2_id"],
+                                               $branch_data["sales_discount_account"], $dim, $dim2,
                                                ($line_taxfree_price * $invoice_line->qty_dispatched * $invoice_line->discount_percent),
                                                $invoice->customer_id, "The sales discount GL posting could not be inserted");
                                } /*end of if discount !=0 */