From 1fd4108ac0e6785e5775bce4ad8616d2299bd047 Mon Sep 17 00:00:00 2001 From: Yan Date: Wed, 22 Nov 2017 12:12:27 +0630 Subject: [PATCH] change all sale item --- .../origami/sale_edit_controller.rb | 16 +++++---- app/models/promotion.rb | 10 +++--- app/models/sale.rb | 16 +++++---- app/models/sale_item.rb | 33 ++++++++++++++++--- app/models/sale_payment.rb | 4 ++- db/seeds.rb | 10 +++--- 6 files changed, 60 insertions(+), 29 deletions(-) diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb index 963ddb45..a4dcb31d 100755 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -19,6 +19,7 @@ class Origami::SaleEditController < BaseOrigamiController @newsaleitem.qty = saleitemObj.qty * -1 @newsaleitem.price = saleitemObj.price * -1 @newsaleitem.is_taxable = 1 + @newsaleitem.taxable_price = saleitemObj.taxable_price * -1 @newsaleitem.product_name = saleitemObj.product_name + ' (VOID)' @newsaleitem.save @@ -29,7 +30,7 @@ class Origami::SaleEditController < BaseOrigamiController remark = "Void Sale Item ID #{saleitemObj.sale_item_id} | Receipt No #{saleObj.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}" sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"SALEITEMVOID" ) - saleObj.compute_without_void + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end @@ -41,9 +42,10 @@ class Origami::SaleEditController < BaseOrigamiController @newsaleitem = SaleItem.new @newsaleitem = saleitemObj.dup @newsaleitem.save - @newsaleitem.qty = saleitemObj.qty * -1 + @newsaleitem.qty = saleitemObj.qty * -1 + @newsaleitem.unit_price = saleitemObj.unit_price * -1 + @newsaleitem.taxable_price = saleitemObj.taxable_price * -1 @newsaleitem.price = saleitemObj.price * -1 - @newsaleitem.is_taxable = 1 @newsaleitem.product_name = saleitemObj.product_name + ' (FOC)' @newsaleitem.save @@ -54,7 +56,7 @@ class Origami::SaleEditController < BaseOrigamiController remark = "FOC Sale Item ID #{saleitemObj.sale_item_id} | Receipt No #{saleObj.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}Receipt No #{saleObj.receipt_no}" sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"SALEITEMFOC" ) - saleObj.compute_without_void + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end @@ -103,7 +105,7 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_id) - saleObj.compute_without_void + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) ProductCommission.edit_product_commission(saleitemObj) end @@ -128,7 +130,7 @@ class Origami::SaleEditController < BaseOrigamiController remark = "Cancle Void Sale Item ID #{saleitemObj.sale_item_id} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}|Receipt No #{saleObj.receipt_no}" sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"ITEMCANCELVOID" ) - saleObj.compute_without_void + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) ProductCommission.remove_product_commission(saleitemObj) end @@ -147,7 +149,7 @@ class Origami::SaleEditController < BaseOrigamiController end # re-calc tax - saleObj.compute_without_void + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) end def apply_void diff --git a/app/models/promotion.rb b/app/models/promotion.rb index 2edc9421..2f7774d3 100755 --- a/app/models/promotion.rb +++ b/app/models/promotion.rb @@ -153,7 +153,7 @@ class Promotion < ApplicationRecord update_existing_item(promotion_qty, item, sale_id, "promotion", item.price) end - def self.update_existing_item(foc_qty, item, sale_id, type, item_price) + def self.update_existing_item(qty, item, sale_id, type, item_price) sale_item = SaleItem.new sale_item.product_code = item.item_code @@ -161,13 +161,13 @@ class Promotion < ApplicationRecord sale_item.product_alt_name = item.alt_name sale_item.account_id = item.account_id sale_item.remark = type - sale_item.qty = foc_qty * (-1) + sale_item.qty = qty * (-1) sale_item.unit_price = item_price # * (-1) - sale_item.taxable_price = item_price # * (-1) - sale_item.price = foc_qty * item_price * (-1) + sale_item.taxable_price = qty * item_price # * (-1) + sale_item.price = qty * item_price * (-1) - sale_item.is_taxable = false + sale_item.is_taxable = 1 sale_item.sale_id = sale_id sale_item.save sale = Sale.find(sale_id) diff --git a/app/models/sale.rb b/app/models/sale.rb index 3f741baf..eb776ed1 100755 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -166,7 +166,7 @@ class Sale < ApplicationRecord sale_item.qty = item.qty sale_item.unit_price = item.price - sale_item.taxable_price = item.price + sale_item.taxable_price = sale_item.qty * sale_item.unit_price sale_item.is_taxable = item.taxable sale_item.price = sale_item.qty * sale_item.unit_price @@ -182,7 +182,7 @@ class Sale < ApplicationRecord sale_item.product_alt_name = "-" sale_item.qty = block_count sale_item.unit_price = chargeObj.unit_price - sale_item.taxable_price = chargeObj.unit_price + sale_item.taxable_price = sale_item.qty * sale_item.unit_price sale_item.is_taxable = chargeObj.taxable sale_item.sale_id = self.id sale_item.price = diningprice @@ -225,7 +225,8 @@ class Sale < ApplicationRecord puts "item.sales_item_id ddd" puts item.sale_item_id subtotal_price = subtotal_price + item.price - total_taxable = total_taxable + (item.taxable_price * item.qty) + total_taxable = total_taxable + item.taxable_price + # total_taxable = total_taxable + (item.taxable_price * item.qty) end apply_tax (total_taxable) @@ -253,7 +254,11 @@ class Sale < ApplicationRecord sales_items.each do |item| #compute each item and added to total subtotal_price = subtotal_price + item.price - total_taxable = total_taxable + (item.taxable_price * item.qty) + + # check for item is taxable and calculate + if item.is_taxable + total_taxable = total_taxable + item.taxable_price + end end compute_tax(sale, total_taxable, total_discount) @@ -269,6 +274,7 @@ class Sale < ApplicationRecord end + # No Use too many wrong def compute_without_void sales_items = self.sale_items @@ -467,9 +473,7 @@ class Sale < ApplicationRecord else sale = Sale.all.joins("JOIN sale_payments sp on sp.sale_id = sales.sale_id") .where("sp.payment_method ='creditnote' #{keyword} #{custo}") - end - end def self.get_rounding_adjustment(num) diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb index 9379ce24..08e592d5 100755 --- a/app/models/sale_item.rb +++ b/app/models/sale_item.rb @@ -14,19 +14,42 @@ class SaleItem < ApplicationRecord # Add Sale Items def self.add_sale_items(sale_items) sale_items.each do|saleitemObj| - saleitemObj.remark = 'foc' - saleitemObj.save @newsaleitem = SaleItem.new @newsaleitem = saleitemObj.dup @newsaleitem.save - @newsaleitem.qty = saleitemObj.qty * -1 - @newsaleitem.price = saleitemObj.price * -1 - @newsaleitem.is_taxable = 1 + @newsaleitem.qty = saleitemObj.qty * -1 + @newsaleitem.unit_price = saleitemObj.unit_price * -1 + @newsaleitem.taxable_price = (saleitemObj.unit_price * saleitemObj.qty) * -1 + @newsaleitem.price = (saleitemObj.unit_price * saleitemObj.qty) * -1 @newsaleitem.product_name = saleitemObj.product_name + ' (FOC)' @newsaleitem.save end end + def self.update_existing_item(qty, item, sale_id, type, item_price) + sale_item = SaleItem.new + sale_item.product_code = item.item_code + sale_item.product_name = item.item_name + "(#{type})" + sale_item.product_alt_name = item.alt_name + sale_item.account_id = item.account_id + sale_item.remark = type + if type == "foc" || type == "promotion" || type == "void" + sale_item.qty = qty * (-1) + else + sale_item.qty = qty + end + + sale_item.unit_price = item_price # * (-1) + sale_item.taxable_price = (qty * item_price) * (-1) + sale_item.price = (qty * item_price) * (-1) + + sale_item.is_taxable = 1 + sale_item.sale_id = sale_id + sale_item.save + sale = Sale.find(sale_id) + sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount) + end + def self.get_order_items_details(sale_id) order_details = SaleItem.select("sales.total_tax as tax_amount, sales.grand_total as grand_total_amount , sales.total_discount as discount_amount,sales.receipt_date as receipt_date, sales.cashier_name,sales.receipt_no,sale_items.product_name as item_name,sale_items.qty,sale_items.price,sale_items.unit_price as total_price") diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 310966dd..afc4c75d 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -172,7 +172,9 @@ class SalePayment < ApplicationRecord # add to sale item with foc sale_items = SaleItem.find_by_sale_id(self.sale) - SaleItem.add_sale_items(sale_items) + sale_items.each do|item| + SaleItem.update_existing_item(item.qty, item, self.sale, "foc", item.unit_price) + end self.payment_method = "foc" self.payment_amount = self.received_amount diff --git a/db/seeds.rb b/db/seeds.rb index 54c88470..ab6e2348 100755 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -190,10 +190,10 @@ member_actions= MembershipAction.create([{membership_type:"get_account_balance", {membership_type:"update_membership_customer",gateway_url:"/api/generic_customer/update_membership_customer",merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, {membership_type:"get_all_member_group",gateway_url:"/api/member_group/get_all_member_group",merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, {membership_type:"rebate",gateway_url:"/api/membership_campaigns/rebate",additional_parameter:{campaign_type_id:1},merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, - {membership_type:"get_all_member_account",gateway_url:"/api/generic_customer/get_membership_data",merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, + {membership_type:"get_all_member_account",gateway_url:"/api/generic_customer/get_member_data",merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, {membership_type:"get_member_transactions",gateway_url:"/api/generic_customer/get_membership_transactions",merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, - {membership_type:"member_discount",gateway_url:"/api/membership_campaigns/discount",additional_parameter:{campaign_type_id:6},merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, - {membership_type:"get_member_campaign",gateway_url:"/api/membership_campaigns/get_member_campaign",additional_parameter:{campaign_type_id:6},merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, + {membership_type:"member_discount",gateway_url:"/api/membership_campaigns/discount",additional_parameter:{campaign_type_id:5},merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, + {membership_type:"get_member_campaign",gateway_url:"/api/membership_campaigns/get_member_campaign",additional_parameter:{campaign_type_id:5},merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"}, {membership_type:"search_paypar_account_no",gateway_url:"/api/generic_customer/get_membership_customer_data",merchant_account_id:"RxzaYyAGzm7VqAZ4hKnv",auth_token:"code2lab"} ]) @@ -205,8 +205,8 @@ payment_methods = PaymentMethodSetting.create({payment_method:"Redeem",gateway_u #Default Order Queue stations order_queue_station1 = OrderQueueStation.create({station_name: "K1", is_active: true,printer_name: "Cashier", processing_items: JSON.generate(['01001','01002','01003','01004']), print_copy:true, cut_per_item: false, use_alternate_name: false, created_by: "SYSTEM DEFAULT"}) -order_queue_station2 = OrderQueueStation.create({station_name: "K2", is_active: true,printer_name: "Cashier", processing_items: JSON.generate(['02005','02006','02007','02008']), print_copy:true, cut_per_item: true, use_alternate_name: true, created_by: "SYSTEM DEFAULT"}) -zone_order_queue_station = OrderQueueStation.create({station_name: "K3", is_active: true, printer_name: "Cashier", processing_items: JSON.generate(['01001','01002','01003','01004','02005','02006','02007','02008']), print_copy: true, cut_per_item: true, use_alternate_name: false, created_by: "SYSTEM DEFAULT"}) +order_queue_station2 = OrderQueueStation.create({station_name: "K2", is_active: false,printer_name: "Cashier", processing_items: JSON.generate(['02005','02006','02007','02008']), print_copy:true, cut_per_item: true, use_alternate_name: true, created_by: "SYSTEM DEFAULT"}) +zone_order_queue_station = OrderQueueStation.create({station_name: "K3", is_active: false, printer_name: "Cashier", processing_items: JSON.generate(['01001','01002','01003','01004','02005','02006','02007','02008']), print_copy: true, cut_per_item: true, use_alternate_name: false, created_by: "SYSTEM DEFAULT"}) # QueueStationZone zone_queue_station1 = OrderQueueProcessByZone.create({order_queue_station: order_queue_station1, zone: zone})