diff --git a/Gemfile b/Gemfile index 5acabbbb..b59fd475 100755 --- a/Gemfile +++ b/Gemfile @@ -55,7 +55,8 @@ gem 'to_xls-rails' gem 'jquery-rails' gem 'jquery-ui-rails' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks -gem 'turbolinks', '~> 5' +gem 'turbolinks' +gem 'jquery-turbolinks', '~> 2.1' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.5' # Use Redis adapter to run Action Cable in production diff --git a/Gemfile.lock b/Gemfile.lock index 4401ae9e..99c2db6a 100755 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -87,6 +87,9 @@ GEM rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) + jquery-turbolinks (2.1.0) + railties (>= 3.1.0) + turbolinks jquery-ui-rails (6.0.1) railties (>= 3.2.16) kaminari (1.0.1) @@ -263,6 +266,7 @@ DEPENDENCIES httparty (~> 0.15.5) jbuilder (~> 2.5) jquery-rails + jquery-turbolinks (~> 2.1) jquery-ui-rails kaminari (~> 1.0.1) listen (~> 3.0.5) @@ -287,7 +291,7 @@ DEPENDENCIES spring-watcher-listen (~> 2.0.0) tether-rails to_xls-rails - turbolinks (~> 5) + turbolinks tzinfo-data uglifier (>= 1.3.0) web-console (>= 3.3.0) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 050231d3..296d51c7 100755 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -11,12 +11,13 @@ // about supported directives. // //= require jquery +//= require jquery.turbolinks +//= require jquery_ujs +//= require turbolinks //= require tether //= require bootstrap/js/popper.min //= require bootstrap/js/bootstrap-material-design.min //= require jquery_nested_form -//= require jquery_ujs -//= require turbolinks //= require cable //= require settings/processing_items //= require momentjs/moment @@ -37,6 +38,7 @@ //= require BSBMaterial/demo.js //= require custom.js + $(document).on('turbolinks:load', function() { $('.datetimepicker').bootstrapMaterialDatePicker({ format: 'DD-MM-YYYY - HH:mm', diff --git a/app/assets/javascripts/custom.js b/app/assets/javascripts/custom.js index 0a089be7..0bedd12a 100644 --- a/app/assets/javascripts/custom.js +++ b/app/assets/javascripts/custom.js @@ -25,6 +25,8 @@ $(document).on('turbolinks:load', function() { var method = $(this).attr('data-method'); var url = $(this).attr('data-ref'); var html_text = $(this).siblings( "#delete_text" ).html(); + //var page = url.substring(url.lastIndexOf('/') + 1); + console.log(location.href); swal({ title: "Confirmation", text: html_text, diff --git a/app/controllers/base_origami_controller.rb b/app/controllers/base_origami_controller.rb index a3142197..979fdf02 100755 --- a/app/controllers/base_origami_controller.rb +++ b/app/controllers/base_origami_controller.rb @@ -6,8 +6,6 @@ class BaseOrigamiController < ActionController::Base protect_from_forgery with: :exception rescue_from CanCan::AccessDenied do |exception| flash[:warning] = exception.message - puts "ssssssssssss" - puts flash redirect_to origami_root_path end diff --git a/app/controllers/origami/customers_controller.rb b/app/controllers/origami/customers_controller.rb index 72597613..6e275355 100755 --- a/app/controllers/origami/customers_controller.rb +++ b/app/controllers/origami/customers_controller.rb @@ -104,6 +104,10 @@ class Origami::CustomersController < BaseOrigamiController order = Order.find(sale_order.order_id) status = order.update_attributes(customer_id: customer_id,order_type:customer.customer_type) end + action_by = current_user.id + remark = "Assign Customer Receipt No #{sale.receipt_no} | Sale ID #{sale.sale_id} | Customer ID ->#{customer.customer_id}- Customer Name ->#{customer.name}" + sale_audit = SaleAudit.record_audit_for_edit(sale.sale_id,sale.cashier_id, action_by,remark,"ASSIGNCUSTOMER" ) + else @booking = BookingOrder.find_by_order_id(params[:sale_id]) @orders = BookingOrder.where("booking_id = ? ", @booking.booking_id) diff --git a/app/controllers/origami/discounts_controller.rb b/app/controllers/origami/discounts_controller.rb index 8fddfa0f..44ddd60e 100755 --- a/app/controllers/origami/discounts_controller.rb +++ b/app/controllers/origami/discounts_controller.rb @@ -21,7 +21,7 @@ class Origami::DiscountsController < BaseOrigamiController if Sale.exists?(sale_id) sale = Sale.find(sale_id) table_id = sale.bookings[0].dining_facility_id - table_type = DiningFacility.find(table_id).type + table = DiningFacility.find(table_id) # sale.total_discount = overall_discount.to_f # sale.total_amount = sub_total.to_f # sale.grand_total = (sub_total.to_f - overall_discount.to_f) + sale.total_tax; @@ -46,14 +46,24 @@ class Origami::DiscountsController < BaseOrigamiController sale_item.price = di["price"] sale_item.save + + action_by = current_user.id + 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_id, action_by,remark,"ITEMDISCOUNT" ) + end end # Re-calc All Amount in Sale + if overall_discount.to_f > 0 + action_by = current_user.id + remark = "Discount Overall Price [#{overall_discount}]| Receipt No #{sale.receipt_no} | Table- #{table.name} " + sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_id, action_by,remark,"OVERALLDISCOUNT" ) + end sale.compute_by_sale_items(sale_id, sale.sale_items, overall_discount.to_f) - result = {:status=> "Success", :table_id => table_id, :table_type => table_type } + result = {:status=> "Success", :table_id => table_id, :table_type => table.type } else - result = {:status=> "Please, Check Again!", :table_id => table_id, :table_type => table_type } + result = {:status=> "Please, Check Again!", :table_id => table_id, :table_type => table.type } end @@ -67,13 +77,18 @@ class Origami::DiscountsController < BaseOrigamiController if Sale.exists?(sale_id) sale = Sale.find(sale_id) table_id = sale.bookings[0].dining_facility_id - table_type = DiningFacility.find(table_id).type + table = DiningFacility.find(table_id) if discount_items.length > 0 #destroy sale item for discount discount_items.each do |di| sale_item = SaleItem.find(di["id"]) sale.total_amount = (sale.total_amount + sale_item.price.abs) + + action_by = current_user.id + remark = "Remove Item Discount Item Name ->#{sale_item.product_name}-Product Code ->#{sale_item.product_code} | Price [#{sale_item.price}] | Receipt No #{sale.receipt_no} | Table- #{table.name} " + sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_id, action_by,remark,"REMOVEITEMDISCOUNT" ) + sale_item.destroy end end @@ -82,9 +97,9 @@ class Origami::DiscountsController < BaseOrigamiController # sale.save # Re-calc All Amount in Sale sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount) - result = {:status=> "Success", :table_id => table_id, :table_type => table_type } + result = {:status=> "Success", :table_id => table_id, :table_type => table.type } else - result = {:status=> "Please, Check Again!", :table_id => table_id, :table_type => table_type } + result = {:status=> "Please, Check Again!", :table_id => table_id, :table_type => table.type } end render :json => result.to_json @@ -115,6 +130,10 @@ class Origami::DiscountsController < BaseOrigamiController #destroy in sale.sale_items sale.sale_items.destroy(discount_items) + action_by = current_user.id + remark = "Remove Discount Sale Id [#{sale.sale_id}]| Receipt No #{sale.receipt_no} | Table- #{table.name} " + sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_id, action_by,remark,"REMOVEALLDISCOUNT" ) + # Re-calc All Amount in Sale sale.compute_by_sale_items(sale_id, sale.sale_items, 0) result = {:status=> "Success", :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 b0e6472c..c402782d 100755 --- a/app/controllers/origami/other_charges_controller.rb +++ b/app/controllers/origami/other_charges_controller.rb @@ -16,7 +16,7 @@ class Origami::OtherChargesController < BaseOrigamiController if Sale.exists?(sale_id) sale = Sale.find(sale_id) table_id = sale.bookings[0].dining_facility_id - table_type = DiningFacility.find(table_id).type + table = DiningFacility.find(table_id) # sale.total_amount = sub_total.to_f # sale.grand_total = sub_total.to_f + sale.total_tax; @@ -41,6 +41,11 @@ class Origami::OtherChargesController < BaseOrigamiController sale_item.price = di["price"] sale_item.save + + action_by = current_user.id + remark = "Add Other Charges - Receipt No #{sale.receipt_no} | Sale ID #{sale.sale_id} |Charges ->#{di["price"]} For ->#{di["name"]}- Table ->#{table.name}" + sale_audit = SaleAudit.record_audit_for_edit(sale.sale_id,sale.cashier_id, action_by,remark,"ADDOTHERCHARGES" ) + end end @@ -48,7 +53,7 @@ class Origami::OtherChargesController < BaseOrigamiController sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount) end - dining = {:table_id => table_id, :table_type => table_type } + dining = {:table_id => table_id, :table_type => table.type } render :json => dining.to_json end end \ 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 314d46c8..963ddb45 100755 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -24,6 +24,11 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_id) + + action_by = current_user.id + 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 ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end @@ -44,6 +49,11 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_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_without_void ProductCommission.create_product_commission(@newsaleitem, saleitemObj) end @@ -73,11 +83,16 @@ class Origami::SaleEditController < BaseOrigamiController update_qty = params[:update_qty] update_price = params[:update_price] saleitemObj = SaleItem.find(saleitemId) + sale = Sale.find(saleitemObj.sale_id) saleitemObj.qty = update_qty saleitemObj.price = update_qty.to_f * update_price.to_f saleitemObj.unit_price = update_price saleitemObj.taxable_price = update_qty.to_f * update_price.to_f + + action_by = current_user.id + remark = "Update Qty #{update_qty} Price [#{saleitemObj.price}]| Receipt No #{sale.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,sale.cashier_id, action_by,remark,"SALEITEMEDIT" ) # saleitemObj.remark = 'edit' unless saleitemObj.product_name.include? 'updated' @@ -108,6 +123,11 @@ class Origami::SaleEditController < BaseOrigamiController # re-calc tax saleObj = Sale.find(saleitemObj.sale_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_without_void ProductCommission.remove_product_commission(saleitemObj) end diff --git a/app/controllers/origami/sales_controller.rb b/app/controllers/origami/sales_controller.rb index ceddcde7..3c895b91 100755 --- a/app/controllers/origami/sales_controller.rb +++ b/app/controllers/origami/sales_controller.rb @@ -1,4 +1,4 @@ -class Origami::SalesController < ApplicationController#BaseOrigamiController +class Origami::SalesController < BaseOrigamiController def show @tables = Table.all.active.order('status desc') @rooms = Room.all.active.order('status desc') diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb index 1cf1ec65..2ea211fa 100755 --- a/app/controllers/origami/void_controller.rb +++ b/app/controllers/origami/void_controller.rb @@ -40,6 +40,12 @@ class Origami::VoidController < BaseOrigamiController table.save end + # FOr Sale Audit + action_by = current_user.id + 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" ) + + # update complete order items in oqs SaleOrder.where("sale_id = '#{ sale_id }'").find_each do |sodr| AssignedOrderItem.where("order_id = '#{ sodr.order_id }'").find_each do |aoi| diff --git a/app/models/product_commission.rb b/app/models/product_commission.rb index 9b56e889..c865c674 100755 --- a/app/models/product_commission.rb +++ b/app/models/product_commission.rb @@ -38,16 +38,18 @@ class ProductCommission < ApplicationRecord commission = Commission.where('product_code = ? AND is_active = ?', menu_item.id, true).take product_commission = ProductCommission.where('sale_item_id = ?', saleItemObj.id).take - return if commission.nil? - product_commission.qty = saleItemObj.qty - if commission.commission_type == 'Percentage' - product_commission.price = saleItemObj.unit_price * (commission.amount / 100.0) - product_commission.amount = product_commission.price * saleItemObj.qty - elsif commission.commission_type == 'Net Amount' - product_commission.price = commission.amount - product_commission.amount = product_commission.price * saleItemObj.qty + if !product_commission.nil? + return if commission.nil? + product_commission.qty = saleItemObj.qty + if commission.commission_type == 'Percentage' + product_commission.price = saleItemObj.unit_price * (commission.amount / 100.0) + product_commission.amount = product_commission.price * saleItemObj.qty + elsif commission.commission_type == 'Net Amount' + product_commission.price = commission.amount + product_commission.amount = product_commission.price * saleItemObj.qty + end + product_commission.save end - product_commission.save puts 'Edit Product Commission Success' end diff --git a/app/models/sale_audit.rb b/app/models/sale_audit.rb index f8c38857..3129a4a5 100755 --- a/app/models/sale_audit.rb +++ b/app/models/sale_audit.rb @@ -30,11 +30,11 @@ class SaleAudit < ApplicationRecord sale_audit.save! end - def record_audit_discount(sale_id, discount_by, approved_by, reason) + def self.record_audit_discount(sale_id, discount_by, approved_by, reason,type) #sale_audit sale_audit = SaleAudit.new() sale_audit.sale_id = sale_id - sale_audit.action = "SALEDISCOUNT" + sale_audit.action = type sale_audit.action_at = DateTime.now.utc sale_audit.action_by = discount_by sale_audit.approved_by = approved_by @@ -43,7 +43,7 @@ class SaleAudit < ApplicationRecord #sale_audit. end - def record_audit_foc(sale_id, cashier_id, approved_by, reason) + def self.record_audit_foc(sale_id, cashier_id, approved_by, reason) #sale_audit sale_audit = SaleAudit.new() sale_audit.sale_id = sale_id @@ -55,6 +55,18 @@ class SaleAudit < ApplicationRecord sale_audit.save! end + def self.record_audit_for_edit(sale_id, cashier_id, approved_by, reason,type) + #sale_audit + sale_audit = SaleAudit.new() + sale_audit.sale_id = sale_id + sale_audit.action = type + sale_audit.action_at = DateTime.now.utc + sale_audit.action_by = cashier_id + sale_audit.approved_by = approved_by + sale_audit.remark = reason + sale_audit.save! + end + def self.record_payment(sale_id, remark, action_by) sale_audit = SaleAudit.new() sale_audit.sale_id = sale_id diff --git a/app/views/layouts/login.html.erb b/app/views/layouts/login.html.erb index 7320edf9..b6c2807b 100755 --- a/app/views/layouts/login.html.erb +++ b/app/views/layouts/login.html.erb @@ -2,123 +2,194 @@ - - - - SmartSales : Restaurant - <%= csrf_meta_tags %> - - + + + + SmartSales : Restaurant + <%= csrf_meta_tags %> + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - <%= stylesheet_link_tag 'login', media: 'all', 'data-turbolinks-track': 'reload' %> - + + + <%= stylesheet_link_tag 'login', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_include_tag 'login', 'data-turbolinks-track': 'reload' %> - + - +
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-

Please wait...

+
+
+
+
+

Please wait...

+
- + <% flash.each do |type, message| %> + <% + if type == "notice" + color = "alert-success" + elsif type == "error" + color = "alert-danger" + elsif type == "warning" + color = "alert-warning" + else + color = "bg-black" + end %> + + + <% end %>