diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index 87b74809..b2f94bc0 100644 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -51,6 +51,7 @@ $(document).ready(function(){ var customer_id=$(this).find(".customer-id").text(); show_customer_details(customer_id); + $("#re-print").val(unique_id); var cashier=""; var receipt_date=""; @@ -199,6 +200,14 @@ $(document).ready(function(){ return false; }); + $('#re-print').click(function() { + var sale_id = $(".selected-item").find(".orders-id").text(); + + window.location.href = '/origami/'+ sale_id + "/reprint" + + return false; + }); + function show_customer_details(customer_id){ if(window.location.pathname.substring(0, 12) == "/origami/SAL"){ @@ -297,19 +306,25 @@ function control_button(order_status){ $("#request_bills").prop('disabled', true); $("#discount").prop('disabled', false); $("#pay-bill").prop('disabled', false); + $("#re-print").prop('disabled', true); } else if(order_status=="new") { $("#customer").prop('disabled', false); $("#request_bills").prop('disabled', false); $("#discount").prop('disabled', true); $("#pay-bill").prop('disabled', true); + $("#re-print").prop('disabled', true); + }else if(order_status=="completed"){ + $("#re-print").prop('disabled', false); } else { $("#customer").prop('disabled', true); $("#request_bills").prop('disabled', true); $("#discount").prop('disabled', true); $("#pay-bill").prop('disabled', true); + $("#re-print").prop('disabled', true); } + } /* For Receipt - Update Balance */ diff --git a/app/controllers/crm/dining_queues_controller.rb b/app/controllers/crm/dining_queues_controller.rb index 9e8cd06c..99a68fe3 100644 --- a/app/controllers/crm/dining_queues_controller.rb +++ b/app/controllers/crm/dining_queues_controller.rb @@ -15,6 +15,7 @@ class Crm::DiningQueuesController < BaseCrmController # GET /crm/dining_queues/new def new @dining_queue = DiningQueue.new + @queue_no = DiningQueue.generate_queue_no end # GET /crm/dining_queues/1/edit @@ -25,7 +26,9 @@ class Crm::DiningQueuesController < BaseCrmController # POST /crm/dining_queues.json def create @dining_queue = DiningQueue.new(dining_queue_params) - + +puts "ffffffffffff" +puts @queue_no respond_to do |format| if @dining_queue.save format.html { redirect_to crm_dining_queues_path, notice: 'Dining queue was successfully created.' } diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 01cedcbe..92c4fe3f 100644 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -77,4 +77,28 @@ class Origami::PaymentsController < BaseOrigamiController end end end + + def reprint + + sale_id = params[:sale_id] + + saleObj = Sale.find(sale_id) + + unique_code = "ReceiptBillPdf" + customer= Customer.find(saleObj.customer_id) + + # get member information + member_info = Customer.get_member_account(customer) + + # get printer info + print_settings=PrintSetting.find_by_unique_code(unique_code) + + # Calculate Food and Beverage Total + food_total, beverage_total = SaleItem.calculate_food_beverage(saleObj.sale_items) + + printer = Printer::ReceiptPrinter.new(print_settings) + printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, food_total, beverage_total, member_info) + end + + end diff --git a/app/controllers/settings/order_queue_stations_controller.rb b/app/controllers/settings/order_queue_stations_controller.rb index 46fcb54d..e8b9bbe0 100644 --- a/app/controllers/settings/order_queue_stations_controller.rb +++ b/app/controllers/settings/order_queue_stations_controller.rb @@ -4,7 +4,8 @@ class Settings::OrderQueueStationsController < ApplicationController # GET /settings/order_queue_stations # GET /settings/order_queue_stations.json def index - @settings_order_queue_stations = OrderQueueStation.all.active + @settings_order_queue_stations = OrderQueueStation.all + @settings_order_queue_stations = Kaminari.paginate_array(@settings_order_queue_stations).page(params[:page]).per(50) end # GET /settings/order_queue_stations/1 diff --git a/app/controllers/transactions/manual_sales_controller.rb b/app/controllers/transactions/manual_sales_controller.rb new file mode 100644 index 00000000..77dd4371 --- /dev/null +++ b/app/controllers/transactions/manual_sales_controller.rb @@ -0,0 +1,77 @@ +class Transactions::ManualSalesController < ApplicationController + + def void + @sale = params[:sale_id] + @reason = Lookup.where("lookup_type = 'void_reason'") + respond_to do |format| + format.html # index.html.erb + format.json { render json: @sales } + end + end + + def manual_void_sale + sale_id = params[:sale_id] + reason = params[:reason] + sale = Sale.find(sale_id) + sale.sale_status = 'void' + sale.requested_by = current_login_employee.id + if sale.save + @sale = SaleAudit.record_audit_void(sale_id, current_login_employee.id, current_login_employee.id, reason) + + if sale.sale_orders + + sale.sale_orders.each do |bo| + order =Order.find(bo.order_id) + order.status= 'void' + order.save + booking_order = BookingOrder.find_by_order_id(bo.order_id) + + if booking_order.booking_id + booking = Booking.find(booking_order.booking_id) + dining_facility = booking.dining_facility + dining_facility.status = 'available' + dining_facility.save + end + end + + end + end + respond_to do |format| + format.html { redirect_to transactions_sales_url, notice: 'Sale was successfully void.' } + end + + end + + def manual_complete_sale + sale_id = params[:sale_id] + sale = Sale.find(sale_id) + + sale.sale_status = 'completed' + sale.requested_by = current_login_employee.id + remark = "Complete for Sale ID #{sale_id} By #{current_login_employee.name}" + if sale.save + @sale = SaleAudit.record_audit_complete(sale_id, remark, current_login_employee.id) + + if sale.sale_orders + + sale.sale_orders.each do |bo| + # order =Order.find(bo.order_id) + # order.status= 'void' + # order.save + booking_order = BookingOrder.find_by_order_id(bo.order_id) + + if booking_order.booking_id + booking = Booking.find(booking_order.booking_id) + dining_facility = booking.dining_facility + dining_facility.status = 'available' + dining_facility.save + end + end + + end + + end + redirect_to transactions_sales_path + end + +end diff --git a/app/controllers/transactions/sales_controller.rb b/app/controllers/transactions/sales_controller.rb index 82be6f59..fed62a34 100644 --- a/app/controllers/transactions/sales_controller.rb +++ b/app/controllers/transactions/sales_controller.rb @@ -9,23 +9,30 @@ class Transactions::SalesController < ApplicationController receipt_no = params[:receipt_no] today = Date.today - if receipt_no.nil? - sales = Sale.order("sale_id desc") + if receipt_no.nil? && search_date.nil? + @sales = Sale.where("NOT sale_status = 'void' " ).order("sale_id desc").limit(500) + @sales = Kaminari.paginate_array(@sales).page(params[:page]).per(50) else - order = Sale.search(receipt_no) - if order.count > 0 - sales = order + if !search_date.blank? && receipt_no.blank? + sale = Sale.where("DATE_FORMAT(receipt_date,'%d-%m-%Y') = ? and NOT sale_status = 'void' ", search_date).order("sale_id desc").limit(500).page(params[:page]) + elsif !search_date.blank? && !receipt_no.blank? + sale = Sale.where("receipt_no LIKE ? or DATE_FORMAT(receipt_date,'%d-%m-%Y') = ? and NOT sale_status = 'void' ", "%#{receipt_no}%", search_date).order("sale_id desc").limit(500).page(params[:page]) + else + sale = Sale.where("receipt_no LIKE ? and NOT sale_status = 'void' ", receipt_no).order("sale_id desc").limit(500).page(params[:page]) + end + if sale.count > 0 + @sales = sale + @sales = Kaminari.paginate_array(@sales).page(params[:page]).per(50) else - sales = Sale.order("sale_id desc") - - end - end - @sales = Kaminari.paginate_array(sales).page(params[:page]).per(50) + @sales = 0 + end + end respond_to do |format| format.html # index.html.erb format.json { render json: @sales } end + end # GET /transactions/sales/1 @@ -43,6 +50,18 @@ class Transactions::SalesController < ApplicationController end @sale_receivables = SalePayment.where('sale_id = ?', @sale.id) + + #get customer amount + @customer = Customer.find(@sale.customer_id) + response = Customer.get_member_account(@customer) + + if(response["status"] == true) + @membership = response["data"] + else + @membership = 0 + end + #end customer amount + respond_to do |format| format.html # show.html.erb format.json { render json: @sale } @@ -98,28 +117,6 @@ class Transactions::SalesController < ApplicationController end end - def void - @sale = params[:sale_id] - @reason = Lookup.where("lookup_type = 'void_reason'") - end - - def manual_void_sale - - sale_id = params[:sale_id] - reason = params[:reason] - sale = Sale.find(sale_id) - sale.sales_status = 'void' - sale.remarks = reason - sale.void_by = current_user.id - if sale.save - sale =SaleAudit.record_audit_void(sale_id, current_user.id, current_user.id, reason) - end - respond_to do |format| - format.html { redirect_to transactions_sales_url, notice: 'Sale was successfully void.' } - end - - end - private # Use callbacks to share common setup or constraints between actions. def set_transactions_sale diff --git a/app/models/dining_queue.rb b/app/models/dining_queue.rb index ea6a1381..09f8b6b5 100644 --- a/app/models/dining_queue.rb +++ b/app/models/dining_queue.rb @@ -1,2 +1,7 @@ class DiningQueue < ApplicationRecord + + def self.generate_queue_no + queue_no = DiningQueue.all.count + 1 + return queue_no + end end diff --git a/app/models/sale_audit.rb b/app/models/sale_audit.rb index 29daa796..f8c38857 100644 --- a/app/models/sale_audit.rb +++ b/app/models/sale_audit.rb @@ -6,19 +6,30 @@ class SaleAudit < ApplicationRecord belongs_to :sale - def record_audit_void(sale_id, void_by, approved_by, reason) + def self.record_audit_void(sale_id, void_by, approved_by, reason) #sale_audit - sale_audit = SaleAudit.new() - sale_audit.sale_id = sale_id - sale_audit.action = "SALEVOID" - sale_audit.action_at = DateTime.now.utc - sale_audit.action_by = void_by + sale_audit = SaleAudit.new() + sale_audit.sale_id = sale_id + sale_audit.action = "SALEVOID" + sale_audit.action_at = DateTime.now.utc + sale_audit.action_by = void_by sale_audit.approved_by = approved_by - sale_audit.remark = reason + sale_audit.remark = reason sale_audit.save! #sale_audit. end + def self.record_audit_complete(sale_id, remark, action_by) + sale_audit = SaleAudit.new() + sale_audit.sale_id = sale_id + sale_audit.action = "SALECOMPLETE" + sale_audit.action_at = DateTime.now.utc + sale_audit.action_by = action_by + sale_audit.remark = remark + sale_audit.approved_by = Time.now + sale_audit.save! + end + def record_audit_discount(sale_id, discount_by, approved_by, reason) #sale_audit sale_audit = SaleAudit.new() diff --git a/app/views/crm/customers/show.html.erb b/app/views/crm/customers/show.html.erb index b909a1c8..d806ec34 100644 --- a/app/views/crm/customers/show.html.erb +++ b/app/views/crm/customers/show.html.erb @@ -16,9 +16,9 @@ -
+
-
+
@@ -115,7 +115,7 @@
-
+

Sale Details

diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 9f6cd7d6..66d65aea 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -383,6 +383,6 @@ - + diff --git a/app/views/settings/order_queue_stations/index.html.erb b/app/views/settings/order_queue_stations/index.html.erb index c87ba5f7..03da3c23 100644 --- a/app/views/settings/order_queue_stations/index.html.erb +++ b/app/views/settings/order_queue_stations/index.html.erb @@ -42,5 +42,5 @@ <% end %>
- + <%= paginate @settings_order_queue_stations %>
diff --git a/app/views/transactions/sales/void.html.erb b/app/views/transactions/manual_sales/void.html.erb similarity index 93% rename from app/views/transactions/sales/void.html.erb rename to app/views/transactions/manual_sales/void.html.erb index aef0aa40..0bcd6db6 100644 --- a/app/views/transactions/sales/void.html.erb +++ b/app/views/transactions/manual_sales/void.html.erb @@ -60,19 +60,15 @@ var reason = $('input[type="radio"]:checked').val(); console.log(reason) - - var url = '<% transactions_manual_void_sale_path()%>'; var sale_id = $(this).find(".customer-id").text(); $.ajax({ type: 'POST', - url: 'sales/manual_void_sale', + url: 'manual_void_sale', data: {reason: reason, sale_id: sale_id}, success: function(data){ - window.location.href = "transactions/sales" + // window.location.href = "transactions/sales" } }); - - }); }); diff --git a/app/views/transactions/sales/index.html.erb b/app/views/transactions/sales/index.html.erb index ee82eb8b..b7e73219 100644 --- a/app/views/transactions/sales/index.html.erb +++ b/app/views/transactions/sales/index.html.erb @@ -20,9 +20,9 @@ <%= form_tag transactions_sales_path, :method => :get do %>
- + - +
<% end %> @@ -41,23 +41,28 @@ - <% @sales.each do |sale| %> - - - <%= sale.sale_id %> - <%= sale.receipt_no %> - <%= sale.grand_total rescue '-' %> - <%= sale.total_tax %> - <%= sale.cashier_name rescue '-' %> - <%= sale.sale_status %> - <%= sale.receipt_date.strftime("%d-%m-%Y") %> - <%= link_to 'Show', transactions_sale_path(sale) %> - + <% if @sales != 0 %> + <% @sales.each do |sale| %> + + <%= sale.sale_id %> + <%= sale.receipt_no %> + <%= sale.grand_total rescue '-' %> + <%= sale.total_tax %> + <%= sale.cashier_name rescue '-' %> + <%= sale.sale_status %> + <%= sale.receipt_date.strftime("%d-%m-%Y") %> + <%= link_to 'Show', transactions_sale_path(sale) %> + + <% end %> + <% else %> +

There is no data for search....

<% end %>
- <%= paginate @sales %> + <% if @sales != 0 %> + <%= paginate @sales %> + <% end %>
diff --git a/app/views/transactions/sales/show.html.erb b/app/views/transactions/sales/show.html.erb index 05514c7b..5f6365e5 100644 --- a/app/views/transactions/sales/show.html.erb +++ b/app/views/transactions/sales/show.html.erb @@ -6,7 +6,7 @@ Sale
  • - <%= @sale.sale_id %> + <%= @sale.sale_id %>
  • @@ -21,11 +21,11 @@ Sale Details + - @@ -124,6 +124,9 @@
    + + + @@ -154,11 +157,11 @@ -
    -

    Sale Details

    -
    +
    -
    +
    + +
    @@ -171,13 +174,13 @@ - + diff --git a/config/routes.rb b/config/routes.rb index 299c1b87..19b07979 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -83,7 +83,7 @@ Rails.application.routes.draw do post "/:id/discount" => "discounts#create" get "/:id/request_bills" => "request_bills#print" - + get '/:sale_id/reprint' => 'payments#reprint' ,:defaults => { :format => 'json' } #--------- Payment ------------# get 'sale/:sale_id/payment' => 'payments#show' @@ -198,8 +198,10 @@ Rails.application.routes.draw do namespace :transactions do resources :sales resources :orders - get "/sales/:sale_id/void" =>"sales#void", :as => "void" - post "sales/manual_void_sale", to: "sales#manual_void_sale", :as => "manual_void_sale" + + get "/sales/:sale_id/manual_complete_sale" =>"manual_sales#manual_complete_sale", :as => "manual_complete_sale" + get "/sales/:sale_id/void" =>"manual_sales#void", :as => "void" + post "sales/:sale_id/manual_void_sale", to: "manual_sales#manual_void_sale", :as => "manual_void_sale" end #--------- Reports Controller Sections ------------#
     
    Order ID Menu Item