From 5d89713bb6239304bb99df50b2b375d352ca8555 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Fri, 9 Jun 2017 13:24:20 +0630 Subject: [PATCH] crm print update --- Gemfile.lock | 2 + app/pdf/crm_order_pdf.rb | 94 ++++++++++++++++++++----------- app/views/crm/home/index.html.erb | 2 +- 3 files changed, 65 insertions(+), 33 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6a7c6340..4235d035 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,6 +110,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) @@ -246,6 +247,7 @@ DEPENDENCIES kaminari (~> 0.16.3) listen (~> 3.0.5) mysql2 (>= 0.3.18, < 0.5) + pg prawn prawn-table puma (~> 3.0) diff --git a/app/pdf/crm_order_pdf.rb b/app/pdf/crm_order_pdf.rb index 94fc5503..55d08ecc 100644 --- a/app/pdf/crm_order_pdf.rb +++ b/app/pdf/crm_order_pdf.rb @@ -1,6 +1,6 @@ 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) + def initialize(booking,order_items,printer_settings) self.p_width = 200 self.page_height = 1450 self.margin = 10 @@ -18,20 +18,19 @@ class CrmOrderPdf < Prawn::Document @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.header_font_size = 10 self.item_font_size = 9 - header( booking.type, booking.dining_facility.name) + header( printer_settings.printer_name, printer_settings.name) stroke_horizontal_rule - order_detail(booking.checkin_by,booking.checkin_at,booking.dining_facility.name) + cashier_info(booking) line_items(order_items) - #all_total(order_items) end - def header (type, name) - text "#{type}", :size => self.header_font_size,:align => :center + 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 @@ -41,37 +40,37 @@ class CrmOrderPdf < Prawn::Document end - def order_detail(order_by,order_at,customer) + def cashier_info(booking) 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 + bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + text "Order By:", :size => self.item_font_size,:align => :left + end - - - stroke_horizontal_rule + bounding_box([self.price_width, y_position], :width =>self.receipt_width) do + text "#{booking.checkin_by}" , :size => self.item_font_size, :align => :left + end 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 - - } - + 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 "#{booking.customer_id}" , :size => self.item_font_size,:align => :left + end 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 - - } + 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 "#{booking.checkin_at.strftime('%Y %m %d %h:%m')}" , :size => self.item_font_size,:align => :left + end + # stroke_horizontal_rule + move_down 5 end def line_items(order_items) @@ -97,10 +96,41 @@ y_position = cursor move_down 5 stroke_horizontal_rule - + add_line_item_row(order_items) + end - + def add_line_item_row(order_items) + y_position = cursor + move_down 5 + sub_total = 0.0 + order_items.each do |item| + + sub_total += item.qty*item.price + qty = item.qty + total_price = item.qty*item.price + price = item.price + item_name = item.item_name + + + y_position = cursor + + pad_top(15) { + # @item_width.to_i + @half_qty.to_i + text_box "#{item_name}", :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.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 "#{total_price}", :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 3 + end + stroke_horizontal_rule + move_down 5 + y_position = cursor + + end + end diff --git a/app/views/crm/home/index.html.erb b/app/views/crm/home/index.html.erb index 0912ee70..87e601d9 100644 --- a/app/views/crm/home/index.html.erb +++ b/app/views/crm/home/index.html.erb @@ -116,7 +116,7 @@ - +