diff --git a/app/controllers/api/void_controller.rb b/app/controllers/api/void_controller.rb index ab5d87f0..80bda5fa 100644 --- a/app/controllers/api/void_controller.rb +++ b/app/controllers/api/void_controller.rb @@ -8,7 +8,7 @@ class Api::VoidController < Api::ApiController if sale.discount_type == "member_discount" sale.update_attributes(total_discount: 0) - sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source) + sale.compute_by_sale_items(0, nil, order_source) end # update count for shift sale @@ -25,18 +25,17 @@ class Api::VoidController < Api::ApiController shift.save end end - + sale.rounding_adjustment = 0.0 sale.payment_status = 'void' sale.sale_status = 'void' sale.save - + # remark = "Void Sale ID #{sale_id} | Receipt No #{sale.receipt_no} | Receipt No #{sale.receipt_no} | Table ->#{table.name}" sale_audit = SaleAudit.record_audit_for_edit(sale_id,current_login_employee.name, current_login_employee.name,nil,"SALEVOID" ) render json: JSON.generate({:status => true, :message => "Void successful."}) else render json: JSON.generate({:status => false, :error_message => "There is no sale for '#{params[:sale_id]}'!"}) end - end + end end - diff --git a/app/controllers/origami/customers_controller.rb b/app/controllers/origami/customers_controller.rb index d5e6b524..97f35339 100644 --- a/app/controllers/origami/customers_controller.rb +++ b/app/controllers/origami/customers_controller.rb @@ -48,44 +48,44 @@ class Origami::CustomersController < BaseOrigamiController def add_customer @webview = false if check_mobile - @webview = true + @webview = true end - + @sale_id = params[:sale_id] @cashier_type = params[:type] @page = params[:dir_page] - + if(@sale_id[0,3] == "SAL") @booking = Booking.find_by_sale_id(@sale_id) if @booking.dining_facility_id.to_i > 0 @dining_facility = DiningFacility.find(@booking.dining_facility_id) else - @dining_facility = nil + @dining_facility = nil end - + else @booking_order = BookingOrder.find_by_order_id(@sale_id) @booking = Booking.find(@booking_order.booking_id) if @booking.dining_facility_id.to_i > 0 @dining_facility = DiningFacility.find(@booking.dining_facility_id) else - @dining_facility = nil + @dining_facility = nil end - end + end filter = params[:filter] - + if filter.nil? @crm_customers = Customer.order("customer_id") #.page(params[:page]) #@products = Product.order("name").page(params[:page]).per(5) else - @crm_customers = Customer.search(filter) + @crm_customers = Customer.search(filter) end #@crm_customers = Customer.all @crm_customers = Kaminari.paginate_array(@crm_customers).page(params[:page]).per(20) @crm_customer = Customer.new @count_customer = Customer.count_customer - + # @taxes = TaxProfile.where(:group_type => 'cashier') @taxes = TaxProfile.unscoped.select("id, (CONCAT(name,'(',(SELECT name FROM lookups WHERE lookup_type='tax_profiles' AND value=group_type),')')) as name") .order("group_type ASC,order_by ASC") @@ -100,7 +100,7 @@ class Origami::CustomersController < BaseOrigamiController lookup_customer = Lookup.collection_of('customer_settings') if !lookup_customer.empty? lookup_customer.each do |create_setting| - if create_setting[0].downcase == "create" + if create_setting[0].downcase == "create" if create_setting[1] == '0' && current_login_employee.role == 'cashier' @create_flag = false end @@ -154,13 +154,13 @@ class Origami::CustomersController < BaseOrigamiController if status == true render json: JSON.generate({:status => true}) if(id == "SAL") - sale.compute_by_sale_items(sale.sale_id, sale.sale_items, sale.total_discount, nil, order_source) - end + sale.compute_by_sale_items(sale.total_discount, nil, order_source) + end else render json: JSON.generate({:status => false, :error_message => "Record not found"}) end end - + def send_account amount = params[:amount] account_no = params[:account_no] diff --git a/app/controllers/origami/discounts_controller.rb b/app/controllers/origami/discounts_controller.rb index 827d26c7..6f4690f0 100755 --- a/app/controllers/origami/discounts_controller.rb +++ b/app/controllers/origami/discounts_controller.rb @@ -33,7 +33,6 @@ class Origami::DiscountsController < BaseOrigamiController overall_discount = params[:overall_discount] sub_total = params[:sub_total] - if Sale.exists?(sale_id) sale = Sale.find(sale_id) if sale.bookings[0].dining_facility_id.to_i > 0 @@ -88,7 +87,7 @@ class Origami::DiscountsController < BaseOrigamiController remark = "Discount Item Name ->#{sale_item.product_name}-Product Code ->#{sale_item.product_code} | Price [#{sale_item.price}] | Receipt No #{sale.receipt_no} " sale_audit = SaleAudit.record_audit_discount(sale_item.sale_id,sale.cashier_name, action_by,remark,"ITEMDISCOUNT" ) - + end end @@ -103,7 +102,7 @@ class Origami::DiscountsController < BaseOrigamiController sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_name, action_by,remark,"OVERALLDISCOUNT" ) end - sale.compute_by_sale_items(sale_id, sale.sale_items, overall_discount.to_f, nil,order_source) + sale.compute_by_sale_items(overall_discount.to_f, nil,order_source) if !table.nil? result = {:status=> "Success", :table_id => table_id, :table_type => table.type } else @@ -158,7 +157,7 @@ class Origami::DiscountsController < BaseOrigamiController # sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax; # sale.save # Re-calc All Amount in Sale - sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount, nil, order_source) + sale.compute_by_sale_items(sale.total_discount, nil, order_source) if table.nil? result = {:status=> "Success"} else @@ -220,7 +219,7 @@ class Origami::DiscountsController < BaseOrigamiController sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_name, action_by,remark,"REMOVEALLDISCOUNT" ) # Re-calc All Amount in Sale - sale.compute_by_sale_items(sale_id, sale.sale_items, 0, nil, order_source) + sale.compute_by_sale_items(0, nil, order_source) if table.nil? result = {:status=> "Success"} else @@ -321,7 +320,7 @@ class Origami::DiscountsController < BaseOrigamiController if response["discount_bonus_earned"] discount_amount = discount_amount + response["discount_bonus_earned"] end - sale.compute_by_sale_items(sale_id, sale.sale_items, discount_amount, 'member_discount', order_source, tax_type) + sale.compute_by_sale_items(discount_amount, 'member_discount', order_source, tax_type) result = {:status=> "Success",:title=>"Member Discount", :table_id => table_id,:table_type => table_type } elsif response["status"] == "500" result = {:status=> response["error"],:title=>"Alert", :table_id => table_id,:table_type => table_type } diff --git a/app/controllers/origami/other_charges_controller.rb b/app/controllers/origami/other_charges_controller.rb index 36fbffb8..fbcd2ec1 100755 --- a/app/controllers/origami/other_charges_controller.rb +++ b/app/controllers/origami/other_charges_controller.rb @@ -4,9 +4,9 @@ class Origami::OtherChargesController < BaseOrigamiController def index @webview = false if check_mobile - @webview = true + @webview = true end - + sale_id = params[:sale_id] @cashier_type = params[:type] if Sale.exists?(sale_id) @@ -15,11 +15,11 @@ class Origami::OtherChargesController < BaseOrigamiController @table = DiningFacility.find(@sale_data.bookings[0].dining_facility_id) else @table = nil - end + end end end - def create + def create sale_id = params[:sale_id] other_charges_items = JSON.parse(params[:other_charges_items]) sub_total = params[:sub_total] @@ -34,11 +34,11 @@ class Origami::OtherChargesController < BaseOrigamiController table_id = nil table = nil end - + # sale.total_amount = sub_total.to_f - # sale.grand_total = sub_total.to_f + sale.total_tax; - # sale.save + # sale.grand_total = sub_total.to_f + sale.total_tax; + # sale.save if other_charges_items.length > 0 #save sale item for discount other_charges_items.each do |di| @@ -68,18 +68,18 @@ class Origami::OtherChargesController < BaseOrigamiController else remark = "Add Other Charges - Receipt No #{sale.receipt_no} | Sale ID #{sale.sale_id} |Charges ->#{di["price"]} For ->#{di["name"]}- Table ->#{table.name}" end - + sale_audit = SaleAudit.record_audit_for_edit(sale.sale_id,sale.cashier_name, action_by,remark,"ADDOTHERCHARGES" ) - end - end + end + end # Re-calc All Amount in Sale - sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount, nil, cashier_type) - end + sale.compute_by_sale_items(sale.total_discount, nil, cashier_type) + end if !table.nil? dining = {:table_id => table_id, :table_type => table.type } render :json => dining.to_json - end - end -end \ No newline at end of file + end + end +end diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 7d71941b..c6c61602 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -643,7 +643,7 @@ class Origami::PaymentsController < BaseOrigamiController if saleObj.discount_type == "member_discount" saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0) - saleObj.compute_by_sale_items(sale_id, saleObj.sale_items,0,order_source) + saleObj.compute_by_sale_items(0, nil, order_source) end saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0) @@ -818,7 +818,7 @@ class Origami::PaymentsController < BaseOrigamiController order_source = params[:cashier_type] tax_type = params[:tax_type] sale = Sale.find(sale_id) - sale.compute_by_sale_items(sale.sale_id, sale.sale_items, sale.total_discount,nil,order_source,tax_type) + sale.compute_by_sale_items(sale.total_discount, nil, order_source, tax_type) render json: JSON.generate({:status => true}) end diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb index d537f8e9..7f456f35 100755 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -59,7 +59,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,current_user.name, action_by,remark,"SALEITEMVOID" ) - saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source) + saleObj.compute_by_sale_items(saleObj.total_discount, nil, order_source) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end @@ -95,7 +95,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,current_user.name, action_by,remark,"SALEITEMFOC" ) - saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source) + saleObj.compute_by_sale_items(saleObj.total_discount, nil, order_source) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end @@ -150,10 +150,10 @@ class Origami::SaleEditController < BaseOrigamiController saleitemObj.save # re-calc tax - saleObj = Sale.find(saleitemObj.sale_id) + # saleObj = Sale.find(saleitemObj.sale_id) - order_id = SaleOrder.find_by_sale_id(saleitemObj.sale_id).order_id - order = Order.find(order_id) + # order_id = SaleOrder.find_by_sale_id(saleitemObj.sale_id).order_id + # order = Order.find(order_id) # order.order_items.each do |o| # if saleitemObj.product_code == o.item_code @@ -163,7 +163,7 @@ class Origami::SaleEditController < BaseOrigamiController # end # end - saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source) + sale.compute_by_sale_items(saleObj.total_discount, nil, order_source) ProductCommission.edit_product_commission(saleitemObj) end @@ -195,8 +195,8 @@ class Origami::SaleEditController < BaseOrigamiController end 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,current_user.name, action_by,remark,"ITEMCANCELVOID" ) - - saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount, order_source) + + saleObj.compute_by_sale_items(saleObj.total_discount, nil, order_source) ProductCommission.remove_product_commission(saleitemObj) end @@ -214,9 +214,9 @@ class Origami::SaleEditController < BaseOrigamiController item.save ProductCommission.remove_product_commission(item) end - + saleObj.sale_items.reset # re-calc tax - saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source) + saleObj.compute_by_sale_items(saleObj.total_discount,nil, order_source) end def apply_void diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb index 6af6c275..5352b7c3 100755 --- a/app/controllers/origami/void_controller.rb +++ b/app/controllers/origami/void_controller.rb @@ -10,7 +10,7 @@ class Origami::VoidController < BaseOrigamiController 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,order_source) + sale.compute_by_sale_items(0, nil, order_source) end # update count for shift sale diff --git a/app/controllers/origami/waste_spoile_controller.rb b/app/controllers/origami/waste_spoile_controller.rb index 2d4c9367..6a68a2b9 100755 --- a/app/controllers/origami/waste_spoile_controller.rb +++ b/app/controllers/origami/waste_spoile_controller.rb @@ -15,7 +15,6 @@ class Origami::WasteSpoileController < BaseOrigamiController sale.sale_status = remark sale.save - # sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source) # add to sale item with foc # sale_items = SaleItem.where("sale_id='#{ sale_id }' and status is null") diff --git a/app/controllers/transactions/sales_controller.rb b/app/controllers/transactions/sales_controller.rb index e8a2d9e4..83efc401 100755 --- a/app/controllers/transactions/sales_controller.rb +++ b/app/controllers/transactions/sales_controller.rb @@ -6,7 +6,7 @@ class Transactions::SalesController < ApplicationController # GET /transactions/sales # GET /transactions/sales.json def index - + receipt_no = params[:receipt_no] # from = params[:from] # to = params[:to] @@ -19,18 +19,18 @@ class Transactions::SalesController < ApplicationController if receipt_no.nil? && from.nil? && to.nil? if @shift.blank? @sales = Sale.where("NOT sale_status='new'").order("sale_id desc") - else + else @sales = Sale.where("NOT sale_status='new' and shift_sale_id ='#{@shift.id}'").order("sale_id desc") end @sales = Kaminari.paginate_array(@sales).page(params[:page]).per(20) else sale = Sale.search(receipt_no,from,to,@shift) if sale.count > 0 - @sales = sale + @sales = sale @sales = Kaminari.paginate_array(@sales).page(params[:page]).per(20) else @sales = 0 - end + end end @receipt_no = receipt_no @from = from @@ -41,20 +41,20 @@ class Transactions::SalesController < ApplicationController @shift_to = @shift.shift_closed_at.nil? ? '-' : @shift.shift_closed_at.utc.getlocal.strftime("%e %b %I:%M%p") @shift_data = @shift end - + # if receipt_no.nil? && search_date.nil? - # @sales = Sale.where("NOT sale_status = 'void' " ).order("sale_id desc").limit(500) + # @sales = Sale.where("NOT sale_status = 'void' " ).order("sale_id desc").limit(500) # @sales = Kaminari.paginate_array(@sales).page(params[:page]).per(50) # else - # if !search_date.blank? && receipt_no.blank? + # if !search_date.blank? && receipt_no.blank? # sale = Sale.where("DATE_FORMAT(receipt_date,'%d-%m-%Y') = ? and NOT sale_status = 'void' ", search_date).order("sale_id desc").limit(500).page(params[:page]) - # elsif !search_date.blank? && !receipt_no.blank? + # elsif !search_date.blank? && !receipt_no.blank? # sale = Sale.where("receipt_no LIKE ? or DATE_FORMAT(receipt_date,'%d-%m-%Y') = ? and NOT sale_status = 'void' ", "%#{receipt_no}%", search_date).order("sale_id desc").limit(500).page(params[:page]) - # else - # sale = Sale.where("receipt_no LIKE ? and NOT sale_status = 'void' ", receipt_no).order("sale_id desc").limit(500).page(params[:page]) - # end + # else + # sale = Sale.where("receipt_no LIKE ? and NOT sale_status = 'void' ", receipt_no).order("sale_id desc").limit(500).page(params[:page]) + # end # if sale.count > 0 - # @sales = sale + # @sales = sale # @sales = Kaminari.paginate_array(@sales).page(params[:page]).per(50) # else # @sales = 0 @@ -182,7 +182,7 @@ class Transactions::SalesController < ApplicationController period_type = params[:period_type] period = params[:period] from = params[:from] - to = params[:to] + to = params[:to] day_ref = Time.now.utc.getlocal if from.present? && to.present? @@ -191,8 +191,8 @@ class Transactions::SalesController < ApplicationController f_time = Time.mktime(f_date.year,f_date.month,f_date.day,f_date.hour,f_date.min,f_date.sec) t_time = Time.mktime(t_date.year,t_date.month,t_date.day,t_date.hour,t_date.min,t_date.sec) from = f_time.beginning_of_day.utc.getlocal - to = t_time.end_of_day.utc.getlocal - else + to = t_time.end_of_day.utc.getlocal + else case period.to_i when PERIOD["today"] from = day_ref.beginning_of_day.utc @@ -226,10 +226,10 @@ class Transactions::SalesController < ApplicationController when PERIOD["last_year"] from = (day_ref - 1.year).beginning_of_year.utc to = (day_ref - 1.year).end_of_year.utc - end + end end - return from, to + return from, to end def check_user @@ -248,7 +248,7 @@ class Transactions::SalesController < ApplicationController if sale.discount_type == "member_discount" sale.update_attributes(total_discount: 0) - sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source) + sale.compute_by_sale_items(0, nil, order_source) end # update count for shift sale @@ -265,7 +265,7 @@ class Transactions::SalesController < ApplicationController shift.save end end - + sale.rounding_adjustment = 0.0 sale.payment_status = 'void' sale.sale_status = 'void' @@ -308,16 +308,16 @@ class Transactions::SalesController < ApplicationController table = nil end - # FOr Sale Audit + # FOr Sale Audit action_by = current_user.name if access_code != "null" && current_user.role == "cashier" action_by = Employee.find_by_emp_id(access_code).name end - + # remark = "Void Sale ID #{sale_id} | Receipt No #{sale.receipt_no} | Receipt No #{sale.receipt_no} | Table ->#{table.name}" sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, action_by,remark,"SALEVOID" ) - # For Print + # For Print member_info = nil rebate_amount = nil @@ -325,7 +325,7 @@ class Transactions::SalesController < ApplicationController # For Cashier by Zone bookings = Booking.where("sale_id='#{sale_id}'") - if bookings.count > 1 + if bookings.count > 1 # for Multiple Booking if bookings[0].dining_facility_id.to_i>0 table = DiningFacility.find(bookings[0].dining_facility_id) @@ -339,12 +339,12 @@ class Transactions::SalesController < ApplicationController shift = ShiftSale.find(sale.shift_sale_id) cashier_terminal = CashierTerminal.find(shift.cashier_terminal_id) end - + # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server unique_code = "ReceiptBillPdf" customer= Customer.find(sale.customer_id) - + #shop detail shop_details = Shop.find_by_id(1) # get member information @@ -363,31 +363,31 @@ class Transactions::SalesController < ApplicationController discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale.sale_items) other_amount = SaleItem.calculate_other_charges(sale.sale_items) #other charges - printer = Printer::ReceiptPrinter.new(print_settings) - filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings, false, nil,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil,other_amount,nil,nil,nil) - result = { - :filepath => filename, - :printer_model => print_settings.brand_name, - :printer_url => print_settings.api_settings + printer = Printer::ReceiptPrinter.new(print_settings) + filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings, false, nil,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil,other_amount,nil,nil,nil) + result = { + :filepath => filename, + :printer_model => print_settings.brand_name, + :printer_url => print_settings.api_settings } # Mobile Print render :json => result.to_json # end - + #end print # update complete order items in oqs - SaleOrder.where("sale_id = '#{ sale_id }'").find_each do |sodr| + SaleOrder.where("sale_id = '#{ sale_id }'").find_each do |sodr| AssignedOrderItem.where("order_id = '#{ sodr.order_id }'").find_each do |aoi| aoi.delivery_status = 1 aoi.save end end end - end + end + - private # Use callbacks to share common setup or constraints between actions. def set_transactions_sale diff --git a/app/models/promotion.rb b/app/models/promotion.rb index 0fa2b3e9..6d5a7039 100755 --- a/app/models/promotion.rb +++ b/app/models/promotion.rb @@ -109,7 +109,7 @@ class Promotion < ApplicationRecord item = saleObj.order_items.where(item_instance_code: promo_product).first if !item.nil? - update_existing_item(foc_qty, item, sale_id, "promotion", item[:price], source) + update_existing_item(foc_qty, item, saleObj, "promotion", item[:price], source) end end # AA - 10 # 3 # BB # orderList, #S34345 @@ -128,7 +128,7 @@ class Promotion < ApplicationRecord item = saleObj.order_items.where(item_instance_code: promo_product).first if !item.nil? - update_existing_item(promotion_qty, item, sale_id, "promotion", item[:price],source) + update_existing_item(promotion_qty, item, saleObj, "promotion", item[:price],source) end end @@ -157,8 +157,9 @@ class Promotion < ApplicationRecord sale_item.is_taxable = 1 sale_item.sale = saleObj sale_item.save - - saleObj.compute_by_sale_items(saleObj.id, saleObj.sale_items, saleObj.total_discount,nil,source) + + saleObj.sale_items << sale_item + saleObj.compute_by_sale_items(saleObj.total_discount, nil, source) end end @@ -180,7 +181,7 @@ class Promotion < ApplicationRecord item = saleObj.order_items.where(item_instance_code: promo_product.item_code).first if !item.nil? - update_existing_item(foc_qty, item, sale_id, "promotion nett off", promo_product.net_off,source) + update_existing_item(foc_qty, item, saleObj, "promotion nett off", promo_product.net_off,source) end end diff --git a/app/models/sale.rb b/app/models/sale.rb index d23295d7..82ccff3d 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -361,8 +361,8 @@ class Sale < ApplicationRecord sale_item.save # Re-calc - sale = Sale.find(self.id) - self.compute_by_sale_items(self.id, sale.sale_items, self.total_discount, nil, order_source) + self.sale_items << sale_item + self.compute_by_sale_items(self.total_discount, nil, order_source) end def create_saleitem_indutycharges(chargeObj, current_checkin_induties_count, induties_pay_amount, dining_name, dining_time, order_source = nil, basic_pay_amount) sale_item = SaleItem.new @@ -380,8 +380,8 @@ class Sale < ApplicationRecord sale_item.price = induties_pay_amount sale_item.save # Re-calc - sale = Sale.find(self.id) - self.compute_by_sale_items(self.id, sale.sale_items, self.total_discount, nil, order_source) + self.sale_items << sale_item + self.compute_by_sale_items(self.total_discount, nil, order_source) end def update_item (item) #save sale_audit @@ -403,14 +403,12 @@ class Sale < ApplicationRecord #compute - invoice total def compute(order_source = nil, tax_type = nil) - sales_items = self.sale_items - #Computation Fields subtotal_price = 0 total_taxable = 0 rounding_adjustment = 0 - sales_items.each do |item| + self.sale_items.each do |item| #compute each item and added to total subtotal_price = subtotal_price + item.price @@ -429,60 +427,54 @@ class Sale < ApplicationRecord # self.grand_total_round #compute rounding adjustment # adjust_rounding - self.save! - end #compute - invoice total - def compute_by_sale_items(sale_id, sale_itemss, total_discount,discount_type=nil,order_source=nil,tax_type=nil,type=nil) + def compute_by_sale_items(total_discount, discount_type=nil, order_source=nil, tax_type=nil, type=nil) shop = Shop.first - sale = Sale.find(sale_id) - sales_items = sale_itemss #Computation Fields subtotal_price = 0 total_taxable = 0 rounding_adjustment = 0 - sales_items.each do |item| + self.sale_items.each do |item| #compute each item and added to total - subtotal_price = subtotal_price + item.price + subtotal_price = subtotal_price + item.price # 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, order_source, tax_type) - sale.total_amount = subtotal_price - sale.total_discount = total_discount + + compute_tax(total_taxable, total_discount, order_source, tax_type) + self.total_amount = subtotal_price + self.total_discount = total_discount if type =="foc" - sale.grand_total = 0 + self.grand_total = 0 else - sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax + self.grand_total = (self.total_amount - self.total_discount) + self.total_tax # sale.grand_total_round end if discount_type == "member_discount" - sale.discount_type = discount_type + self.discount_type = discount_type end #compute rounding adjustment # adjust_rounding - - sale.save! + self.save! end # No Use too many wrong def compute_without_void(order_source = nil) - sales_items = self.sale_items - #Computation Fields subtotal_price = 0 total_taxable = 0 rounding_adjustment = 0 - sales_items.each do |item| + self.sale_items.each do |item| if item.status != 'void' && item.status != 'foc' #compute each item and added to total subtotal_price = subtotal_price + item.price @@ -506,7 +498,7 @@ class Sale < ApplicationRecord end # Tax Re-Calculte - def compute_tax(sale, total_taxable, total_discount = 0, order_source = nil, tax_type=nil) + def compute_tax(total_taxable, total_discount = 0, order_source = nil, tax_type=nil) shop = Shop.first #if tax is not apply create new record @@ -529,9 +521,9 @@ class Sale < ApplicationRecord tax_profiles = unique_tax_profiles(order_source, self.customer_id) # #Creat new tax records - if sale.payment_status != 'foc' + if self.payment_status != 'foc' tax_profiles.each do |tax| - sale_tax = SaleTax.new(:sale => sale) + sale_tax = SaleTax.new(:sale => self) sale_tax.tax_name = tax.name sale_tax.tax_rate = tax.rate @@ -555,8 +547,8 @@ class Sale < ApplicationRecord sale_tax.save end end - sale.tax_type = tax_incl_exec - sale.total_tax = total_tax_amount + self.tax_type = tax_incl_exec + self.total_tax = total_tax_amount end # Tax Calculate diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb index 8e4370c0..9a8c3d87 100755 --- a/app/models/sale_item.rb +++ b/app/models/sale_item.rb @@ -89,7 +89,7 @@ class SaleItem < ApplicationRecord # sale_item.save if type != "foc" sale = Sale.find(sale_id) - sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount) + sale.compute_by_sale_items(sale.total_discount) end end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 2e1700f8..5a1fdb72 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -419,7 +419,7 @@ class SalePayment < ApplicationRecord SaleItem.update_existing_item(item.qty, item, self.sale.sale_id, "foc", item.unit_price, item.price) end sale = Sale.find(self.sale.sale_id) - sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount,'','','',"foc") + sale.compute_by_sale_items(sale.total_discount,'','','',"foc") self.payment_method = "foc" self.payment_amount = self.received_amount