diff --git a/app/assets/javascripts/orgiami.js b/app/assets/javascripts/orgiami.js index cd8622c3..ad77aea9 100644 --- a/app/assets/javascripts/orgiami.js +++ b/app/assets/javascripts/orgiami.js @@ -22,6 +22,13 @@ $(document).ready(function(){ var receipt_no=$(this).find(".orders-receipt-no").text(); var unique_id=$(this).find(".orders-id").text(); + //for customer button + if(unique_id.charAt(0) == 'S'){ + $("#customer").removeAttr('disabled'); + }else{ + $("#customer").attr('disabled','disabled'); + } + var cashier=""; var receipt_date=""; var sub_total=0; @@ -96,6 +103,12 @@ $(document).ready(function(){ window.location.href = '/origami/sale/'+ sale_id + "/payment" return false; }); + + $('#customer').click(function() { + var sale_id=$(".selected-item").find(".orders-id").text(); + window.location.href = '/crm/customers/'+ sale_id + "/assign_sale_id" + return false; + }); }); diff --git a/app/controllers/crm/home_controller.rb b/app/controllers/crm/home_controller.rb index 43cc322a..9ae2b413 100644 --- a/app/controllers/crm/home_controller.rb +++ b/app/controllers/crm/home_controller.rb @@ -13,6 +13,20 @@ class Crm::HomeController < BaseCrmController def print_order @booking = Booking.find(params[:id]) + + @total_amount = 0.00 + @total_tax = 0.00 + + if @booking.booking_orders + order_items = [] + @booking.booking_orders.each do |bo| + order = Order.find(bo.order_id) + #if (order.status == "new") + order_items = order_items + order.order_items + #end + end + + end unique_code="CrmOrderPdf" @@ -20,7 +34,7 @@ class Crm::HomeController < BaseCrmController printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_crm_order(@booking,print_settings) + printer.print_crm_order(@booking,order_items,print_settings) end diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index c5b87b6b..ed7aa466 100644 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -27,3 +27,5 @@ class Origami::RequestBillsController < BaseOrigamiController redirect_to origami_root_path end +end + diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index 523b9ec9..d203568f 100644 --- a/app/models/printer/receipt_printer.rb +++ b/app/models/printer/receipt_printer.rb @@ -74,11 +74,11 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker end #Bill Receipt Print - def print_crm_order(booking,setting) + def print_crm_order(booking,order_items,setting) #Use CUPS service #Generate PDF #Print - pdf = CrmOrderPdf.new(booking,setting) + pdf = CrmOrderPdf.new(booking,order_items,setting) pdf.render_file "tmp/print_crm_order.pdf" self.print("tmp/print_crm_order.pdf") end diff --git a/app/pdf/crm_order_pdf.rb b/app/pdf/crm_order_pdf.rb index 36aed0a1..94fc5503 100644 --- a/app/pdf/crm_order_pdf.rb +++ b/app/pdf/crm_order_pdf.rb @@ -1,71 +1,106 @@ class CrmOrderPdf < 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(booking,order_items,print_settings) + self.p_width = 200 + self.page_height = 1450 + self.margin = 10 + # self.price_width = self.p_width / 2 + self.price_width=80 + 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 - def initialize(order_item, print_settings) - super(:margin => [10, 5, 30, 5], :page_size => [200,400]) + @item_width = self.p_width.to_i / 2 + @qty_width = @item_width.to_i / 3 + @double = @qty_width * 1.3 + @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 = 7 + self.item_font_size = 9 - # font "public/fonts/#{font_name}".to_s + ".ttf".to_s - # font "public/fonts/Zawgyi-One.ttf" - # font "public/fonts/padauk.ttf" - font_size 9 - text "#{order_item.type}", :size => 15 - stroke_horizontal_rule - move_down 5 + header( booking.type, booking.dining_facility.name) + stroke_horizontal_rule + order_detail(booking.checkin_by,booking.checkin_at,booking.dining_facility.name) + line_items(order_items) + #all_total(order_items) - #order_info - order_info(order_item.checkin_by,order_item.checkin_at, order_item.customer_id) - - # order items - order_items(order_item) + end - # Write Order Information to PDF - def order_info(order_by, order_at, customer) - y_position = cursor + def header (type, name) + text "#{type}", :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 - bounding_box([0,y_position], :width => 200, :height => 15) do - text "OrderBy:#{order_by} Customer:#{customer} Date:#{order_at.strftime("%Y-%m-%d")}", :size => 7,:align => :left - end - - stroke_horizontal_rule - - move_down 20 - end - - # Write Order items to PDF - def order_items(order_item) - y_position = cursor - - bounding_box([0,y_position], :width => 180, :height => 15) do - text "Item", :size => 7,:align => :left - end - - bounding_box([160,y_position], :width => 20, :height => 15) do - text "Qty", :size => 7,:align => :right - end - - stroke_horizontal_rule - move_down 5 - - #Add Order Item - add_order_items(order_item) - end - - # Add order items under order info - def add_order_items(order_item) - y_position = cursor - - move_down 5 - - bounding_box([0,y_position], :width => 180, :height => 20) do - text "#{order_item.sale_id}", :size => 7,:align => :left - end - - bounding_box([160,y_position], :width => 20, :height => 20) do - text "#{order_item.sale_id}", :size => 7,:align => :right - end - - move_down 5 + stroke_horizontal_rule end + def order_detail(order_by,order_at,customer) + move_down 5 + move_down 2 + 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 "Order By", :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 "Order At", :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 "Customer", :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 + + } + + move_down 5 + stroke_horizontal_rule +y_position = cursor + pad_top(15) { + + text_box "#{order_by}", :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 "#{order_at.to_i}", :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 "#{customer}", :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 + + } + end + + def line_items(order_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 "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 + + + + end + + + end diff --git a/app/views/crm/home/_booking.html.erb b/app/views/crm/home/_booking.html.erb index 53bc6b82..3a2a7684 100644 --- a/app/views/crm/home/_booking.html.erb +++ b/app/views/crm/home/_booking.html.erb @@ -6,7 +6,8 @@ <% @booking.each do |booking| %> <% if booking.booking_status == "new" %>
<%= booking.id %>
<%= unique_id %>
++ Receipt No : + + <%= bko.receipt_no %> + +
++ Order Status : + + <%= bko.order_status %> + + +
+<%= unique_id %>
++ Receipt No : + + <%= rmo.receipt_no %> + +
++ Order Status : + + <%= rmo.order_status %> + + +
+<%= unique_id %>
++ Receipt No : + + <%= odr.receipt_no %> + +
++ Order Status : + + <%= odr.order_status %> + + +
+Receipt No:
+Cashier:
+Date:
+| Items | +QTY + | Price + |
|---|