diff --git a/app/assets/images/profile-1.png b/app/assets/images/profile-1.png new file mode 100644 index 00000000..bc020542 Binary files /dev/null and b/app/assets/images/profile-1.png differ diff --git a/app/assets/images/profile-2.png b/app/assets/images/profile-2.png new file mode 100644 index 00000000..b56112e2 Binary files /dev/null and b/app/assets/images/profile-2.png differ diff --git a/app/assets/images/profile-3.png b/app/assets/images/profile-3.png new file mode 100644 index 00000000..f2f65cc6 Binary files /dev/null and b/app/assets/images/profile-3.png differ diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index a877bda0..691c6648 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -30,7 +30,9 @@ class ApplicationController < ActionController::Base end def current_login_employee - @employee = Employee.find_by_token_session(session[:session_token]) + if (!session[:session_token].nil?) + @employee = Employee.find_by_token_session(session[:session_token]) + end end private diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index f480b95f..1f93e6aa 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,10 +1,30 @@ class HomeController < ApplicationController - skip_before_action :authenticate, only: [:index, :create, :destroy] + skip_before_action :authenticate, only: [:index, :show, :create, :update, :destroy] def index + @employees = Employee.all.order("name asc") @login_form = LoginForm.new() end + def show + @login_form = LoginForm.new() + @login_form.emp_id = params[:emp_id] + end + + def update + @login_form = LoginForm.new() + @login_form.emp_id = params[:emp_id] + @login_form.password = params[:login_form][:password] + @employee = Employee.login(@login_form.emp_id, @login_form.password) + + if @employee != nil + session[:session_token] = @employee.token_session + redirect_to origami_root_path + else + render :show, flash[:notice] => "Invalid PIN for Employee. Please try again!" + end + end + def create @login_form = LoginForm.new() @login_form.emp_id = params[:login_form][:emp_id] @@ -27,9 +47,9 @@ class HomeController < ApplicationController else render :index end - else + else redirect_to origami_root_path, :notice => "Username and Password dosn't match!" - end + end end diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index 692b9c4a..0d4d07dc 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -117,7 +117,7 @@ class Oqs::HomeController < BaseOqsController left join booking_orders as bo on bo.order_id = assigned_order_items.order_id left join bookings as bk on bk.booking_id = bo.booking_id left join dining_facilities as df on df.id = bk.dining_facility_id") - .where("assigned_order_items.delivery_status = #{status}") + .where("assigned_order_items.delivery_status = #{status} AND odt.price <> 0") .group("assigned_order_items.assigned_order_item_id") end end diff --git a/app/controllers/origami/orders_controller.rb b/app/controllers/origami/orders_controller.rb index cc5fac3f..ef213ddd 100644 --- a/app/controllers/origami/orders_controller.rb +++ b/app/controllers/origami/orders_controller.rb @@ -8,8 +8,10 @@ class Origami::OrdersController < BaseOrigamiController @order = Order.find(params[:order_id]) sale_order = SaleOrder.find_by_order_id(@order.order_id) if sale_order - sale = Sale.find(sale_order.sale_id) - @sale_status = sale.sale_status + unless sale_order.sale_id.nil? + sale = Sale.find(sale_order.sale_id) + @sale_status = sale.sale_status + end end end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index de6be794..96956958 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,2 +1,11 @@ module ApplicationHelper + + def flash_class(level) + case level + when :notice then "alert alert-info fade-in" + when :success then "alert alert-success fade-in" + when :error then "alert alert-error fade-in" + when :alert then "alert alert-error fade-in" + end +end end diff --git a/app/models/employee.rb b/app/models/employee.rb index 98b8380b..69eb3fae 100644 --- a/app/models/employee.rb +++ b/app/models/employee.rb @@ -13,9 +13,9 @@ class Employee < ApplicationRecord def self.login(emp_id, password) user = Employee.find_by_emp_id(emp_id) if (user) - user.authenticate(password) + #user.authenticate(password) - if (user) + if (user.authenticate(password)) user.generate_token user.session_expiry = DateTime.now.utc + 30.minutes user.session_last_login = DateTime.now.utc diff --git a/app/models/order.rb b/app/models/order.rb index 018013e4..b3a70f37 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -82,6 +82,15 @@ class Order < ApplicationRecord set_order_items end + # not insert with price 0 + # puts item[:price] + # puts item + # if(item[:price] != 0 ) + # OrderItem.processs_item(menu_item[:item_code], menu_item[:name], menu_item[:account_id], + # item[:quantity],menu_item[:price], item[:options], set_order_items, self.id, + # self.employee_name) + # end + OrderItem.processs_item(menu_item[:item_code], menu_item[:name], menu_item[:account_id], item[:quantity],menu_item[:price], item[:options], set_order_items, self.id, self.employee_name) diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index bd2e85ca..7e3352d1 100644 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -36,9 +36,11 @@ class OrderQueueStation < ApplicationRecord # #Same Order_items can appear in two location. # AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) # else - - AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) - oqs_order_items.push(order_item) + + if (order_item.price != 0) + AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) + oqs_order_items.push(order_item) + end # end end end diff --git a/app/models/printer/order_queue_printer.rb b/app/models/printer/order_queue_printer.rb index bbeafecf..f80ee72d 100644 --- a/app/models/printer/order_queue_printer.rb +++ b/app/models/printer/order_queue_printer.rb @@ -6,19 +6,23 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker #Print order_item = print_query('order_item', item_code) #OrderItem.find_by_item_code(item_code) - filename = "tmp/order_item_#{order_item[0].item_name}" + ".pdf" - pdf = OrderItemPdf.new(order_item[0], print_status, options) - pdf.render_file filename + filename = "tmp/order_item_#{order_item[0].item_name}" + ".pdf" - if oqs.print_copy - self.print(filename, oqs.printer_name) + # check for item not to show + if order_item[0].price != 0 + pdf = OrderItemPdf.new(order_item[0], print_status, options) + pdf.render_file filename - #For print copy - pdf.render_file filename.gsub(".","-copy.") - self.print(filename.gsub(".","-copy."), oqs.printer_name) - else - self.print(filename, oqs.printer_name) - end + if oqs.print_copy + self.print(filename, oqs.printer_name) + + #For print copy + pdf.render_file filename.gsub(".","-copy.") + self.print(filename.gsub(".","-copy."), oqs.printer_name) + else + self.print(filename, oqs.printer_name) + end + end end # Query for per order @@ -33,14 +37,18 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker filename = "tmp/order_item_#{odi.item_name}" + ".pdf" # For Item Options options = odi.options == "[]"? "" : odi.options - pdf = OrderItemPdf.new(odi, print_status, options) - # pdf.render_file "tmp/order_item.pdf" - pdf.render_file filename - if oqs.print_copy - self.print(filename, oqs.printer_name) - self.print(filename.gsub(".","-copy."), oqs.printer_name) - else - self.print(filename, oqs.printer_name) + + # check for item not to show + if odi.price != 0 || odi.price != 10 + pdf = OrderItemPdf.new(odi, print_status, options) + # pdf.render_file "tmp/order_item.pdf" + pdf.render_file filename + if oqs.print_copy + self.print(filename, oqs.printer_name) + self.print(filename.gsub(".","-copy."), oqs.printer_name) + else + self.print(filename, oqs.printer_name) + end end end # For Print Order Summary @@ -69,19 +77,22 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker filename = "tmp/order_item_#{odi.item_name}" + ".pdf" # For Item Options options = odi.options == "[]"? "" : odi.options - pdf = OrderItemPdf.new(odi, print_status, options) - - pdf.render_file filename - if oqs.print_copy - self.print(filename, oqs.printer_name) + # check for item not to show + if odi.price != 0 + pdf = OrderItemPdf.new(odi, print_status, options) + pdf.render_file filename - #For print copy - pdf.render_file filename.gsub(".","-copy.") - self.print(filename.gsub(".","-copy."), oqs.printer_name) - else - self.print(filename, oqs.printer_name) - end + if oqs.print_copy + self.print(filename, oqs.printer_name) + + #For print copy + pdf.render_file filename.gsub(".","-copy.") + self.print(filename.gsub(".","-copy."), oqs.printer_name) + else + self.print(filename, oqs.printer_name) + end + end end # For Print Order Summary else @@ -109,7 +120,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker left join bookings AS b ON b.booking_id = bo.booking_id left join dining_facilities AS df ON df.id = b.dining_facility_id left join customers as cus ON cus.customer_id = orders.customer_id") - .where("order_items.item_code = '#{ id }'") + .where("order_items.item_code = '#{ id }' AND order_items.price != 0") .group("order_items.item_code") elsif type == "order_summary" OrderItem.select("order_items.order_id, order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.options, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.type, df.name as dining") @@ -118,7 +129,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker left join bookings AS b ON b.booking_id = bo.booking_id left join dining_facilities AS df ON df.id = b.dining_facility_id left join customers as cus ON cus.customer_id = orders.customer_id") - .where("orders.order_id = '#{ id }'") + .where("orders.order_id = '#{ id }' AND order_items.price != 0") .group("order_items.order_items_id") else # order summary for booking @@ -128,7 +139,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker left join bookings AS b ON b.booking_id = bo.booking_id left join dining_facilities AS df ON df.id = b.dining_facility_id left join customers as cus ON cus.customer_id = orders.customer_id") - .where("b.booking_id = '#{ id }'") + .where("b.booking_id = '#{ id }' AND order_items.price != 0") end end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index e4ad5364..8b28c946 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -97,7 +97,7 @@ class SalePayment < ApplicationRecord sale_data.sale_payments.each do |sale_payment| others = others + sale_payment.payment_amount end - redeem_prices = sale_data.grand_total -others + redeem_prices = sale_data.grand_total - others # Control for Paypar Cloud begin response = HTTParty.post(url, @@ -232,11 +232,19 @@ class SalePayment < ApplicationRecord self.sale.amount_changed = self.sale.amount_received.to_f - self.sale.grand_total.to_f all_received_amount = 0.0 sObj = Sale.find(self.sale_id) + is_credit = 0 sObj.sale_payments.each do |spay| all_received_amount += spay.payment_amount.to_f + if spay.payment_method == "creditnote" + is_credit = 1 + end end if (self.sale.grand_total <= all_received_amount) - self.sale.payment_status = "paid" + if is_credit == 0 + self.sale.payment_status = "paid" + else + self.sale.payment_status = "outstanding" + end self.sale.sale_status = "completed" self.sale.save! table_update_status(sObj) diff --git a/app/pdf/order_item_pdf.rb b/app/pdf/order_item_pdf.rb index 6d6346f9..b6c821fc 100644 --- a/app/pdf/order_item_pdf.rb +++ b/app/pdf/order_item_pdf.rb @@ -60,7 +60,7 @@ class OrderItemPdf < Prawn::Document def order_items(order_item, options) y_position = cursor - #Add Order Item + #Add Order Item add_order_items(order_item, options) dash(1, :space => 1, :phase => 1) diff --git a/app/pdf/order_summary_pdf.rb b/app/pdf/order_summary_pdf.rb index d85a5916..89eac43c 100644 --- a/app/pdf/order_summary_pdf.rb +++ b/app/pdf/order_summary_pdf.rb @@ -86,38 +86,38 @@ class OrderSummaryPdf < Prawn::Document move_down 5 order_item.each do|odi| - y_position = cursor - - # pad_top(15) { - # text_box "#{odi.item_name}", :at =>[0,y_position], :width => self.item_width, :height =>self.item_height, :size => self.item_font_size, :overflow => :shrink_to_fix - # text_box "#{odi.qty}", :at =>[self.item_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix - # } - bounding_box([0,y_position], :width => self.item_width) do - text "#{odi.item_name}", :size => self.item_font_size,:align => :left - end - - bounding_box([self.item_width,y_position], :width => self.qty_width) do - text "#{odi.qty}", :size => self.item_font_size,:align => :left - end - - move_down 5 - - # add option - options = odi.options == "[]"? "" : odi.options - - if options != "" + # check for item not to show + if odi.price != 0 y_position = cursor - bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do - text "#{options}", :size => self.item_font_size,:align => :left + + bounding_box([0,y_position], :width => self.item_width) do + text "#{odi.item_name}", :size => self.item_font_size,:align => :left + end + + bounding_box([self.item_width,y_position], :width => self.qty_width) do + text "#{odi.qty}", :size => self.item_font_size,:align => :left end move_down 5 + + # add option + options = odi.options == "[]"? "" : odi.options + + if options != "" + y_position = cursor + bounding_box([0,y_position], :width => self.item_width) do + text "#{options}", :size => self.item_font_size,:align => :left + end + + move_down 5 + end + + move_down 5 + + dash(1, :space => 1, :phase => 1) + stroke_horizontal_line 0, (self.page_width - self.margin) + move_down 5 end - - dash(1, :space => 1, :phase => 1) - stroke_horizontal_line 0, (self.page_width - self.margin) - move_down 5 end - end end diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index b156e2c2..4ae0a67d 100644 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -2,7 +2,7 @@ class ReceiptBillPdf < Prawn::Document attr_accessor :label_width,:price_column_width,:page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_width,:total_width,:item_description_width def initialize(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, member_info = nil,rebate_amount = nil,shop_details) self.page_width = 210 - self.page_height = 2500 + self.page_height = 7000 self.margin = 5 self.price_width = 40 self.qty_width = 20 @@ -119,22 +119,25 @@ class ReceiptBillPdf < Prawn::Document move_down 5 sub_total = 0.0 sale_items.each do |item| - sub_total += (item.qty*item.unit_price) - qty = item.qty - total_price = item.qty*item.unit_price - price = item.unit_price - product_name = item.product_name + # check for item not to show + if item.price != 0 + sub_total += (item.qty*item.unit_price) + qty = item.qty + total_price = item.qty*item.unit_price + price = item.unit_price + product_name = item.product_name - y_position = cursor + y_position = cursor - pad_top(15) { - text_box "#{product_name}", :at =>[0,y_position], :width => self.item_width, :height =>self.item_height, :size => self.item_font_size, :overflow => :shrink_to_fix - text_box "#{price}", :at =>[self.item_width,y_position], :width => self.price_width, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix - text_box "#{qty}", :at =>[item_name_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix - text_box "#{total_price}", :at =>[(item_name_width+4),y_position], :width =>self.total_width+3, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix - } - move_down 1 + pad_top(15) { + text_box "#{product_name}", :at =>[0,y_position], :width => self.item_width, :height =>self.item_height, :size => self.item_font_size, :overflow => :shrink_to_fix + text_box "#{price}", :at =>[self.item_width,y_position], :width => self.price_width, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix + text_box "#{qty}", :at =>[item_name_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix + text_box "#{total_price}", :at =>[(item_name_width+4),y_position], :width =>self.total_width+3, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix + } + move_down 1 + end end stroke_horizontal_rule diff --git a/app/views/home/dashboard.html.erb b/app/views/home/dashboard.html.erb index f77959cd..6b49c880 100644 --- a/app/views/home/dashboard.html.erb +++ b/app/views/home/dashboard.html.erb @@ -1,7 +1,7 @@
<%= qid.assigned_order_item_id %>
<%= @customer.customer_id rescue "" %>
Customer : <%= @customer.name rescue "" %>
- <%end%> + <%end%>| <%= count %> + | <%= order_item.item_name %> | +<%= order_item.qty %> | +<%= order_item.qty*order_item.price %> | +
| Receipt No - <%= sale.receipt_no %> | ++ |