From 12c8be597d9623ca72dd3cbf6feaad19c35cadf3 Mon Sep 17 00:00:00 2001 From: Nweni Date: Thu, 31 Aug 2017 15:29:36 +0630 Subject: [PATCH] Inventory Stock Check Print --- .../inventory/stock_checks_controller.rb | 18 +++- app/models/printer/receipt_printer.rb | 11 ++- app/pdf/stock_result_pdf.rb | 92 ++++++++++++++++++ .../inventory/stock_checks/show.html.erb | 9 ++ config/routes.rb | 1 + dump.rdb | Bin 777 -> 777 bytes 6 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 app/pdf/stock_result_pdf.rb diff --git a/app/controllers/inventory/stock_checks_controller.rb b/app/controllers/inventory/stock_checks_controller.rb index f161bc25..9ff9fce7 100644 --- a/app/controllers/inventory/stock_checks_controller.rb +++ b/app/controllers/inventory/stock_checks_controller.rb @@ -22,7 +22,23 @@ class Inventory::StockChecksController < BaseInventoryController StockJournal.from_stock_check(item) end end - + + def print_stock_check + stock_id = params[:stock_check_id] # sale_id + stockcheck = StockCheck.find(stock_id) + stockcheck_items = stockcheck.stock_check_items + member_info = nil + unique_code = "StockPrint" + + shop_details = Shop.find(1) + checker = Employee.find(stockcheck.check_by) + print_settings=PrintSetting.find_by_unique_code(unique_code) + printer = Printer::ReceiptPrinter.new(print_settings) + + printer.print_stock_check_result(print_settings,stockcheck, stockcheck_items,checker.name, shop_details) + + end + # before_action :set_stock_check, only: [:show, :edit, :update, :destroy] # GET /stock_checks diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index 4bd25201..18af1dd1 100644 --- a/app/models/printer/receipt_printer.rb +++ b/app/models/printer/receipt_printer.rb @@ -74,7 +74,7 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker # print as print copies in printer setting count = printer_settings.print_copies - begin + begin if count == 1 pdf.render_file "tmp/receipt_bill_#{sale_data.receipt_no}.pdf" self.print("tmp/receipt_bill_#{sale_data.receipt_no}.pdf") @@ -84,9 +84,16 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker end count -= 1 - end until count == 0 + end until count == 0 end + # stock check + def print_stock_check_result(print_settings,stockcheck, stockcheck_items,checker_name, shop_details) + pdf = StockResultPdf.new(print_settings,stockcheck, stockcheck_items,checker_name, shop_details) + pdf.render_file "tmp/print_stock_check_result.pdf" + self.print("tmp/print_stock_check_result.pdf") + end + #Queue No Print def print_queue_no(printer_settings,queue) #Use CUPS service diff --git a/app/pdf/stock_result_pdf.rb b/app/pdf/stock_result_pdf.rb new file mode 100644 index 00000000..489fb0ae --- /dev/null +++ b/app/pdf/stock_result_pdf.rb @@ -0,0 +1,92 @@ +class StockResultPdf < 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,:text_width + + def initialize(printer_settings,stockcheck, stockcheck_items,checker_name, shop_details) + self.page_width = printer_settings.page_width #PrintSetting.where("name = ?","Close Cashier").first.page_width + self.page_height = printer_settings.page_height + self.margin = 5 + self.price_width = 40 + self.qty_width = 20 + self.total_width = 40 + self.item_width = self.page_width - ((self.price_width + self.qty_width + self.total_width)) + self.item_height = 15 + self.item_description_width = (self.page_width-20) / 2 + self.label_width = 100 + + self.text_width = (self.page_width - 80) - self.price_width / 3 + # @item_width = self.page_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 => [printer_settings.heading_space, self.margin, self.margin, self.margin], :page_size => [self.page_width, self.page_height]) + + # font "public/fonts/#{font_name}".to_s + ".ttf".to_s + # font "public/fonts/Zawgyi-One.ttf" + # font "public/fonts/padauk.ttf" + self.header_font_size = 10 + self.item_font_size = 8 + + header( shop_details) + + stroke_horizontal_rule + + detail(stockcheck,stockcheck_items, checker_name) + end + + def header (shop_details) + move_down 7 + text "#{shop_details.name}", :left_margin => -10, :size => self.header_font_size,:align => :center + move_down 5 + text "#{shop_details.address}", :size => self.item_font_size,:align => :center + # move_down self.item_height + move_down 5 + text "#{shop_details.phone_no}", :size => self.item_font_size,:align => :center + move_down 5 + + stroke_horizontal_rule + end + + def detail(stockcheck, stockcheck_items, checker_name) + move_down 7 + y_position = cursor + bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do + text "Checker : ", :size => self.item_font_size,:align => :left + end + bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do + text "#{checker_name}" , :size => self.item_font_size,:align => :left + end + + y_position = cursor + bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do + text "Check Start Time : ", :size => self.item_font_size,:align => :left + end + bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do + text "#{ stockcheck.check_start.utc.getlocal.strftime('%d-%m-%Y %I:%M %p') }" , :size => self.item_font_size,:align => :left + end + + y_position = cursor + bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do + text "Check End Time ", :size => self.item_font_size,:align => :left + end + bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do + text "#{ stockcheck.check_start.utc.getlocal.strftime('%d-%m-%Y %I:%M %p') }" , :size => self.item_font_size,:align => :left + end + + if stockcheck_items.length > 0 + stockcheck_items.each do |st| + move_down 5 + y_position = cursor + + bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do + text "#{ st.item_code }", :size => self.item_font_size,:align => :left + end + bounding_box([self.item_description_width,y_position], :width =>self.label_width) do + text "#{st.stock_count.to_i}" , :size => self.item_font_size,:align => :right + end + end + end + move_down 5 + stroke_horizontal_rule + end +end diff --git a/app/views/inventory/stock_checks/show.html.erb b/app/views/inventory/stock_checks/show.html.erb index 09ff16b5..4d0e83d0 100644 --- a/app/views/inventory/stock_checks/show.html.erb +++ b/app/views/inventory/stock_checks/show.html.erb @@ -71,4 +71,13 @@ $('#save_to_journal').on('click', function(){ } }) }) + +$('#print').on('click',function(){ + check_id = $('#stock_check_id').val(); + $.ajax({ + type: 'post', + url: '<%= inventory_print_stock_check_path %>', + data: 'stock_check_id='+ check_id + }) +}) diff --git a/config/routes.rb b/config/routes.rb index 07550bfe..344eab43 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -340,6 +340,7 @@ Rails.application.routes.draw do post 'save_stock' => 'stock_checks#create', as:'stock_check_save' get '/stock_checks/:id' => 'stock_checks#show' post 'save_to_journal' => 'stock_checks#save_to_journal', as: 'save_to_journal' + post 'print_stock_check' => 'stock_checks#print_stock_check', as: 'print_stock_check' # resources :stock_checks resources :stock_journals resources :inventory_definitions diff --git a/dump.rdb b/dump.rdb index bdc14f90e413d3bba62ef54067183a1b53026148..c92644232990e62aed0295b08f00a1ce8d263f35 100644 GIT binary patch delta 87 zcmV-d0I2_o28jlcFc`bfr&;<4b#rB8Ep26O!m#ri0R8~`5do8X0U5Dj8UY3ThD(Gu tldJ(Q3^qAAF)%JQHZ?XeGn3{4)suVyE0bXX7L(8dF$jMd+Yx?Ut_82qA3Oj6 delta 87 zcmeBV>tvf?AQ4l!Jn|PuX>n?bZf