diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index 715a9fe1..27b85958 100755 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -192,6 +192,41 @@ $(document).on('turbolinks:load', function() { return false; }); + + $(document).on('click', '.access_modal', function(event){ + type = $(this).data("type"); + $(".ok").attr("data-action",type) + $('#AccessCodeModal').modal('show'); + }); + + $(document).on('click', '.access_number', function(event){ + if(event.handled !== true) { + var original_value = $('#access_code').val(); + var input_type = $(this).attr("data-type"); + + switch (input_type) { + case 'num': + var input_value = $(this).attr("data-value"); + if (original_value){ + $('#access_code').val(original_value + input_value); + }else{ + $('#access_code').val(original_value + input_value); + } + break; + case 'ok': + var type = $(this).attr("data-action"); + code = $('#access_code').val(); + check_emp_access_code(code,type) + break; + case 'clr': + $('#access_code').val(""); + break; + } + event.handled = true; + } else { + return false; + } + }); }); /* start check first bill or not funs: */ @@ -424,3 +459,8 @@ function showHideNavbar(webview,page){ } } } + +function createAccessCode(code) { + localStorage.setItem("access_code",code); +} + diff --git a/app/assets/stylesheets/origami.scss b/app/assets/stylesheets/origami.scss index 1de250a3..212c5288 100755 --- a/app/assets/stylesheets/origami.scss +++ b/app/assets/stylesheets/origami.scss @@ -93,6 +93,19 @@ select.form-control { // cursor:pointer; } +.access_number{ + width: 33%; + height:58px; + line-height:58px; + text-align:center; + background:#54A5AF; + // float:left; + // margin:2px; + font-size:20px; + color:white; + // cursor:pointer; +} + .del_cashier_number{ opacity:0.6, } diff --git a/app/controllers/base_origami_controller.rb b/app/controllers/base_origami_controller.rb index 7ca3b9f9..61cbac84 100755 --- a/app/controllers/base_origami_controller.rb +++ b/app/controllers/base_origami_controller.rb @@ -22,7 +22,7 @@ class BaseOrigamiController < ActionController::Base message: "User using other device!" }.to_json end - else + else if current_user.nil? redirect_to root_path end diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index 745d6f33..ed857104 100755 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -129,6 +129,18 @@ class Origami::HomeController < BaseOrigamiController end end +def check_emp_access_code + pin_code = params[:code] + employee = Employee.find_by_emp_id(pin_code) + if employee && employee.role == "manager" + result = {:status=> true, :message=>"Success" } + else + result = {:status=> false, :message=>"Invalid Access Code" } + end + render :json => result.to_json + +end + private def set_dining diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 3baed9f3..3c5219af 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -446,8 +446,7 @@ class Origami::PaymentsController < BaseOrigamiController end saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0) - puts "FOC" - puts saleObj.to_json + sale_payment = SalePayment.new sale_payment.process_payment(saleObj, current_user.name, cash, "foc" ,remark) # For Cashier by Zone diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb index 1743f881..1c5b5430 100755 --- a/app/controllers/origami/sale_edit_controller.rb +++ b/app/controllers/origami/sale_edit_controller.rb @@ -17,6 +17,7 @@ class Origami::SaleEditController < BaseOrigamiController def item_void saleitemId = params[:sale_item_id] remark = params[:remark] + access_code = params[:access_code] saleitemObj = SaleItem.find(saleitemId) saleitemObj.status = 'void' saleitemObj.remark = remark @@ -48,8 +49,9 @@ class Origami::SaleEditController < BaseOrigamiController end end action_by = current_user.id + approved_by = Employee.find_by_emp_id(access_code) 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" ) + sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"SALEITEMVOID" ) saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) @@ -58,6 +60,7 @@ class Origami::SaleEditController < BaseOrigamiController def item_foc saleitemId = params[:sale_item_id] remark = params[:remark] + access_code = params[:access_code] saleitemObj = SaleItem.find(saleitemId) saleitemObj.status = 'foc' saleitemObj.remark = remark @@ -80,8 +83,9 @@ class Origami::SaleEditController < BaseOrigamiController order = Order.find(order_id) action_by = current_user.id + approved_by = Employee.find_by_emp_id(access_code) 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" ) + sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"SALEITEMFOC" ) saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order.source) ProductCommission.create_product_commission(@newsaleitem, saleitemObj) @@ -111,6 +115,7 @@ class Origami::SaleEditController < BaseOrigamiController saleitemId = params[:sale_item_id] update_qty = params[:update_qty] update_price = params[:update_price] + access_code = params[:access_code] saleitemObj = SaleItem.find(saleitemId) sale = Sale.find(saleitemObj.sale_id) @@ -120,8 +125,9 @@ class Origami::SaleEditController < BaseOrigamiController saleitemObj.taxable_price = update_qty.to_f * update_price.to_f action_by = current_user.id + approved_by = Employee.find_by_emp_id(access_code) 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" ) + sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,sale.cashier_id, approved_by.name,remark,"SALEITEMEDIT" ) # saleitemObj.remark = 'edit' unless saleitemObj.product_name.include? 'updated' @@ -152,6 +158,7 @@ class Origami::SaleEditController < BaseOrigamiController # make cancel void item def item_void_cancel saleitemId = params[:sale_item_id] + access_code = params[:access_code] saleitemObj = SaleItem.find(saleitemId) both = SaleItem.where('product_code=?', saleitemObj.product_code) both.each do |item| @@ -169,8 +176,9 @@ class Origami::SaleEditController < BaseOrigamiController order = Order.find(order_id) action_by = current_user.id + approved_by = Employee.find_by_emp_id(access_code) 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" ) + sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"ITEMCANCELVOID" ) saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount, order.source) ProductCommission.remove_product_commission(saleitemObj) diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb index 83dce707..d601b0c0 100755 --- a/app/controllers/origami/void_controller.rb +++ b/app/controllers/origami/void_controller.rb @@ -5,6 +5,7 @@ class Origami::VoidController < BaseOrigamiController sale_id = params[:sale_id] remark = params[:remark] order_source = params[:type] #tax profile source + access_code = params[:access_code] if Sale.exists?(sale_id) sale = Sale.find_by_sale_id(sale_id) @@ -71,8 +72,9 @@ class Origami::VoidController < BaseOrigamiController # FOr Sale Audit action_by = current_user.name + approved_by = Employee.find_by_emp_id(access_code) # 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" ) + sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, approved_by.name,remark,"SALEVOID" ) # For Print diff --git a/app/controllers/origami/waste_spoile_controller.rb b/app/controllers/origami/waste_spoile_controller.rb index 2b2d9c33..de7df434 100755 --- a/app/controllers/origami/waste_spoile_controller.rb +++ b/app/controllers/origami/waste_spoile_controller.rb @@ -3,7 +3,8 @@ class Origami::WasteSpoileController < BaseOrigamiController sale_id = params[:sale_id] remark = params[:remark] - order_source = params[:type] #tax profile source + order_source = params[:type] + access_code = params[:access_code] #tax profile source if Sale.exists?(sale_id) sale = Sale.find_by_sale_id(sale_id) SaleTax.where("sale_id='#{sale_id}'").find_each do |existing_tax| @@ -54,8 +55,9 @@ class Origami::WasteSpoileController < BaseOrigamiController # FOr Sale Audit action_by = current_user.name + approved_by = Employee.find_by_emp_id(access_code) # 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,remark ) + sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, approved_by.name,remark,remark ) # For Print diff --git a/app/models/ability.rb b/app/models/ability.rb index 5eab518f..497e9322 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -126,6 +126,7 @@ class Ability # can :overall_void, :void can :index, :home can :show, :home + can :check_emp_access_code, :home can :read, Order can :update, Order can :manage, Booking @@ -151,6 +152,7 @@ class Ability can :create, :payment can :reprint, :payment can :rounding_adj, :payment + can :foc, :payment can :print, :payment can :move_dining, :movetable @@ -183,6 +185,16 @@ class Ability can :print, :print can :print_order_summary, :print + + can :edit, :sale_edit + can :item_void, :sale_edit + can :item_void_cancel, :sale_edit + can :cancel_all_void, :sale_edit + can :apply_void, :sale_edit + can :item_foc, :sale_edit + can :item_edit, :sale_edit + + can :overall_void, :void elsif user.role == "account" diff --git a/app/models/sale.rb b/app/models/sale.rb index acf76f0d..e8a203fa 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -1139,8 +1139,14 @@ def self.get_wastes_and_spoilages(from,to,status) else type = "and sales.sale_status = 'waste'" end - query = Sale.all.where("sales.receipt_date between ? and ? #{type}",from,to) - .group("sales.receipt_no") + query = Sale.select("sales.sale_id,sales.receipt_no,sales.created_at,sales.total_amount,sales.grand_total,sales.rounding_adjustment,sales.shift_sale_id,sale_items.product_name,sale_items.product_code,sale_items.item_instance_code,sale_items.qty,sale_items.price,sale_items.unit_price,menu_categories.name") + .joins("JOIN sale_items ON sales.sale_id = sale_items.sale_id" + + " JOIN menu_item_instances ON sale_items.item_instance_code = menu_item_instances.item_instance_code" + + " JOIN menu_items ON menu_item_instances.menu_item_id = menu_items.id" + + " JOIN menu_categories ON menu_items.menu_category_id = menu_categories.id") + .where("sales.receipt_date between ? and ? #{type}",from,to) + .group("sales.receipt_no,menu_categories.id,sale_items.item_instance_code") + .order("sales.sale_id,menu_categories.name,sale_items.product_name") end # def self.get_separate_tax(from,to,payment_method=nil) diff --git a/app/views/origami/home/show.html.erb b/app/views/origami/home/show.html.erb index cc5e0f2f..54dd9e41 100755 --- a/app/views/origami/home/show.html.erb +++ b/app/views/origami/home/show.html.erb @@ -485,8 +485,10 @@ <% end %> <% if current_login_employee.role != "waiter" %> - - -
- -
-
- -
- - - @@ -957,6 +968,7 @@ }); $('#void').on('click', function () { + var access_code = localStorage.getItem("access_code"); if ($(this).attr('active')=== "true") { swal({ title: "Alert", @@ -975,7 +987,7 @@ $.ajax({ type: 'POST', url: ajax_url, - data: "remark="+ remark + "&sale_id=" + sale_id, + data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code, success: function (result) { // For Server Print - from jade if ($("#server_mode").val() == "cloud") { @@ -1052,6 +1064,12 @@ return attribute_arr; } + $(document).on('click', '.access_modal', function(event){ + type = $(this).data("type"); + $(".ok").attr("data-action",type) + $('#AccessCodeModal').modal('show'); + }); + function waste_and_spoilage(remark) { swal({ title: "Alert", @@ -1081,4 +1099,34 @@ } }); } + + function check_emp_access_code(access_code,type) { + var url = "/origami/check_emp_access_code/" + access_code ; + $.ajax({ + type: 'POST', + url: url, + data: {}, + success: function (result) { + console.log(result); + if (result.status == true) { + createAccessCode(code); + if (type == "edit") { + var dining_id = "<%= @dining.id %>"; + var sale_id = "<%= @obj_sale.sale_id rescue "" %>"; + window.location.href = '/origami/table/' + dining_id + "/sale/" + sale_id + "/"+cashier_type +"/edit"; + }else if(type == "void"){ + $('#AccessCodeModal').modal('hide'); + $('#voidModal').modal('show'); + + // overall_void(); + }else if(type == "waste_and_spoilage"){ + + } + }else{ + swal("Opps",result.message,"warning") + } + } + }); + } + diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index d1a9eef4..41f02b5d 100755 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -350,16 +350,20 @@ reply Back - - - <% if @cashier_type=="quick_service" %> + --> + FOC + Void + Waste + Spoile +<% if @cashier_type=="quick_service" %>
-