diff --git a/.gitignore b/.gitignore index 0d01f88c..02338531 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,5 @@ config/deploy/config/* .byebug_history # Gem files +#Gemfile +#Gemfile.lock diff --git a/Gemfile b/Gemfile index 6f082803..e96f6f23 100644 --- a/Gemfile +++ b/Gemfile @@ -9,12 +9,12 @@ end # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.1.0' # Use mysql as the database for Active Record -<<<<<<< HEAD -#gem 'mysql2', '>= 0.3.18', '< 0.5' -<<<<<<< HEAD -======= + gem 'mysql2', '>= 0.3.18', '< 0.5' ->>>>>>> 9dddd2fc787b1fa43898427a96cd0bfea4fbd9e0 + +gem 'pg' + + #Use PosgreSQL gem 'pg' @@ -22,9 +22,9 @@ gem 'pg' # redis server for cable # gem 'redis', '~> 3.0' -======= + gem 'pg' ->>>>>>> origami + # Use Puma as the app server gem 'puma', '~> 3.0' # Use SCSS for stylesheets diff --git a/Gemfile.lock b/Gemfile.lock index e2c1dd73..5dce67dc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -119,6 +119,7 @@ GEM nokogiri (1.7.2) mini_portile2 (~> 2.1.0) pdf-core (0.7.0) + pg (0.20.0) prawn (2.2.2) pdf-core (~> 0.7.0) ttfunk (~> 1.5) @@ -252,6 +253,7 @@ DEPENDENCIES kaminari! listen (~> 3.0.5) mysql2 (>= 0.3.18, < 0.5) + pg prawn prawn-table puma (~> 3.0) diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index c202d4dc..9f971289 100644 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -1,6 +1,7 @@ class Origami::RequestBillsController < BaseOrigamiController def show @sale = Sale.new + check_order = Order.find_by_id(params[:id]) if check_order @order_details = OrderItem.get_order_items_details(check_order.id) @@ -9,5 +10,13 @@ class Origami::RequestBillsController < BaseOrigamiController @sale_data = Sale.find_by_id(@sale_id) @sale_items = SaleItem.where("sale_id=?",@sale_id) end + unique_code="ReceiptBillPdf" + print_settings=PrintSetting.find_by_unique_code(unique_code) + + printer = Printer::ReceiptPrinter.new(print_settings) + + printer.print_receipt_bill(print_settings,@sale_items,@sale) + + end end diff --git a/app/controllers/settings/set_menu_items_controller.rb b/app/controllers/settings/set_menu_items_controller.rb index 7ef6cc18..f6771548 100644 --- a/app/controllers/settings/set_menu_items_controller.rb +++ b/app/controllers/settings/set_menu_items_controller.rb @@ -6,12 +6,14 @@ class Settings::SetMenuItemsController < ApplicationController def index @settings_menu_items = @category.menu_items.page(params[:page]).per(10) end - + # GET /settings/menu_items/1 # GET /settings/menu_items/1.json def show @sub_menu = MenuItem.where("menu_item_id=?",params[:id]).page(params[:page]).per(10) + @menu_item_instance = MenuItemInstance.where("menu_item_id=?",params[:id]).page(params[:page]).per(10) + end # GET /settings/menu_items/new diff --git a/app/jobs/order_broadcast_job.rb b/app/jobs/order_broadcast_job.rb index 22286d0b..28a152ce 100644 --- a/app/jobs/order_broadcast_job.rb +++ b/app/jobs/order_broadcast_job.rb @@ -1,7 +1,6 @@ class OrderBroadcastJob < ApplicationJob queue_as :default - def perform(message) order = Order.find(message) # message come as order_id ApplicationCable.server.broadcast "order_queue_station_channel", order: order diff --git a/app/models/account.rb b/app/models/account.rb index 4cf5040c..e1cdc6d3 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -2,6 +2,6 @@ class Account < ApplicationRecord validates_presence_of :title, :account_type has_many :menu_items - # belongs_to :lookup , :class_name => "Lookup" ,:foreign_key => :tax_type + # belongs_to :lookup , :class_name => "Lookup" end diff --git a/app/models/order.rb b/app/models/order.rb index c2fe26ec..f571faa9 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -25,7 +25,7 @@ class Order < ApplicationRecord if self.new_booking booking = Booking.create({:dining_facility_id => self.table_id,:type => "TableBooking", :checkin_at => Time.now.utc, :checkin_by => self.employee_name, - :booking_status => "new" }) + :booking_status => "assign" }) else if (self.booking_id.to_i > 0 ) booking = Booking.find(self.booking_id) diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index 521b87e0..d25dc8c3 100644 --- a/app/models/printer/receipt_printer.rb +++ b/app/models/printer/receipt_printer.rb @@ -63,4 +63,13 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker self.print(filename) end +#Bill Receipt Print + def print_receipt_bill(printer_settings,sale_items,sale) + #Use CUPS service + #Generate PDF + #Print + pdf = ReceiptBillPdf.new(printer_settings,sale_items,sale) + pdf.render_file "tmp/receipt_bill_#{sale.id}.pdf" + self.print("tmp/receipt_bill_#{sale.id}.pdf") + end end diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb new file mode 100644 index 00000000..e9ad042c --- /dev/null +++ b/app/pdf/receipt_bill_pdf.rb @@ -0,0 +1,110 @@ +class ReceiptBillPdf < Prawn::Document + attr_accessor :receipt_width,:price_column_width,:p_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_column_width,:item_description_width + def initialize(printer_settings, sale_items,sale) + self.p_width = 200 + self.page_height = 1450 + self.margin = 10 + # self.price_width = self.p_width / 2 + self.price_width=90 + self.item_width = self.p_width - self.price_width + self.item_height = self.item_height + self.qty_column_width = self.p_width / 2 + self.item_description_width=self.p_width - self.price_width + self.receipt_width=130 + + @item_width = self.p_width.to_i / 2 + @qty_width = @item_width.to_i / 3 + @double = @qty_width * 2 + @half_qty = @qty_width / 2 + #setting page margin and width + super(:margin => [self.margin, self.margin, self.margin, self.margin], :page_size => [self.p_width, self.page_height]) + self.header_font_size = 10 + self.item_font_size = 6 + + header( printer_settings.printer_name, printer_settings.name) + stroke_horizontal_rule + cashier_info(sale.receipt_no,sale.customer.name, sale.receipt_date) + line_items(sale_items) + + + end + + def header (printer_name, name) + text "#{printer_name}", :size => self.header_font_size,:align => :center + move_down 5 + text "#{name}", :size => self.header_font_size,:align => :center + # move_down self.item_height + move_down 5 + + stroke_horizontal_rule + + end + + def cashier_info(receipt_no, customer, receipt_date) + move_down 5 + move_down 2 + y_position = cursor + bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + text "Receipt No:", :size => self.item_font_size,:align => :left + end + + bounding_box([self.price_width, y_position], :width =>self.receipt_width) do + text "#{receipt_no}" , :size => self.item_font_size, :align => :left + end + move_down 5 + + y_position = cursor + bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + text "Customer:", :size => self.item_font_size,:align => :left + end + bounding_box([self.price_width,y_position], :width =>self.price_width) do + text "#{customer}" , :size => self.item_font_size,:align => :left + end + move_down 5 + + y_position = cursor + bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + text "Date:", :size => self.item_font_size,:align => :left + end + bounding_box([self.price_width,y_position], :width =>self.price_width) do + text "#{receipt_date}" , :size => self.item_font_size,:align => :left + end + # stroke_horizontal_rule + move_down 5 + end + + def line_items(sale_items) + y_position = cursor + qty_column_width = self.p_width * 0.2 + item_description_width = self.p_width * 0.5 + price_column_width = self.p_width * 0.3 + + + + stroke_horizontal_rule + move_down 5 + y_position = cursor + pad_top(15) { + # @item_width.to_i + @half_qty.to_i + text_box "Items", :at =>[0,y_position], :width => @item_width.to_i - @half_qty.to_i , :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size + text_box "Price", :at =>[@item_width.to_i - @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "Qty", :at =>[@item_width.to_i-@qty_width,y_position], :width => @half_qty, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "Discount", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "Total", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @double, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + + } + + move_down 5 + stroke_horizontal_rule + + add_line_item_row(sale_items) + stroke_horizontal_rule + + end + + def add_line_item_row(sale_items) + y_position = cursor + move_down 5 + end + +end diff --git a/app/views/crm/home/_booking.html.erb b/app/views/crm/home/_booking.html.erb index 13702bf6..b8d2ba50 100644 --- a/app/views/crm/home/_booking.html.erb +++ b/app/views/crm/home/_booking.html.erb @@ -21,10 +21,10 @@ @@ -38,19 +38,21 @@ $(function(){ $(".booking_click").on("click", function(){ $(".summary-items tbody tr").remove(); + $("#cancel").removeAttr("disabled"); + $("#assign").removeAttr("disabled"); var url = $(this).attr('data-ref'); show_details(url); }); $('.assign').click(function(e){ - var booking_id = $(this).attr("data-id") + var booking_id = $(this).val() var type = $(this).attr("data-type") update_booking(booking_id,type) }); $('.cancel').click(function(e){ - var booking_id = $(this).attr("data-id") + var booking_id = $(this).val() var type = $(this).attr("data-type") update_booking(booking_id,type) @@ -71,7 +73,8 @@ function show_details(url_item){ $("#table").text(data.table_name) $("#order_at").text(data.checkin_at) $("#order_by").text(data.checkin_by) - + $("#assign").val(data.id) + $("#cancel").val(data.id) for(var field in item_data) { if (item_data[field].item_name){ var price = parseFloat(item_data[field].price).toFixed(2); diff --git a/app/views/crm/home/_queue.html.erb b/app/views/crm/home/_queue.html.erb index 1633f901..5bbbd2bf 100644 --- a/app/views/crm/home/_queue.html.erb +++ b/app/views/crm/home/_queue.html.erb @@ -2,7 +2,7 @@ <% @i = 0 %> <% @booking.each do |booking| %> - <% if booking.booking_status == "complete" %> + <% if booking.booking_status == "assign" %>

diff --git a/app/views/crm/home/index.html.erb b/app/views/crm/home/index.html.erb index 431ef4a4..a140f43c 100644 --- a/app/views/crm/home/index.html.erb +++ b/app/views/crm/home/index.html.erb @@ -5,7 +5,7 @@

diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 04d23403..44624a43 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -10,6 +10,7 @@ <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= stylesheet_link_tag 'settings', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> diff --git a/app/views/settings/accounts/index.html.erb b/app/views/settings/accounts/index.html.erb index b205aa02..d8469a69 100644 --- a/app/views/settings/accounts/index.html.erb +++ b/app/views/settings/accounts/index.html.erb @@ -1,7 +1,4 @@ - -<%= link_to 'New Settings Account', new_settings_account_path %> -

Menu Category

@@ -69,7 +69,9 @@ <%= settings_menu_item.type %> <%= settings_menu_item.parent.name rescue "-" %> <%= settings_menu_item.created_by %> + <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> + <% if settings_menu_item.type == "SimpleMenuItem" %> <%= link_to 'Show', settings_menu_category_simple_menu_item_path(@settings_menu_category, settings_menu_item ) %> <%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@settings_menu_category, settings_menu_item) %> @@ -85,4 +87,5 @@
-
\ No newline at end of file + + diff --git a/app/views/settings/menu_item_instances/_form.html.erb b/app/views/settings/menu_item_instances/_form.html.erb index 759aec65..c0170245 100644 --- a/app/views/settings/menu_item_instances/_form.html.erb +++ b/app/views/settings/menu_item_instances/_form.html.erb @@ -1,12 +1,16 @@ -<%= simple_form_for([:settings, @item, @settings_menu_item_instances]) do |f| %> + +<%= simple_form_for([:settings,:menu_item, @settings_menu_item_instance]) do |f| %> + <%= f.error_notification %>
<%= f.input :item_instance_code %> <%= f.input :item_instance_name %> <%= f.input :price %> + <%= f.input :item_attributes, collection: MenuItemAttribute.collection, input_html: { multiple: true } %> + <%= f.input :is_on_promotion %> <%= f.input :promotion_price %> <%= f.input :is_available %> diff --git a/app/views/settings/menu_item_instances/edit.html.erb b/app/views/settings/menu_item_instances/edit.html.erb index 887806cb..01a47cc0 100644 --- a/app/views/settings/menu_item_instances/edit.html.erb +++ b/app/views/settings/menu_item_instances/edit.html.erb @@ -4,6 +4,7 @@ <%= render 'form', settings_menu_item_menu_item_instances: @settings_menu_item_instances %> +
diff --git a/app/views/settings/menu_item_instances/new.html.erb b/app/views/settings/menu_item_instances/new.html.erb index b4de46cf..c6d688ca 100644 --- a/app/views/settings/menu_item_instances/new.html.erb +++ b/app/views/settings/menu_item_instances/new.html.erb @@ -1,16 +1,20 @@ +
<%= render 'form', settings_simple_menu_item_menu_item_instances: @settings_menu_item_instances %> +
diff --git a/app/views/settings/menu_item_instances/show.html.erb b/app/views/settings/menu_item_instances/show.html.erb index 4474d567..edd34a74 100644 --- a/app/views/settings/menu_item_instances/show.html.erb +++ b/app/views/settings/menu_item_instances/show.html.erb @@ -1,10 +1,12 @@ diff --git a/app/views/settings/set_menu_items/show.html.erb b/app/views/settings/set_menu_items/show.html.erb index 2365c310..0082c819 100644 --- a/app/views/settings/set_menu_items/show.html.erb +++ b/app/views/settings/set_menu_items/show.html.erb @@ -41,13 +41,16 @@ <%= @settings_menu_item.min_selectable_item %> <%= @settings_menu_item.max_selectable_item %> <%= @settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> + <%= link_to 'Edit', edit_settings_menu_category_set_menu_item_path(@category, @settings_menu_item) %> + <% if @sub_menu.count > 0 %> +
@@ -76,6 +79,7 @@ <%= settings_menu_item.type %> <%= settings_menu_item.parent.name rescue "-" %> <%= settings_menu_item.created_by %> + <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> <% if settings_menu_item.type == "SimpleMenuItem" %> @@ -94,6 +98,7 @@
<%= paginate @sub_menu, param_name: :page, :outer_window => 3 %> + <% end %>
@@ -128,14 +133,15 @@ <%= settings_menu_item.price %> <%= settings_menu_item.is_on_promotion %> <%= settings_menu_item.promotion_price %> - <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> + <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> <%= link_to 'Show', settings_set_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ) %> <%= link_to 'Edit', edit_settings_set_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item) %> - <%= link_to 'Destroy', settings_set_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %> + <%= link_to 'Destroy', settings_set_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %> <% end %>
+ diff --git a/app/views/settings/simple_menu_items/show.html.erb b/app/views/settings/simple_menu_items/show.html.erb index 6e93d3cc..d2d93e0e 100644 --- a/app/views/settings/simple_menu_items/show.html.erb +++ b/app/views/settings/simple_menu_items/show.html.erb @@ -3,7 +3,9 @@ @@ -40,14 +42,18 @@ <%= @settings_menu_item.min_qty %> <%= @settings_menu_item.min_selectable_item %> <%= @settings_menu_item.max_selectable_item %> + <%= @settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> + <%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@category, @settings_menu_item) %> + <% if @sub_menu.count > 0 %> +
@@ -76,8 +82,10 @@ <%= settings_menu_item.type %> <%= settings_menu_item.parent.name rescue "-" %> <%= settings_menu_item.created_by %> + <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> + <% if settings_menu_item.type == "SimpleMenuItem" %> <%= link_to 'Show', settings_menu_category_simple_menu_item_path(@category, settings_menu_item ) %> <%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@category, settings_menu_item) %> @@ -94,12 +102,15 @@
<%= paginate @sub_menu, param_name: :page, :outer_window => 3 %> + <% end %> +

Menu Item Instances + <%= link_to t('.new', :default => t("helpers.links.new")),new_settings_simple_menu_item_menu_item_instance_path(@settings_menu_item),:class => 'btn btn-primary btn-sm' %> @@ -115,6 +126,7 @@ promotion_price Created at + @@ -122,17 +134,19 @@ <% @menu_item_instance.each do |settings_menu_item| %> - + <%= settings_menu_item.item_instance_code %> <%= settings_menu_item.item_attributes %> <%= settings_menu_item.price %> <%= settings_menu_item.is_on_promotion %> <%= settings_menu_item.promotion_price %> + <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> <%= link_to 'Show', settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ) %> <%= link_to 'Edit', edit_settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item) %> - <%= link_to 'Destroy', settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %> + <%= link_to 'Destroy', settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %> + <% end %>