From a9c8eb4e93a775b8bddcab462e933dfdcce812af Mon Sep 17 00:00:00 2001 From: phyusin Date: Mon, 19 Mar 2018 11:35:43 +0630 Subject: [PATCH] check tax profile --- .../origami/addorders_controller.rb | 8 +-- .../origami/payments_controller.rb | 3 +- .../origami/request_bills_controller.rb | 2 +- .../origami/sale_edit_controller.rb | 18 +++++-- app/controllers/origami/void_controller.rb | 3 +- app/models/sale.rb | 52 +++++++++++-------- app/views/origami/home/show.html.erb | 2 +- app/views/origami/payments/show.html.erb | 4 +- app/views/origami/rooms/show.html.erb | 2 +- app/views/origami/sale_edit/edit.html.erb | 4 +- .../origami/table_invoices/show.html.erb | 4 +- config/routes.rb | 4 +- 12 files changed, 61 insertions(+), 45 deletions(-) diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb index 3a8dea9b..f5bb7d37 100755 --- a/app/controllers/origami/addorders_controller.rb +++ b/app/controllers/origami/addorders_controller.rb @@ -103,11 +103,11 @@ class Origami::AddordersController < BaseOrigamiController } # begin - if params[:order_source] == "quick_service" - customer_id = "CUS-000000000002" # for no customer id from mobile - else + # if params[:order_source] == "quick_service" + # customer_id = "CUS-000000000002" # for no customer id from mobile + # else customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile - end + # end @order = Order.new @order.source = params[:order_source] @order.order_type = params[:order_type] diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 49320273..00ad4e4d 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -402,12 +402,13 @@ class Origami::PaymentsController < BaseOrigamiController member_info = nil rebate_amount = nil current_balance = nil + order_source = params[:type] if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) if saleObj.discount_type == "member_discount" saleObj.update_attributes(rounding_adjustment: 0) - saleObj.compute_by_sale_items(sale_id, saleObj.sale_items,0) + saleObj.compute_by_sale_items(sale_id, saleObj.sale_items,0,order_source) end saleObj.update_attributes(rounding_adjustment: 0) diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index aa145b4f..adfe35a6 100755 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -13,7 +13,7 @@ class Origami::RequestBillsController < ApplicationController if check_booking.sale_id.nil? # Create Sale if it doesn't exist - @status, @sale_id = @sale.generate_invoice_from_booking(check_booking.id,current_login_employee, current_user) + @status, @sale_id = @sale.generate_invoice_from_booking(check_booking.id,current_login_employee, current_user, order.source) @sale_data = Sale.find_by_sale_id(@sale_id) @sale_items = SaleItem.where("sale_id=?",@sale_id) else diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb index 72df82ac..1743f881 100755 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -76,11 +76,14 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_id) + order_id = SaleOrder.find_by_sale_id(saleitemObj.sale_id).order_id + order = Order.find(order_id) + action_by = current_user.id 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_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order.source) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end @@ -141,7 +144,7 @@ class Origami::SaleEditController < BaseOrigamiController end end - saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order.source) ProductCommission.edit_product_commission(saleitemObj) end @@ -162,17 +165,21 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_id) + order_id = SaleOrder.find_by_sale_id(saleitemObj.sale_id).order_id + order = Order.find(order_id) + action_by = current_user.id 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_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount, order.source) ProductCommission.remove_product_commission(saleitemObj) end # remove all void items def cancel_all_void sale_id = params[:sale_id] + order_source = params[:type] saleObj = Sale.find(sale_id) saleObj.sale_items.each do |item| if item.qty.to_i < 0 @@ -185,13 +192,14 @@ class Origami::SaleEditController < BaseOrigamiController end # re-calc tax - saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) + saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source) end def apply_void sale_id = params[:sale_id] + order_source = params[:type] saleObj = Sale.find(sale_id) - saleObj.compute_without_void + saleObj.compute_without_void(order_source) saleObj.sale_items.each do |item| ProductCommission.remove_product_commission(item) end diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb index 33ff0d76..00f9d76b 100755 --- a/app/controllers/origami/void_controller.rb +++ b/app/controllers/origami/void_controller.rb @@ -4,12 +4,13 @@ class Origami::VoidController < BaseOrigamiController sale_id = params[:sale_id] remark = params[:remark] + order_source = params[:type] #tax profile source if Sale.exists?(sale_id) sale = Sale.find_by_sale_id(sale_id) if sale.discount_type == "member_discount" sale.update_attributes(total_discount: 0) - sale.compute_by_sale_items(sale_id, sale.sale_items,0) + sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source) end # update count for shift sale diff --git a/app/models/sale.rb b/app/models/sale.rb index 5d46aafc..11ddd296 100755 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -26,7 +26,7 @@ class Sale < ApplicationRecord SALE_STATUS_OUTSTANDING = "outstanding" SALE_STATUS_COMPLETED = "completed" - def generate_invoice_from_booking(booking_id, requested_by, cashier) + def generate_invoice_from_booking(booking_id, requested_by, cashier, order_source = nil) booking = Booking.find(booking_id) status = false Rails.logger.debug "Booking -> " + booking.id.to_s @@ -36,9 +36,9 @@ class Sale < ApplicationRecord booking.booking_orders.each do |order| if booking.sale_id - status, sale_id = generate_invoice_from_order(order.order_id, nil, booking, requested_by, cashier) + status, sale_id = generate_invoice_from_order(order.order_id, nil, booking, requested_by, cashier, order_source) else - status, sale_id = generate_invoice_from_order(order.order_id, booking.sale_id, booking, requested_by, cashier) + status, sale_id = generate_invoice_from_order(order.order_id, booking.sale_id, booking, requested_by, cashier, order_source) end booking.sale_id = sale_id end @@ -58,7 +58,7 @@ class Sale < ApplicationRecord end end - def generate_invoice_from_order (order_id, sale_id, booking, requested_by, cashier = nil) + def generate_invoice_from_order (order_id, sale_id, booking, requested_by, cashier = nil, order_source = nil) taxable = true #if sale_id is exsit and validate #add order to that invoice @@ -128,7 +128,7 @@ class Sale < ApplicationRecord self.save! #compute sales summary - compute + compute(order_source) #Update the order items that is billed order.update_items_status_to_billed(nil) @@ -172,7 +172,7 @@ class Sale < ApplicationRecord # Create Sale if it doesn't exist # puts "current_login_employee" # puts current_login_employee.name - @status, @sale_id = @sale.generate_invoice_from_booking(check_booking.id,current_login_employee,current_user) + @status, @sale_id = @sale.generate_invoice_from_booking(check_booking.id,current_login_employee,current_user,order.source) @sale_data = Sale.find_by_sale_id(@sale_id) @sale_items = SaleItem.where("sale_id=?",@sale_id) else @@ -310,7 +310,7 @@ class Sale < ApplicationRecord end #compute - invoice total - def compute + def compute(order_source = nil) sales_items = self.sale_items #Computation Fields @@ -329,7 +329,7 @@ class Sale < ApplicationRecord # total_taxable = total_taxable + (item.taxable_price * item.qty) end - apply_tax (total_taxable) + apply_tax(total_taxable, order_source) self.total_amount = subtotal_price self.total_discount = total_discount @@ -342,7 +342,7 @@ class Sale < ApplicationRecord end #compute - invoice total - def compute_by_sale_items(sale_id, sale_itemss, total_discount,discount_type=nil) + def compute_by_sale_items(sale_id, sale_itemss, total_discount,discount_type=nil,order_source=nil) sale = Sale.find(sale_id) sales_items = sale_itemss @@ -362,7 +362,7 @@ class Sale < ApplicationRecord end end - compute_tax(sale, total_taxable, total_discount) + compute_tax(sale, total_taxable, total_discount, order_source) sale.total_amount = subtotal_price sale.total_discount = total_discount sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax @@ -376,7 +376,7 @@ class Sale < ApplicationRecord end # No Use too many wrong - def compute_without_void + def compute_without_void(order_source = nil) sales_items = self.sale_items #Computation Fields @@ -396,7 +396,7 @@ class Sale < ApplicationRecord end end - apply_tax (total_taxable) + apply_tax(total_taxable, order_source) self.total_amount = subtotal_price self.total_discount = total_discount self.grand_total = (self.total_amount - self.total_discount) + self.total_tax @@ -407,7 +407,7 @@ class Sale < ApplicationRecord end # Tax Re-Calculte - def compute_tax(sale, total_taxable, total_discount = 0) + def compute_tax(sale, total_taxable, total_discount = 0, order_source = nil) shop = Shop.first(); #if tax is not apply create new record @@ -423,8 +423,9 @@ class Sale < ApplicationRecord # #Creat new tax records if sale.payment_status != 'foc' tax_profiles.each do |tax| - customer.tax_profiles.each do |cus_tax| - if cus_tax.to_i == tax.id + # customer.tax_profiles.each do |cus_tax| + # if cus_tax.to_i == tax.id + if tax.group_type.to_s == order_source.to_s sale_tax = SaleTax.new(:sale => sale) sale_tax.tax_name = tax.name sale_tax.tax_rate = tax.rate @@ -447,15 +448,16 @@ class Sale < ApplicationRecord sale_tax.inclusive = tax.inclusive sale_tax.save - end end + # end + # end end end sale.total_tax = total_tax_amount end # Tax Calculate - def apply_tax(total_taxable) + def apply_tax(total_taxable, order_source = nil) shop = Shop.first(); #if tax is not apply create new record @@ -469,11 +471,14 @@ class Sale < ApplicationRecord tax_profiles = TaxProfile.all.order("order_by asc") customer = Customer.find(self.customer_id) - + if order_source.to_s == "emenu" + order_source = "cashier" + end #Create new tax records tax_profiles.each do |tax| - customer.tax_profiles.each do |cus_tax| - if cus_tax.to_i == tax.id + # customer.tax_profiles.each do |cus_tax| + # if cus_tax.to_i == tax.id + if tax.group_type.to_s == order_source.to_s sale_tax = SaleTax.new(:sale => self) sale_tax.tax_name = tax.name sale_tax.tax_rate = tax.rate @@ -497,8 +502,9 @@ class Sale < ApplicationRecord sale_tax.inclusive = tax.inclusive sale_tax.save - end end + # end + # end end self.total_tax = total_tax_amount end @@ -1963,7 +1969,7 @@ end end # Re-compute for add - saleobj.compute + saleobj.compute(order.source) saleobj.save order.save booking.save @@ -1993,7 +1999,7 @@ end end # Re-compute for add - saleobj.compute + saleobj.compute(order.source) saleobj.save order.save booking.save diff --git a/app/views/origami/home/show.html.erb b/app/views/origami/home/show.html.erb index 54b0e956..ffbf1e4c 100755 --- a/app/views/origami/home/show.html.erb +++ b/app/views/origami/home/show.html.erb @@ -905,7 +905,7 @@ }, function (isConfirm) { if (isConfirm) { var sale_id = "<%= @obj_sale.sale_id rescue "" %>" - var ajax_url = "/origami/sale/" + sale_id + '/void'; + var ajax_url = "/origami/sale/" + sale_id + '/cashier/void'; var remark = $("#remark").val(); $.ajax({ diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index 2deb9c0c..a5449d35 100755 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -691,7 +691,7 @@ var customer_name = "<%= @customer.name %>"; if (isConfirm) { var sale_id = $('#sale_id').text(); var remark = $("#remark").val(); - var ajax_url = "/origami/sale/" + sale_id + '/void'; + var ajax_url = "/origami/sale/" + sale_id +'/'+cashier_type+ '/void'; $.ajax({ type: 'POST', url: ajax_url, @@ -897,7 +897,7 @@ var customer_name = "<%= @customer.name %>"; if (isConfirm) { $.ajax({ type: "POST", - url: "<%= origami_payment_foc_path %>", + url: "/origami/payment/"+cashier_type+"/foc", data: params, success:function(result){ customer_display_view(null,"reload"); diff --git a/app/views/origami/rooms/show.html.erb b/app/views/origami/rooms/show.html.erb index d98a3fe2..758a5273 100755 --- a/app/views/origami/rooms/show.html.erb +++ b/app/views/origami/rooms/show.html.erb @@ -889,7 +889,7 @@ $('#add_invoice').on('click',function(){ var sure = confirm("Are you sure want to Void"); if (sure == true) { var sale_id = $('#sale_id').val(); - var ajax_url = "/origami/sale/" + sale_id + '/void'; + var ajax_url = "/origami/sale/" + sale_id + '/cashier/void'; $.ajax({ type: 'POST', url: ajax_url, diff --git a/app/views/origami/sale_edit/edit.html.erb b/app/views/origami/sale_edit/edit.html.erb index 745286d3..ff203657 100755 --- a/app/views/origami/sale_edit/edit.html.erb +++ b/app/views/origami/sale_edit/edit.html.erb @@ -331,7 +331,7 @@ var cashier_type = "<%= @cashier_type %>"; $.ajax({ type: "POST", url: ajax_url, - data: 'sale_id=' + sale_id, + data: 'sale_id=' + sale_id +'&type='+cashier_type, success: function (result) { location.reload(); } @@ -345,7 +345,7 @@ var cashier_type = "<%= @cashier_type %>"; $.ajax({ type: "POST", url: ajax_url, - data: 'sale_id=' + sale_id, + data: 'sale_id=' + sale_id+'&type='+cashier_type, success: function (result) { if (cashier_type=="quick_service") { window.location.href = '/origami/sale/'+sale_id+'/'+cashier_type+'/payment/'; diff --git a/app/views/origami/table_invoices/show.html.erb b/app/views/origami/table_invoices/show.html.erb index 515973f1..216e5eea 100644 --- a/app/views/origami/table_invoices/show.html.erb +++ b/app/views/origami/table_invoices/show.html.erb @@ -261,7 +261,7 @@ $('#void').on('click',function () { if (isConfirm) { var sale_id = $('#sale_id').val(); var remark = $("#remark").val(); - var ajax_url = "/origami/sale/" + sale_id + '/void'; + var ajax_url = "/origami/sale/" + sale_id + '/cashier/void'; $.ajax({ type: 'POST', url: ajax_url, @@ -291,7 +291,7 @@ $('#foc').click(function() { if ($(this).attr('active')=== "true") { $.ajax({ type: "POST", - url: "<%= origami_payment_foc_path %>", + url: "/origami/payment/cashier/foc", data: params, success:function(result){ if (cash >= 0) { diff --git a/config/routes.rb b/config/routes.rb index b51baca3..34020dee 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -170,7 +170,7 @@ scope "(:locale)", locale: /en|mm/ do get 'sale/:sale_id/:type/payment' => 'payments#show' post 'sale/:sale_id/:type/payment/print' => 'payments#print' #route for print receipt - post 'payment/foc' => 'payments#foc', :defaults => {:format => 'json'} + post 'payment/:type/foc' => 'payments#foc', :defaults => {:format => 'json'} post 'payment/cash' => 'payments#create' post 'payment/mpu' => "mpu#create" post 'payment/jcb' => "jcb#create" @@ -192,7 +192,7 @@ scope "(:locale)", locale: /en|mm/ do get 'sale/:sale_id/:type/payment/others_payment/Voucher' => "voucher#index" #---------Void --------------# - post 'sale/:sale_id/void' => 'void#overall_void' + post 'sale/:sale_id/:type/void' => 'void#overall_void' #---------Multiple Invoices --------------# get 'table/:table_id/table_invoices' => "table_invoices#index", :as => "table_invoice_index"