From 2330a1a33e468b4f1ae74b4c08f92070ca71c513 Mon Sep 17 00:00:00 2001 From: Zin Lin Phyo Date: Mon, 4 Sep 2017 12:09:04 +0630 Subject: [PATCH] calculate commission in sale_edit, void, foc --- .idea/workspace.xml | 171 ++++++++---------- .../origami/sale_edit_controller.rb | 7 + app/models/product_commission.rb | 27 ++- 3 files changed, 110 insertions(+), 95 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 7d13c01d..8b9f5d0a 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,13 +2,9 @@ - - - - @@ -50,7 +46,7 @@ - + @@ -63,18 +59,18 @@ - - + + - + - - + + @@ -83,8 +79,8 @@ - - + + @@ -93,7 +89,7 @@ - + @@ -103,23 +99,13 @@ - + - - - - - - - - - - @@ -143,8 +129,8 @@ - - + + @@ -233,9 +219,9 @@ @@ -797,12 +783,12 @@ - + - @@ -815,6 +801,7 @@ + @@ -824,7 +811,7 @@ - + @@ -883,21 +870,16 @@ file://$PROJECT_DIR$/app/models/product_commission.rb - 11 + 36 file://$PROJECT_DIR$/app/models/product_commission.rb - 29 - - - file://$PROJECT_DIR$/app/controllers/origami/sale_edit_controller.rb - 11 - - @@ -1170,13 +1152,6 @@ - - - - - - - @@ -1208,22 +1183,6 @@ - - - - - - - - - - - - - - - - @@ -1231,38 +1190,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1271,5 +1198,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb index 90956b0c..73c2e344 100644 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -25,6 +25,7 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_id) saleObj.compute_without_void + ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end def item_foc @@ -44,6 +45,7 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_id) saleObj.compute_without_void + ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end # def item_edit @@ -105,6 +107,7 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_id) saleObj.compute_without_void + ProductCommission.remove_product_commission(saleitemObj) end # remove all void items @@ -118,6 +121,7 @@ class Origami::SaleEditController < BaseOrigamiController item.remark = nil end item.save + ProductCommission.remove_product_commission(item) end # re-calc tax @@ -128,5 +132,8 @@ class Origami::SaleEditController < BaseOrigamiController sale_id = params[:sale_id] saleObj = Sale.find(sale_id) saleObj.compute_without_void + saleObj.sale_items.each do |item| + ProductCommission.remove_product_commission(item) + end end end diff --git a/app/models/product_commission.rb b/app/models/product_commission.rb index 2b9eb028..9b56e889 100644 --- a/app/models/product_commission.rb +++ b/app/models/product_commission.rb @@ -5,7 +5,32 @@ class ProductCommission < ApplicationRecord belongs_to :sale_item, foreign_key: 'sale_item_id' belongs_to :sale, foreign_key: 'sale_id' - def self.create_product_commission(saleItemObj) + def self.create_product_commission(newSaleItem, oldSaleItem) + old_product_commission = ProductCommission.find_by_sale_item_id(oldSaleItem.id) + return if old_product_commission.nil? + menu_item = MenuItem.find_by_item_code(newSaleItem.product_code) + return if menu_item.nil? + product_commission = ProductCommission.new + commission = Commission.where('product_code = ? AND is_active = ?', menu_item.id, true).take + product_commission.product_code = menu_item.id + product_commission.product_type = 'menu_item' # use for dummy data ToDo::need to change product type + unless commission.nil? + product_commission.commission_id = commission.id + if commission.commission_type == 'Percentage' + product_commission.price = newSaleItem.unit_price * (commission.amount / 100.0) + product_commission.amount = product_commission.price * newSaleItem.qty + elsif commission.commission_type == 'Net Amount' + product_commission.price = commission.amount + product_commission.amount = product_commission.price * newSaleItem.qty + end + end + unless old_product_commission.nil? + product_commission.commissioner_id = old_product_commission.commissioner_id + end + product_commission.qty = newSaleItem.qty + product_commission.sale_id = newSaleItem.sale_id + product_commission.sale_item_id = newSaleItem.sale_item_id + product_commission.save end def self.edit_product_commission(saleItemObj)