diff --git a/Gemfile b/Gemfile index 01a87af7..02dca6af 100644 --- a/Gemfile +++ b/Gemfile @@ -59,6 +59,8 @@ gem 'sidekiq' # Pagination gem 'kaminari', '~> 0.16.3' +# Datatable +gem 'filterrific' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development diff --git a/Gemfile.lock b/Gemfile.lock index 051e1595..4235d035 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -72,6 +72,7 @@ GEM faker (1.7.3) i18n (~> 0.5) ffi (1.9.18) + filterrific (2.1.2) font-awesome-rails (4.7.0.2) railties (>= 3.2, < 5.2) globalid (0.4.0) @@ -238,6 +239,7 @@ DEPENDENCIES database_cleaner factory_girl_rails (~> 4.0) faker + filterrific font-awesome-rails httparty (~> 0.15.5) jbuilder (~> 2.5) diff --git a/app/assets/javascripts/CRM.js b/app/assets/javascripts/CRM.js new file mode 100644 index 00000000..66f161af --- /dev/null +++ b/app/assets/javascripts/CRM.js @@ -0,0 +1,17 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. JavaScript code in this file should be added after the last require_* statement. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery +//= require bootstrap +//= require jquery_ujs +//= require turbolinks +//= require cable \ No newline at end of file diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index 7df365ec..2cddf699 100644 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -40,31 +40,36 @@ $(document).ready(function(){ // complete for queue item $('.order-complete').on('click',function(){ - var _self= $(this); + var _self = $(this); // To know in ajax return var assigned_item_id=$(this).attr('id').substr(15); var params = { 'id':assigned_item_id }; - var station=$(this).parent().parent(".queue_station").parent().parent().attr('id'); $.ajax({ type: 'POST', url: '/oqs/update_delivery', data: params, dataType: 'json', - success: function(data){ - var queue_station=_self.parent().parent(".queue_station"); + success: function(data){ + for (i = 0; i < data.length; i++) { + var queue_station = $('#assigned_queue_' + data[i]).parent().parent(".queue_station"); + var station = queue_station.parent().parent().attr('id'); - // Remove a queue card from current station - queue_station.remove(); + // Remove a queue card from current station + queue_station.remove(); - // Remove a queue card from current station - queue_station.children('.card-footer').remove(); - - // Add removed queue card from station to completed - $("#completed").children('.card-columns').append(queue_station); + // Remove a queue card from current station + queue_station.children('.card-footer').remove(); + + // Add removed queue card from station to completed + $("#completed").children('.card-columns').append(queue_station); - // update queue item count in station - $("#"+station+"_count").text(parseInt($("#"+station+"_count").text())-1); - $("#completed_count").text(parseInt($("#completed_count").text())+1); + // update queue item count in each station + var station_count=parseInt($("#"+station+"_count").text()) - 1; + $("#"+station+"_count").text(station_count); + } + + // update queue item count in completed station + $("#completed_count").text(parseInt($("#completed_count").text()) + data.length); alert("updated!"); } diff --git a/app/assets/javascripts/crm/dining_queues.coffee b/app/assets/javascripts/crm/dining_queues.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/crm/dining_queues.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index 21ec1c92..14f9fbe9 100644 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -17,10 +17,20 @@ //= require cable $(document).ready(function(){ + // Enable/Disable Button + control_button("disabled"); + $(".orders").on('click', function(){ - var zone_name=$(this).find(".orders-table").text(); + $("#order-sub-total").text(''); + // $("#order-food").text(''); + // $("#order-beverage").text(''); + $("#order-discount").text(''); + $("#order-Tax").text(''); + $("#order-grand-total").text(''); + + var zone_name=$(this).find(".orders-table").text(); var receipt_no=$(this).find(".orders-receipt-no").text(); - var unique_id=$(this).find(".orders-id").text(); + var unique_id = $(this).find(".orders-id").text(); var order_status=$(this).find(".orders-order-status").text().trim(); // Enable/Disable Button @@ -33,6 +43,10 @@ $(document).ready(function(){ $("#customer").attr('disabled','disabled'); } + var customer_id=$(this).find(".customer-id").text(); + show_customer_details(customer_id); + + var cashier=""; var receipt_date=""; var sub_total=0; @@ -46,10 +60,16 @@ $(document).ready(function(){ // AJAX call for order $.ajax({ - type: "GET", - url: "origami/" + unique_id, - data: { 'id' : unique_id }, - success:function(result){ + type: "POST", + url: "/origami/" + unique_id, + data: { 'booking_id' : unique_id }, + success:function(result){ +// ======= +// type: "GET", +// url: "origami/" + unique_id, +// data: { 'id' : unique_id }, +// success:function(result){ +// >>>>>>> 5ee3ae257a59269b651dcc5c0232b95d7f41fb77 for (i = 0; i < result.length; i++) { var data = JSON.stringify(result[i]); var parse_data = JSON.parse(data); @@ -60,19 +80,20 @@ $(document).ready(function(){ receipt_date = result[i].receipt_date; $("#receipt_no").text(receipt_no); - $("#cashier").text(cashier==null?"":cashier); + $("#cashier").text(cashier == null ? "" : cashier); $("#receipt_date").text(receipt_date); //Receipt Charges sub_total += (parse_data.qty*parse_data.price); - discount_amount = parse_data.discount_amount; + + discount_amount = parse_data.discount_amount == null? '0.0' : parse_data.discount_amount; tax_amount = parse_data.tax_amount; grand_total_amount = parse_data.grand_total_amount; $("#order-sub-total").text(sub_total); - $("#order-food").text(''); - $("#order-beverage").text(''); + // $("#order-food").text(''); + // $("#order-beverage").text(''); $("#order-discount").text(discount_amount); $("#order-Tax").text(tax_amount); $("#order-grand-total").text(grand_total_amount); @@ -98,7 +119,7 @@ $(document).ready(function(){ $('#request_bills').click(function() { var order_id=$(".selected-item").find(".orders-id").text(); if(order_id!=""){ - window.location.href = '/origami/request_bills/'+ order_id + window.location.href = '/origami/' + order_id + '/request_bills' } else { alert("Please select an order!"); @@ -110,7 +131,7 @@ $(document).ready(function(){ $('#discount').click(function() { var order_id=$(".selected-item").find(".orders-id").text(); if(order_id!=""){ - window.location.href = '/origami/discount/'+ order_id + window.location.href = '/origami/' + order_id + '/discount' } else { alert("Please select an order!"); @@ -122,26 +143,33 @@ $(document).ready(function(){ // Pay Discount for Payment $("#pay-discount").on('click', function(){ var sale_id = $('#sale-id').text(); + var sale_item_id = $('.selected-item').attr('id'); var sub_total = $('#order-sub-total').text(); var grand_total = $('#order-grand-total').text(); var discount_type = $('#discount-type').val(); var discount_value = $('#discount-amount').val(); var discount_amount = discount_value; + if(sale_item_id == null){ + alert('Please select item row to discount!'); + return; + } + // For Percentage Discount if(discount_type == 1){ discount_amount=(sub_total*discount_value)/100; } - var params = {'sale_id': sale_id, 'grand_total' : grand_total, 'discount_type':discount_type, 'discount_value':discount_value, 'discount_amount':discount_amount}; + var params = {'sale_id': sale_id, 'sale_item_id': sale_item_id, 'grand_total' : grand_total, 'discount_type':discount_type, 'discount_value':discount_value, 'discount_amount':discount_amount}; $.ajax({ type: "POST", - url: "/origami/discount", + url: "/origami/" + sale_item_id + "/discount", data: params, success:function(result){ } }); }); + // Payment for Bill $('#pay-bill').click(function() { var sale_id=$(".selected-item").find(".orders-id").text(); @@ -157,10 +185,27 @@ $(document).ready(function(){ $('#customer').click(function() { var sale_id=$(".selected-item").find(".orders-id").text(); - window.location.href = '/crm/customers/'+ sale_id + "/assign_sale_id" + window.location.href = '/origami/'+ sale_id + "/add_customer" + return false; }); + function show_customer_details(customer_id){ + $('.customer_detail').removeClass('hide'); + //Start Ajax + $.ajax({ + type: "GET", + url: "origami/"+customer_id+"/get_customer/", + data: {}, + dataType: "json", + success: function(data) { + $("#customer_name").text(data.name); + $("#customer_name").text(data.name); + } + }); + //End Ajax +} + /* For Receipt - Calculate discount or tax */ $('.cashier_number').on('click', function(event){ if(event.handled !== true) { @@ -184,8 +229,9 @@ $(document).ready(function(){ case 'add': var input_value = $(this).attr("data-value"); - amount = parseInt(input_value) + parseInt(original_value); + amount = parseInt(input_value); $('#discount-amount').val(amount); + $('#discount-type').val(1); update_balance(); break; @@ -207,6 +253,11 @@ $(document).ready(function(){ } }); + $('.discount-item-row').on('click',function(){ + $('.discount-item-row').removeClass('selected-item'); + $(this).addClass('selected-item'); + }); + }); /* Button Control by Status */ @@ -221,6 +272,11 @@ function control_button(order_status){ $("#discount").prop('disabled', true); $("#pay-bill").prop('disabled', true); } + else { + $("#request_bills").prop('disabled', true); + $("#discount").prop('disabled', true); + $("#pay-bill").prop('disabled', true); + } } /* For Receipt - Update Balance */ diff --git a/app/assets/stylesheets/CRM.scss b/app/assets/stylesheets/CRM.scss index b0f802f1..f43cc3f9 100644 --- a/app/assets/stylesheets/CRM.scss +++ b/app/assets/stylesheets/CRM.scss @@ -7,3 +7,5 @@ // min-height: 75rem; // padding-top: 4.5rem; // } + + diff --git a/app/assets/stylesheets/origami.scss b/app/assets/stylesheets/origami.scss index c37f2678..5e361f7e 100644 --- a/app/assets/stylesheets/origami.scss +++ b/app/assets/stylesheets/origami.scss @@ -16,11 +16,14 @@ font-size:18px; } -.cashier_number{ - width: 30%; - height:71px; - line-height:71px; +.orders-table { + cursor: pointer; +} +.cashier_number{ + width: 33%; + height:70px; + line-height:70px; text-align:center; background:#54A5AF; // float:left; @@ -32,8 +35,8 @@ .pay{ width: 98%; - height:210px; - line-height:210px; + height:211px; + line-height:211px; text-align:center; font-size:20px; color:white; @@ -44,15 +47,20 @@ } .long{ - width:49% + width:49%; } .sold { background-color: red; } +.paid { + background-color: green; +} + .selected-item { - background-color: blue; + color: #fff !important; + background-color: blue !important; } /* Reciept Style */ @@ -101,3 +109,17 @@ select.form-control { height: inherit !important; } + +.form-horizontal .form-group { + margin-right: 0px !important; +} + +/* Discount */ + +.discount-item-row { + cursor: pointer; +} + +tr.discount-item-row:hover { + background-color: #e3e3e3 !important; +} diff --git a/app/controllers/api/customers_controller.rb b/app/controllers/api/customers_controller.rb index 8ce2041c..2adc7c8a 100644 --- a/app/controllers/api/customers_controller.rb +++ b/app/controllers/api/customers_controller.rb @@ -9,4 +9,9 @@ class Api::CustomersController < ActionController::API def show @customer = Customer.find_by(params[:id]) end + + #Show customer detail by Order item + def get_customer_order + @customer = Customer.find(params[:id]) + end end diff --git a/app/controllers/api/orders_controller.rb b/app/controllers/api/orders_controller.rb index df9b1542..8bd348e2 100644 --- a/app/controllers/api/orders_controller.rb +++ b/app/controllers/api/orders_controller.rb @@ -38,9 +38,8 @@ class Api::OrdersController < Api::ApiController #Create Table Booking or Room Booking - if !params["booking_id"].nil? && params[:booking_id].to_i > 0 - #@order.new_booking = false - @order.new_booking = true + if !params["booking_id"].nil? + @order.new_booking = false @order.booking_id = params[:booking_id] end diff --git a/app/controllers/base_report_controller.rb b/app/controllers/base_report_controller.rb new file mode 100644 index 00000000..77e38f2c --- /dev/null +++ b/app/controllers/base_report_controller.rb @@ -0,0 +1,8 @@ +class BaseReportController < ActionController::Base + include LoginVerification + + #before_action :check_installation + protect_from_forgery with: :exception + + +end diff --git a/app/controllers/crm/bookings_controller.rb b/app/controllers/crm/bookings_controller.rb index eeb19f75..65511512 100644 --- a/app/controllers/crm/bookings_controller.rb +++ b/app/controllers/crm/bookings_controller.rb @@ -1,4 +1,4 @@ -class Crm::BookingsController < ApplicationController +class Crm::BookingsController < BaseCrmController def update_booking booking = Booking.find(params[:booking_id]) diff --git a/app/controllers/crm/customers_controller.rb b/app/controllers/crm/customers_controller.rb index e0168fb5..f6159cb7 100644 --- a/app/controllers/crm/customers_controller.rb +++ b/app/controllers/crm/customers_controller.rb @@ -1,16 +1,26 @@ -class Crm::CustomersController < ApplicationController +class Crm::CustomersController < BaseCrmController before_action :set_crm_customer, only: [:show, :edit, :update, :destroy] # GET /crm/customers # GET /crm/customers.json def index - @sale_id = 0 - @crm_customers = Customer.all - @crm_customer = Customer.new - @membership = Customer.get_member_group - if @membership["status"] == true - @member_group = @membership["data"] + filter = params[:filter] + + if filter.nil? + @crm_customers = Customer.order("customer_id").page(params[:page]) + #@products = Product.order("name").page(params[:page]).per(5) + else + @crm_customers = Customer.where("name LIKE ?", "%#{filter}%").order("name").page(params[:page]) end + #@crm_customers = Customer.all + @crm_customer = Customer.new + @crm_customer.valid? + + + # @membership = Customer.get_member_group + # if @membership["status"] == true + # @member_group = @membership["data"] + # end respond_to do |format| format.html # index.html.erb format.json { render json: @crm_customers } @@ -41,8 +51,6 @@ class Crm::CustomersController < ApplicationController respond_to do |format| if @crm_customers.save - - name = customer_params[:name] phone = customer_params[:contact_no] email = customer_params[:email] @@ -63,40 +71,37 @@ class Crm::CustomersController < ApplicationController } ) - if response["status"] == true + if response["status"] == true customer = Customer.find(@crm_customers.customer_id) status = customer.update_attributes(membership_id: response["customer_datas"]["id"]) - if params[:sale_id] != 0 - format.html { redirect_to crm_customers_path, notice: 'Customer was successfully created.' } + + if params[:sale_id].nil? + + format.html { redirect_to '/origami/'+params[:sale_id]+'/add_customer', notice: 'Customer was successfully created.' } else - format.html { redirect_to '/crm/customers/'+params[:sale_id]+'/assign_sale_id', notice: 'Customer was successfully created.' } + format.html { redirect_to crm_customers_path, notice: 'Customer was successfully created.' } end # format.json { render :index, status: :created, location: @crm_customers } else - + @crm_customers.destroy - - if params[:sale_id] != 0 - format.html { redirect_to crm_customers_path, notice: response["message"] } - + if params[:sale_id].nil? + format.html { redirect_to '/origami/'+params[:sale_id]+'/add_customer'} else - format.html { redirect_to '/crm/customers/'+params[:sale_id]+'/assign_sale_id', notice: response["message"] } + format.html { redirect_to crm_customers_path, notice: response["message"] } end - end - - # format.json { render :index, status: :created, location: @crm_customers } - else - if params[:sale_id] != 0 - format.html { redirect_to crm_customers_path} - format.json { render json: @crm_customers.errors, status: :unprocessable_entity } - - else - format.html { redirect_to '/crm/customers/'+params[:sale_id]+'/assign_sale_id', notice: response["message"] } - end - + + if params[:sale_id].nil? + + format.html { redirect_to '/origami/'+params[:sale_id]+'/add_customer'} + else + + format.html { redirect_to crm_customers_path} + format.json { render json: @crm_customers.errors, status: :unprocessable_entity } + end end end end @@ -133,7 +138,7 @@ class Crm::CustomersController < ApplicationController else - format.html { render :edit } + format.html { render :index } format.json { render json: @crm_customer.errors, status: :unprocessable_entity } end @@ -153,7 +158,6 @@ class Crm::CustomersController < ApplicationController # DELETE /crm/customers/1 # DELETE /crm/customers/1.json def get_sale_id - @sale_id = params[:sale_id] @crm_customers = Customer.all @crm_customer = Customer.new @@ -176,6 +180,6 @@ class Crm::CustomersController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def customer_params - params.require(:customer).permit(:name, :company, :contact_no, :email, :date_of_birth, :membership_type, :membership_authentication_code) + params.require(:customer).permit(:name, :company, :contact_no, :email, :date_of_birth) end end diff --git a/app/controllers/crm/dining_queues_controller.rb b/app/controllers/crm/dining_queues_controller.rb new file mode 100644 index 00000000..9e8cd06c --- /dev/null +++ b/app/controllers/crm/dining_queues_controller.rb @@ -0,0 +1,74 @@ +class Crm::DiningQueuesController < BaseCrmController + before_action :set_dining_queue, only: [:show, :edit, :update, :destroy] + + # GET /crm/dining_queues + # GET /crm/dining_queues.json + def index + @dining_queues = DiningQueue.all + end + + # GET /crm/dining_queues/1 + # GET /crm/dining_queues/1.json + def show + end + + # GET /crm/dining_queues/new + def new + @dining_queue = DiningQueue.new + end + + # GET /crm/dining_queues/1/edit + def edit + end + + # POST /crm/dining_queues + # POST /crm/dining_queues.json + def create + @dining_queue = DiningQueue.new(dining_queue_params) + + respond_to do |format| + if @dining_queue.save + format.html { redirect_to crm_dining_queues_path, notice: 'Dining queue was successfully created.' } + format.json { render :show, status: :created, location: @dining_queue } + else + format.html { render :new } + format.json { render json: @dining_queue.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /crm/dining_queues/1 + # PATCH/PUT /crm/dining_queues/1.json + def update + respond_to do |format| + if @dining_queue.update(dining_queue_params) + format.html { redirect_to crm_dining_queues_path, notice: 'Dining queue was successfully updated.' } + format.json { render :show, status: :ok, location: @dining_queue } + else + format.html { render :edit } + format.json { render json: @dining_queue.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /crm/dining_queues/1 + # DELETE /crm/dining_queues/1.json + def destroy + @dining_queue.destroy + respond_to do |format| + format.html { redirect_to crm_dining_queues_path, notice: 'Dining queue was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_dining_queue + @dining_queue = DiningQueue.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def dining_queue_params + params.require(:dining_queue).permit(:name, :contact_no, :queue_no) + end +end diff --git a/app/controllers/crm/home_controller.rb b/app/controllers/crm/home_controller.rb index 9ae2b413..d1ee475b 100644 --- a/app/controllers/crm/home_controller.rb +++ b/app/controllers/crm/home_controller.rb @@ -1,8 +1,13 @@ class Crm::HomeController < BaseCrmController def index - @booking = Booking.all + @booking = Booking.all @customer = Customer.all + from = Time.now.beginning_of_day.utc + to = Time.now.end_of_day.utc + @queue = DiningQueue.where('created_at BETWEEN ? AND ?', from, to).order('queue_no ASC') + + # .where("dining_facilities.is_active=? and orders.date between ? and ?",true,from,to) end diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index 2b676f21..7af42166 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -27,10 +27,18 @@ class Oqs::HomeController < BaseOqsController # update delivery status when complete click def update_delivery_status + removed_item = [] assigned_item_id = params[:id] assigned_item=AssignedOrderItem.find(assigned_item_id) - assigned_item.delivery_status=true - assigned_item.save + assigned_items=AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); + + # update delivery status for completed same order items + assigned_items.each do |ai| + ai.delivery_status=true + ai.save + removed_item.push(ai.assigned_order_item_id) + end + render :json => removed_item.to_json end # Query for OQS with status diff --git a/app/controllers/oqs/print_controller.rb b/app/controllers/oqs/print_controller.rb index 8a12e439..1731f69c 100644 --- a/app/controllers/oqs/print_controller.rb +++ b/app/controllers/oqs/print_controller.rb @@ -1,31 +1,39 @@ class Oqs::PrintController < ApplicationController + # Print Order Item def print unique_code="OrderItemPdf" assigned_item_id=params[:id] - assigned_order_item=AssignedOrderItem.select("order_id, item_code").where("assigned_order_item_id='" + assigned_item_id + "'") + assigned_item=AssignedOrderItem.find(assigned_item_id) + assigned_items=AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); + # print when complete click print_settings=PrintSetting.find_by_unique_code(unique_code) order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) - order_queue_printer.print_order_item(print_settings,assigned_order_item[0].order_id, assigned_order_item[0].item_code ) - - # update print status when complete click - assigned_item=AssignedOrderItem.find(assigned_item_id) - assigned_item.print_status=true - assigned_item.save + order_queue_printer.print_order_item(print_settings,assigned_item.order_id, assigned_item.item_code ) + + # update print status for completed same order items + assigned_items.each do |ai| + ai.print_status=true + ai.save + end end + # Print Order Details def print_order_summary unique_code="OrderSummaryPdf" assigned_item_id=params[:id] - assigned_order_item=AssignedOrderItem.select("order_id").where('assigned_order_item_id='+assigned_item_id) + assigned_item=AssignedOrderItem.find(assigned_item_id) + assigned_items=AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); + # print when complete click print_settings=PrintSetting.find_by_unique_code(unique_code) order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) - order_queue_printer.print_order_summary(print_settings,assigned_order_item[0].order_id) + order_queue_printer.print_order_summary(print_settings,assigned_item.order_id) - # update print status when complete click - assigned_item=AssignedOrderItem.find(assigned_item_id) - assigned_item.print_status=true - assigned_item.save + # update print status for completed same order items + assigned_items.each do |ai| + ai.print_status=true + ai.save + end end end diff --git a/app/controllers/origami/customers_controller.rb b/app/controllers/origami/customers_controller.rb index d9bfc39b..7917b03f 100644 --- a/app/controllers/origami/customers_controller.rb +++ b/app/controllers/origami/customers_controller.rb @@ -1,7 +1,38 @@ class Origami::CustomersController < BaseOrigamiController #Form to add customer - def index + + end - def create + + # GET /crm/customers/1 + # GET /crm/customers/1.json + def show end + + + + def add_customer + + @sale_id = params[:sale_id] + filter = params[:filter] + + if filter.nil? + @crm_customers = Customer.order("name").page(params[:page]) + else + @crm_customers = Customer.where("name LIKE ?", "%#{filter}%").order("name").page(params[:page]) + end + @crm_customer = Customer.new + @membership = Customer.get_member_group + if @membership["status"] == true + @member_group = @membership["data"] + end + respond_to do |format| + # format.html { render :template => "crm/customers/index" } + format.html { render action: "index"} + format.json { render json: @crm_customers } + end + end + + end diff --git a/app/controllers/origami/discounts_controller.rb b/app/controllers/origami/discounts_controller.rb index daf68918..e80ca348 100644 --- a/app/controllers/origami/discounts_controller.rb +++ b/app/controllers/origami/discounts_controller.rb @@ -2,7 +2,7 @@ class Origami::DiscountsController < BaseOrigamiController #discount page show from origami index with selected order def index - sale_id = params[:id] + sale_id = params[:id] if Sale.exists?(sale_id) @sale_data = Sale.find(sale_id) end @@ -11,30 +11,32 @@ class Origami::DiscountsController < BaseOrigamiController #discount for selected order def create sale_id = params[:sale_id] + sale_item_id = params[:sale_item_id] discount_type = params[:discount_type] - discount_value = params[:discount_value] - discount_amount = params[:discount_amount] - grand_total = params[:grand_total] + discount_value = params[:discount_value] + discount_amount = params[:discount_amount] + grand_total = params[:grand_total] - if discount_type == 0 - remark="Discount " + discount_amount + " as net" - else - remark="Discount " + discount_amount + " as percentage" - end + if discount_type == 0 + remark="Discount " + discount_amount + " as net" + else + remark="Discount " + discount_amount + " as percentage" + end - #update discount for sale - sale = Sale.find(sale_id) - sale.total_discount = discount_amount - sale.grand_total = grand_total - sale.save + #update discount for sale + sale = Sale.find(sale_id) + sale.total_discount = sale.total_discount + discount_amount.to_f + sale.grand_total = grand_total + sale.save #save sale item for discount + origin_sale_item = SaleItem.find(sale_item_id) sale_item = SaleItem.new #pull sale_item.sale_id = sale_id - sale_item.product_code = 0 - sale_item.product_name = "Discount" + sale_item.product_code = origin_sale_item.product_code + sale_item.product_name = origin_sale_item.product_name + " Discount" sale_item.remark = remark sale_item.qty = 1 @@ -45,7 +47,7 @@ class Origami::DiscountsController < BaseOrigamiController sale_item.price = sale_item.qty * sale_item.unit_price sale_item.save - redirect_to origami_root_path + redirect_to origami_path(sale_id) end end diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index 9733e488..669c8a7f 100644 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -1,28 +1,67 @@ class Origami::HomeController < BaseOrigamiController def index + if params[:booking_id] != nil + type=params[:booking_id].split('-')[0]; + # Sale + if type == "SAL" + @selected_item = Sale.find(params[:booking_id]) + @selected_item_type="Sale" + # Booking + else + @selected_item = Order.find(params[:booking_id]) + @selected_item_type="Order" + end + end + + @completed_orders = Order.get_completed_order() @booking_orders = Order.get_booking_order_table() @booking_rooms = Order.get_booking_order_rooms() @orders = Order.get_orders() - end + end - def show - str = [] - type=params[:id].split('-')[0]; + def item_show + selection(params[:booking_id],1) + end + def selection(selected_id, is_ajax) + str = [] + type=selected_id.split('-')[0]; # Sale if type == "SAL" - @order_details = SaleItem.get_order_items_details(params[:id]) + @order_details = SaleItem.get_order_items_details(params[:booking_id]) @order_details.each do |ord_detail| str.push(ord_detail) end - render :json => str.to_json # Booking else - @order_details = OrderItem.get_order_items_details(params[:id]) + @order_details = OrderItem.get_order_items_details(params[:booking_id]) @order_details.each do |ord_detail| str.push(ord_detail) - end - render :json => str.to_json + end end + if is_ajax == 1 + render :json => str.to_json + else + str + end + end + + def update_sale_by_customer + + sale = Sale.find(params[:sale_id]) + status = sale.update_attributes(customer_id: params[:customer_id]) + + if status == true + render json: JSON.generate({:status => true}) + else + render json: JSON.generate({:status => false, :error_message => "Record not found"}) + + end + end + + def get_customer + @customer = Customer.find(params[:customer_id]) + + render :json => @customer.to_json end end diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index d1aa9e61..4e884aaf 100644 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -14,17 +14,23 @@ class Origami::RequestBillsController < BaseOrigamiController @sale_items = SaleItem.where("sale_id=?",@sale_id) else @sale_data = Sale.find_by_sale_id(check_booking.sale_id) - @sale_items = SaleItem.where("sale_id=?",@sale_id) + @sale_items = SaleItem.where("sale_id=?",@sale_data.sale_id) end unique_code = "ReceiptBillPdf" - customer_name = Customer.select("name").where('customer_id=' + @sale_data.customer_id) + customer= Customer.where('customer_id=' + @sale_data.customer_id) print_settings=PrintSetting.find_by_unique_code(unique_code) + # find order id by sale id + sale_order = SaleOrder.find_by_sale_id(@sale_data.sale_id) + + # Calculate Food and Beverage Total + food_total, beverage_total = SaleItem.calculate_food_beverage(@sale_items) + printer = Printer::ReceiptPrinter.new(print_settings) - printer.print_receipt_bill(print_settings,@sale_items,@sale_data,customer_name) - redirect_to origami_root_path + printer.print_receipt_bill(print_settings,@sale_items,@sale_data,customer.name, food_total, beverage_total) + redirect_to origami_path(sale_order.sale_id) end end diff --git a/app/controllers/reports/receipt_no_controller.rb b/app/controllers/reports/receipt_no_controller.rb new file mode 100644 index 00000000..05065fee --- /dev/null +++ b/app/controllers/reports/receipt_no_controller.rb @@ -0,0 +1,9 @@ +class Reports::ReceiptNoController < BaseReportController + def index + @hi = "hi" + end + + def show + + end +end \ No newline at end of file diff --git a/app/helpers/crm/dining_queues_helper.rb b/app/helpers/crm/dining_queues_helper.rb new file mode 100644 index 00000000..af60bd52 --- /dev/null +++ b/app/helpers/crm/dining_queues_helper.rb @@ -0,0 +1,2 @@ +module Crm::DiningQueuesHelper +end diff --git a/app/models/crm.rb b/app/models/crm.rb new file mode 100644 index 00000000..3407e215 --- /dev/null +++ b/app/models/crm.rb @@ -0,0 +1,5 @@ +module Crm + def self.table_name_prefix + 'crm_' + end +end diff --git a/app/models/customer.rb b/app/models/customer.rb index 9e980930..4f013678 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -9,7 +9,8 @@ class Customer < ApplicationRecord validates_presence_of :name, :contact_no, :email validates :contact_no, uniqueness: true validates :email, uniqueness: true - + + paginates_per 50 def self.get_member_group @@ -31,6 +32,14 @@ class Customer < ApplicationRecord end + def self.search(search) + if search + find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) + else + find(:all) + end + end + def lastest_invoices sales.where(:customer_id => self.id).order("created_at desc").limit(5) end diff --git a/app/models/dining_facility.rb b/app/models/dining_facility.rb index 9a4f7a75..a3f8948f 100644 --- a/app/models/dining_facility.rb +++ b/app/models/dining_facility.rb @@ -9,10 +9,11 @@ class DiningFacility < ApplicationRecord scope :active, -> {where(is_active: true)} def get_current_booking - booking = Booking.where("dining_facility_id = #{self.id} and booking_status ='occupied' and checkin_at between '#{DateTime.now.utc - 5.hours}' and '#{DateTime.now.utc}' and checkout_at is null").limit(1) + puts "enter booking" + booking = Booking.where("dining_facility_id = #{self.id} and booking_status ='assign' and checkin_at between '#{DateTime.now.utc - 5.hours}' and '#{DateTime.now.utc}' and checkout_at is null").limit(1) if booking.count > 0 then - return booking[0] + return booking[0].booking_id else return nil end diff --git a/app/models/dining_queue.rb b/app/models/dining_queue.rb new file mode 100644 index 00000000..dfcc5b43 --- /dev/null +++ b/app/models/dining_queue.rb @@ -0,0 +1,3 @@ +class DiningQueue < ApplicationRecord + +end diff --git a/app/models/order.rb b/app/models/order.rb index 4817c3ce..a76159be 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -28,11 +28,13 @@ class Order < ApplicationRecord booking = Booking.create({:dining_facility_id => self.table_id,:type => "TableBooking", :checkin_at => Time.now.utc, :checkin_by => self.employee_name, :booking_status => "assign" }) + table = DiningFacility.find(self.table_id) + table.status = "occupied" + table.save else if (self.booking_id.to_i > 0 ) booking = Booking.find(self.booking_id) end - end booking.save! @@ -220,13 +222,41 @@ class Order < ApplicationRecord .group("orders.order_id, order_items.order_items_id,dining_facilities.name") end + #Origami: Cashier : to view booking order Table + def self.get_booking_order_table + booking_orders = Booking.select("sales.receipt_no,orders.status as order_status,orders.customer_id as customer_id, + bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as table_name") + .joins("left join booking_orders on booking_orders.booking_id = bookings.booking_id") + .joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id") + .joins("left join orders on orders.order_id = booking_orders.order_id") + .joins("left join sales on sales.sale_id = bookings.sale_id") + .where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,true) + .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status") + + end + + #Origami: Cashier : to view booking order Table + def self.get_completed_order + completed_orders = Booking.select("sales.receipt_no,orders.status as order_status, + bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as table_name") + .joins("left join booking_orders on booking_orders.booking_id = bookings.booking_id") + .joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id") + .joins("left join orders on orders.order_id = booking_orders.order_id") + .joins("left join sales on sales.sale_id = bookings.sale_id") + + .where("sales.sale_status='completed'") + .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status") + + + end + #Origami: Cashier : to view booking order Table def self.get_booking_order_table booking_orders = Booking.select("sales.receipt_no,orders.status as order_status, bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as table_name") .joins("left join booking_orders on booking_orders.booking_id = bookings.booking_id") .joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id") - .joins("left join orders on orders.order_id = booking_orders.order_id") + .joins("left join orders on orders.order_id = booking_orders.order_id") .joins("left join sales on sales.sale_id = bookings.sale_id") .where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,true) .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status") @@ -235,15 +265,17 @@ class Order < ApplicationRecord #Origami: Cashier : to view order type Room def self.get_booking_order_rooms - booking_rooms = Booking.select("sales.receipt_no,orders.status as order_status,bookings.booking_id, + booking_rooms = Booking.select("sales.receipt_no,orders.status as order_status,bookings.booking_id,orders.customer_id as customer_id, sales.sale_id as sale_id,dining_facilities.name as room_name") .joins("left join booking_orders on booking_orders.booking_id = bookings.booking_id") .joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id") .joins("left join orders on orders.order_id = booking_orders.order_id") .joins("left join sale_orders on sale_orders.order_id = orders.order_id") .joins("left join sales on sales.sale_id = sale_orders.sale_id") - .where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,true) - .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name") + + .where("sales.sale_status<>'complete' and booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,true) + .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.customer_id") + end #Origami: Cashier : to view order type Room @@ -264,15 +296,15 @@ class Order < ApplicationRecord from = Time.now.beginning_of_day.utc to = Time.now.end_of_day.utc orders = Order.select("orders.order_id as order_id,sales.receipt_no,orders.status as order_status, - bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as table_name") + orders.customer_id as customer_id,bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as table_name") .joins("left join booking_orders on booking_orders.order_id = orders.order_id left join bookings on bookings.booking_id = booking_orders.order_id left join dining_facilities on dining_facilities.id = bookings.dining_facility_id left join order_items on order_items.order_id = orders.order_id left join sale_orders on sale_orders.order_id = orders.order_id left join sales on sales.sale_id = sale_orders.sale_id") - .where("dining_facilities.is_active=? and orders.date between ? and ?",true,from,to) - .group("orders.order_id,order_items.order_items_id,dining_facilities.name,sales.receipt_no,bookings.booking_id,sales.sale_id") + .where("sales.sale_status<>'complete' and dining_facilities.is_active=? and orders.date between ? and ?",true,from,to) + .group("orders.order_id,order_items.order_items_id,dining_facilities.name,sales.receipt_no,bookings.booking_id,sales.sale_id,orders.customer_id") end diff --git a/app/models/printer/order_queue_printer.rb b/app/models/printer/order_queue_printer.rb index 5a0eaf25..9c928593 100644 --- a/app/models/printer/order_queue_printer.rb +++ b/app/models/printer/order_queue_printer.rb @@ -40,7 +40,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker left join bookings AS b ON b.booking_id = bo.booking_id left join dining_facilities AS df ON df.id = b.dining_facility_id left join customers as cus ON cus.customer_id = orders.customer_id") - .where("orders.order_id='" + code.to_s + "'") + .where("orders.order_id='" + code + "'") .group("order_items.item_code") end diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index d203568f..a8a27db3 100644 --- a/app/models/printer/receipt_printer.rb +++ b/app/models/printer/receipt_printer.rb @@ -63,12 +63,13 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker self.print(filename) end -#Bill Receipt Print - def print_receipt_bill(printer_settings,sale_items,sale_data, customer_name) + + #Bill Receipt Print + def print_receipt_bill(printer_settings,sale_items,sale_data, customer_name, food_total, beverage_total) #Use CUPS service #Generate PDF #Print - pdf = ReceiptBillPdf.new(printer_settings, sale_items, sale_data, customer_name) + pdf = ReceiptBillPdf.new(printer_settings, sale_items, sale_data, customer_name, food_total, beverage_total) pdf.render_file "tmp/receipt_bill.pdf" self.print("tmp/receipt_bill.pdf") end diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb index 5d87ff13..0aed9a23 100644 --- a/app/models/sale_item.rb +++ b/app/models/sale_item.rb @@ -29,6 +29,32 @@ class SaleItem < ApplicationRecord # return false # end end + + def self.calculate_food_beverage(sale_items) + food_prices=0 + beverage_prices=0 + + sale_items.each do |si| + food_price = self.get_food_price(si.sale_item_id) + beverage_price = self.get_beverage_price(si.sale_item_id) +puts food_price + # food_prices = food_prices + food_price.price + # beverage_prices = beverage_prices + beverage_price.price + end + return food_prices, beverage_prices + end + + def self.get_food_price(sale_item_id) + food_price=SaleItem.select("sale_items.price") + .joins("left join menu_items on menu_items.item_code = sale_items.product_code") + .where("sale_items.sale_item_id=? and menu_items.account_id=0", sale_item_id) + end + + def self.get_beverage_price(sale_item_id) + beverage_price=SaleItem.select("sale_items.price") + .joins("left join menu_items on menu_items.item_code = sale_items.product_code") + .where("sale_items.sale_item_id=? and menu_items.account_id=1", sale_item_id) + end private def generate_custom_id diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index ff43a11f..27ddafa6 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -106,7 +106,6 @@ class SalePayment < ApplicationRecord self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f self.payment_status = "paid" payment_method = self.save! - sale_update_payment_status(self.received_amount) return payment_status @@ -204,30 +203,28 @@ class SalePayment < ApplicationRecord end def sale_update_payment_status(paid_amount) - puts "sale update" #update amount_outstanding self.sale.amount_received = self.sale.amount_received.to_f + paid_amount.to_f - self.sale.amount_changed = paid_amount.to_f - self.sale.amount_received.to_f - all_received_amount = 0.0 - sObj = self.sale + sObj = Sale.find(self.sale_id) sObj.sale_payments.each do |spay| - puts spay - puts spay.payment_amount all_received_amount += spay.payment_amount.to_f end - puts all_received_amount - puts self.sale.grand_total if (self.sale.grand_total <= all_received_amount) - puts " sale update ......" self.sale.payment_status = "paid" self.sale.sale_status = "completed" self.sale.save! + #TODO: table status + rebat() end end + def rebat + + end + private def generate_custom_id self.sale_payment_id = SeedGenerator.generate_id(self.class.name, "SPI") 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/pdf/order_item_pdf.rb b/app/pdf/order_item_pdf.rb index 3044c578..f322de64 100644 --- a/app/pdf/order_item_pdf.rb +++ b/app/pdf/order_item_pdf.rb @@ -1,29 +1,46 @@ class OrderItemPdf < Prawn::Document - + attr_accessor :receipt_width,:price_column_width,:page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_width,:item_description_width def initialize(order_item, print_settings) - super(:margin => [10, 5, 30, 5], :page_size => [200,400]) + self.page_width = 300 + self.page_height = 400 + self.margin = 10 + self.price_width = 50 + self.qty_width = 50 + self.item_width = self.page_width - (self.price_width + self.qty_width) + self.item_height = 15 + self.item_description_width = self.page_width - (self.price_width + self.qty_width) + self.receipt_width=130 + + super(:margin => [self.margin, self.margin, self.margin, self.margin], :page_size => [self.page_width, self.page_height]) + # super(:margin => [10, 5, 30, 5], :page_size => [200,400]) # 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.dining}", :size => 15 + # font "public/fonts/padauk.ttf" + self.header_font_size = 12 + self.item_font_size = 10 + + text "#{order_item.dining}", :size => self.header_font_size,:align => :center stroke_horizontal_rule move_down 5 #order_info - order_info(order_item.order_by,order_item.order_at, order_item.customer) + order_info(order_item.order_by,order_item.order_at) # order items order_items(order_item) end # Write Order Information to PDF - def order_info(order_by, order_at, customer) + def order_info(order_by, order_at) y_position = cursor - 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 + bounding_box([0,y_position], :width => self.item_width - 50, :height => self.item_height) do + text "OrderBy:#{order_by} ", :size => self.item_font_size,:align => :left + end + + bounding_box([self.item_width - 50,y_position], :width => self.item_width + 50, :height => self.item_height) do + text "Date:#{order_at.strftime("%Y-%m-%d %I:%M %p")}", :size => self.item_font_size,:align => :left end stroke_horizontal_rule @@ -35,12 +52,12 @@ class OrderItemPdf < Prawn::Document def order_items(order_item) y_position = cursor - bounding_box([0,y_position], :width => 180, :height => 15) do - text "Item", :size => 7,:align => :left + bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do + text "Item", :size => self.item_font_size,:align => :left end - bounding_box([160,y_position], :width => 20, :height => 15) do - text "Qty", :size => 7,:align => :right + bounding_box([self.item_width,y_position], :width => self.qty_width, :height => self.item_height) do + text "Qty", :size => self.item_font_size,:align => :right end stroke_horizontal_rule @@ -56,12 +73,12 @@ class OrderItemPdf < Prawn::Document move_down 5 - bounding_box([0,y_position], :width => 180, :height => 20) do - text "#{order_item.item_name}", :size => 7,:align => :left + bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do + text "#{order_item.item_name}", :size => self.item_font_size,:align => :left end - bounding_box([160,y_position], :width => 20, :height => 20) do - text "#{order_item.qty}", :size => 7,:align => :right + bounding_box([self.item_width,y_position], :width => self.qty_width, :height => self.item_height) do + text "#{order_item.qty}", :size => self.item_font_size,:align => :right end move_down 5 diff --git a/app/pdf/order_summary_pdf.rb b/app/pdf/order_summary_pdf.rb index 8a7a1ad9..63d75a78 100644 --- a/app/pdf/order_summary_pdf.rb +++ b/app/pdf/order_summary_pdf.rb @@ -1,19 +1,30 @@ class OrderSummaryPdf < Prawn::Document - + attr_accessor :receipt_width,:price_column_width,:page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_width,:item_description_width def initialize(order, print_settings) - super(:margin => [10, 5, 30, 5], :page_size => [200,400]) + self.page_width = 300 + self.page_height = 400 + self.margin = 10 + self.price_width = 60 + self.qty_width = 60 + self.item_width = self.page_width - (self.price_width + self.qty_width) + self.item_height = 15 + self.item_description_width = self.page_width - (self.price_width + self.qty_width) + self.receipt_width=130 + + super(:margin => [self.margin, 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 = 12 + self.item_font_size = 10 - font_size 9 - text "#{order[0].dining}", :size => 15 + text "#{order[0].dining}", :size => self.header_font_size,:align => :center stroke_horizontal_rule move_down 5 #order_info - order_info(order[0].order_by,order[0].order_at, order[0].customer) + order_info(order[0].order_by,order[0].order_at) # order items order_items(order) @@ -21,11 +32,15 @@ class OrderSummaryPdf < Prawn::Document end # Write Order Information to PDF - def order_info(order_by, order_at, customer) + def order_info(order_by, order_at) y_position = cursor - 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 + bounding_box([0,y_position], :width => self.item_width - 20, :height => self.item_height) do + text "OrderBy:#{order_by} ", :size => self.item_font_size,:align => :left + end + + bounding_box([self.item_width - 20,y_position], :width => self.item_width + 20, :height => self.item_height) do + text "Date:#{order_at.strftime("%Y-%m-%d %I:%M %p")}", :size => self.item_font_size,:align => :left end stroke_horizontal_rule @@ -37,12 +52,12 @@ class OrderSummaryPdf < Prawn::Document def order_items(order_item) y_position = cursor - bounding_box([0,y_position], :width => 180, :height => 15) do - text "Item", :size => 7,:align => :left + bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do + text "Item", :size => self.item_font_size,:align => :left end - bounding_box([160,y_position], :width => 20, :height => 15) do - text "Qty", :size => 7,:align => :right + bounding_box([self.item_width,y_position], :width => self.qty_width, :height => self.item_height) do + text "Qty", :size => self.item_font_size,:align => :right end stroke_horizontal_rule @@ -59,13 +74,13 @@ class OrderSummaryPdf < Prawn::Document move_down 5 order_item.each do|odi| - bounding_box([0,y_position], :width => 180, :height => 20) do - text "#{odi.item_name}", :size => 7,:align => :left - end + bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do + text "#{odi.item_name}", :size => self.item_font_size,:align => :left + end - bounding_box([160,y_position], :width => 20, :height => 20) do - text "#{odi.qty}", :size => 7,:align => :right - end + bounding_box([self.item_width,y_position], :width => self.qty_width, :height => self.item_height) do + text "#{odi.qty}", :size => self.item_font_size,:align => :right + end end move_down 5 diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index 5853b946..f91aebe1 100644 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -1,30 +1,36 @@ 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_data, customer_name) - self.p_width = 200 + attr_accessor :receipt_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 + def initialize(printer_settings, sale_items, sale_data, customer_name, food_total, beverage_total) + self.page_width = 300 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 + self.price_width = 50 + self.qty_width = 30 + self.total_width = 50 + 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 - (self.price_width + self.qty_width + self.total_width) + self.receipt_width=100 - @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 + # @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 => [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 = 9 + super(:margin => [self.margin, 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 = 12 + self.item_font_size = 10 header( printer_settings.printer_name, printer_settings.name) - stroke_horizontal_rule + + stroke_horizontal_rule + cashier_info(sale_data, customer_name) - line_items(sale_items) + line_items(sale_items, food_total, beverage_total) all_total(sale_data) @@ -38,71 +44,66 @@ class ReceiptBillPdf < Prawn::Document move_down 5 stroke_horizontal_rule - end def cashier_info(sale_data, customer_name) - move_down 5 - move_down 2 + move_down 7 + # move_down 2 y_position = cursor - bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + bounding_box([0,y_position], :width =>self.receipt_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 "#{sale_data.receipt_no}" , :size => self.item_font_size, :align => :left + bounding_box([self.receipt_width, y_position], :width =>self.receipt_width) do + text "#{sale_data.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 + bounding_box([0,y_position], :width =>self.receipt_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 + bounding_box([self.receipt_width,y_position], :width =>self.receipt_width) do text "#{customer_name}" , :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 + bounding_box([0,y_position], :width =>self.receipt_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 + bounding_box([self.receipt_width,y_position], :width =>self.receipt_width) do text "#{sale_data.receipt_date.strftime('%Y %m %d %h:%m')}" , :size => self.item_font_size,:align => :left end # stroke_horizontal_rule move_down 5 end - def line_items(sale_items) + def line_items(sale_items, food_total, beverage_total) 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 + text_box "Items", :at =>[0,y_position], :width => self.item_width - 20, :height =>self.item_height, :size => self.item_font_size + text_box "Price", :at =>[self.item_width-20,y_position], :width => self.price_width, :height =>self.item_height, :size => self.item_font_size, :align => :right + text_box "Qty", :at =>[self.item_width+self.price_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :right + text_box "Total", :at =>[self.item_width+self.price_width+self.qty_width,y_position], :width => self.total_width, :height =>self.item_height, :size => self.item_font_size, :align => :right } move_down 5 stroke_horizontal_rule - add_line_item_row(sale_items) + add_line_item_row(sale_items, food_total, beverage_total) end - def add_line_item_row(sale_items) + def add_line_item_row(sale_items, food_total, beverage_total) + item_name_width = self.item_width-20 y_position = cursor move_down 5 sub_total = 0.0 @@ -119,53 +120,67 @@ class ReceiptBillPdf < Prawn::Document pad_top(15) { # @item_width.to_i + @half_qty.to_i - text_box "#{product_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 + text_box "#{product_name}", :at =>[0,y_position], :width => item_name_width, :height =>self.item_height, :overflow => :shrink_to_fix, :size => self.item_font_size + text_box "#{price}", :at =>[item_name_width,y_position], :width => self.price_width, :height =>self.item_height, :size => self.item_font_size, :align => :right + text_box "#{qty.to_i}", :at =>[item_name_width+self.price_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :right + text_box "#{total_price}", :at =>[item_name_width+self.price_width+self.qty_width,y_position], :width =>self.total_width, :height =>self.item_height, :size => self.item_font_size, :align => :right } move_down 3 end + stroke_horizontal_rule + move_down 5 y_position = cursor - bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + bounding_box([0,y_position], :width =>(item_name_width+self.price_width+self.qty_width), :height => self.item_height) do text "Sub Total", :size => self.item_font_size,:align => :left end - bounding_box([self.price_width,y_position], :width =>self.price_width) do + bounding_box([(item_name_width+self.price_width+self.qty_width),y_position], :width =>self.total_width) do text "#{sub_total}" , :size => self.item_font_size,:align => :right end + + # Food and Beverage + food_beverage_total = food_total.to_s + '/' + beverage_total.to_s + move_down 5 + y_position = cursor + bounding_box([0,y_position], :width =>(item_name_width+self.price_width+self.qty_width), :height => self.item_height) do + text "Food/Beverage Total", :size => self.item_font_size,:align => :left + end + bounding_box([(item_name_width+self.price_width+self.qty_width),y_position], :width =>self.total_width) do + text "#{ food_beverage_total }" , :size => self.item_font_size,:align => :right + end end def all_total(sale_data) + item_name_width = self.item_width-20 move_down 5 - y_position =cursor + y_position = cursor - bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + bounding_box([0,y_position], :width =>(item_name_width+self.price_width+self.qty_width), :height => self.item_height) do text "Discount", :size => self.item_font_size,:align => :left end - bounding_box([self.price_width,y_position], :width =>self.price_width) do + bounding_box([(item_name_width+self.price_width+self.qty_width),y_position], :width =>self.total_width) do text "( " +"#{sale_data.total_discount}" +" )" , :size => self.item_font_size,:align => :right end move_down 5 - y_position =cursor + y_position = cursor - bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + bounding_box([0,y_position], :width =>(item_name_width+self.price_width+self.qty_width), :height => self.item_height) do text "Total Tax", :size => self.item_font_size,:align => :left end - bounding_box([self.price_width,y_position], :width =>self.price_width) do + bounding_box([(item_name_width+self.price_width+self.qty_width),y_position], :width =>self.total_width) do text "( " +"#{sale_data.total_tax}" +" )" , :size => self.item_font_size,:align => :right end move_down 5 y_position = cursor move_down 5 - bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do + bounding_box([0,y_position], :width =>(item_name_width+self.price_width+self.qty_width), :height => self.item_height) do text "Grand Total", :size => self.item_font_size,:align => :left end - bounding_box([self.price_width,y_position], :width =>self.price_width) do + bounding_box([(item_name_width+self.price_width+self.qty_width),y_position], :width =>self.total_width) do text "#{sale_data.grand_total}" , :size => self.item_font_size,:align => :right end move_down 5 diff --git a/app/views/api/customers/get_customer_order.json.jbuilder b/app/views/api/customers/get_customer_order.json.jbuilder new file mode 100644 index 00000000..f00ce173 --- /dev/null +++ b/app/views/api/customers/get_customer_order.json.jbuilder @@ -0,0 +1,38 @@ +if (@customer) + json.id @customer.customer_id + json.name @customer.name + json.email @customer.email + json.contact_no @customer.contact_no + json.date_of_birth @customer.date_of_birth + + + @total_amount = 0.00 + @total_tax = 0.00 + + if @customer.orders + order_items = [] + @customer.orders.each do |bo| + order = Order.find(bo.order_id) + #if (order.status == "new") + order_items = order_items + order.order_items + #end + end + + json.order_items order_items do |item| + json.item_instance_code item.item_code + json.item_name item.item_name + json.price item.price + json.qty item.qty + json.options item.options + json.remark item.remark + json.item_status item.order_item_status + @total_amount = @total_amount + (item.price * item.qty) + end + + end + + json.sub_total @total_amount + json.commerical_tax @total_amount * 0.05 + json.total @total_amount + (@total_amount * 0.05) + +end \ No newline at end of file diff --git a/app/views/crm/customers/_form.html.erb b/app/views/crm/customers/_form.html.erb index 758a52a2..c913651a 100644 --- a/app/views/crm/customers/_form.html.erb +++ b/app/views/crm/customers/_form.html.erb @@ -16,5 +16,5 @@ <%= f.button :submit %> <% end %> - + \ No newline at end of file diff --git a/app/views/crm/customers/index.html.erb b/app/views/crm/customers/index.html.erb index 86f267b0..e4f6d07d 100644 --- a/app/views/crm/customers/index.html.erb +++ b/app/views/crm/customers/index.html.erb @@ -11,7 +11,7 @@ -
+
@@ -21,6 +21,17 @@ + + + + @@ -48,66 +59,63 @@ <% end %>
+ <%= form_tag crm_customers_path, :method => :get do %> +
+ + +
+ <% end %> +
Select Name
+
+ + <%= paginate @crm_customers %>
- <%= simple_form_for @crm_customer,:url => crm_customers_path, :method => :post do |f| %> - - - <%= f.hidden_field :id, :class => "form-control col-md-6 " %> - -
- <%= f.input :name, :class => "form-control col-md-6 name" %> + <%= simple_form_for @crm_customer,:url => crm_customers_path, :method => :post do |f| %> -
-
- <%= f.input :company, :class => "form-control col-md-6 company" %> -
-
- <%= f.input :contact_no, :class => "form-control col-md-6 contact_no" %> + + + <%= f.error_notification %> + <%= f.hidden_field :id, :class => "form-control col-md-6 " %> + +
+ <%= f.input :name, :class => "form-control col-md-6 name" %> + +
+
+ <%= f.input :company, :class => "form-control col-md-6 company" %> +
+
+ <%= f.input :contact_no, :class => "form-control col-md-6 contact_no" %> -
+
-
- <%= f.input :email, :class => "form-control col-md-6 email" %> -
+
+ <%= f.input :email, :class => "form-control col-md-6 email" %> +
-
- - <%= f.text_field :date_of_birth,:class=>"form-control datepicker date_of_birth",:readonly =>true, :value => @date_of_birth%> -
- -
- -
+
+ + <%= f.text_field :date_of_birth,:class=>"form-control date_of_birth datepicker"%> +
-
- <%= f.input :membership_type, :class => "form-control col-md-6 membership_type" %> -
-
- <%= f.input :membership_authentication_code, :class => "form-control col-md-6 membership_authentication_code" %> - -
-
+ +
<%= f.button :submit, "Submit",:class => 'btn btn-primary ', :id => 'submit_customer' %> <%= f.button :submit, "Update",:class => 'btn btn-primary ', :disabled =>'', :id => 'update_customer' %> -
- <%end%>
+ <%end%>
+ + + diff --git a/app/views/crm/dining_queues/_crm_dining_queue.json.jbuilder b/app/views/crm/dining_queues/_crm_dining_queue.json.jbuilder new file mode 100644 index 00000000..f2580e52 --- /dev/null +++ b/app/views/crm/dining_queues/_crm_dining_queue.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! crm_dining_queue, :id, :name, :contact, :queue_no, :created_at, :updated_at +json.url crm_dining_queue_url(crm_dining_queue, format: :json) diff --git a/app/views/crm/dining_queues/_form.html.erb b/app/views/crm/dining_queues/_form.html.erb new file mode 100644 index 00000000..a99f6b76 --- /dev/null +++ b/app/views/crm/dining_queues/_form.html.erb @@ -0,0 +1,16 @@ + +<%= simple_form_for([:crm,@dining_queue]) do |f| %> + <%= f.error_notification %> + +
+ <%= f.input :name %> + <%= f.input :contact_no %> + <%= f.input :queue_no %> + +
+ +
+ <%= f.button :submit %> +
+<% end %> + diff --git a/app/views/crm/dining_queues/edit.html.erb b/app/views/crm/dining_queues/edit.html.erb new file mode 100644 index 00000000..e5ca3b9f --- /dev/null +++ b/app/views/crm/dining_queues/edit.html.erb @@ -0,0 +1,11 @@ + +
+ + <%= render 'form', dining_queue: @dining_queue %> +
diff --git a/app/views/crm/dining_queues/index.html.erb b/app/views/crm/dining_queues/index.html.erb new file mode 100644 index 00000000..e7834b98 --- /dev/null +++ b/app/views/crm/dining_queues/index.html.erb @@ -0,0 +1,38 @@ + + + + +
+
+ + + + + + + + + + + + <% @dining_queues.each do |dining_queue| %> + + + + + + + <% end %> + +
NameContact NoQueue NoAction
<%= dining_queue.name %><%= dining_queue.contact_no %><%= dining_queue.queue_no %> + <%= link_to 'Edit', edit_crm_dining_queue_path(dining_queue) %> | <%= link_to 'Destroy', crm_dining_queue_path(dining_queue), method: :delete, data: { confirm: 'Are you sure?' } %>
+
+ diff --git a/app/views/crm/dining_queues/index.json.jbuilder b/app/views/crm/dining_queues/index.json.jbuilder new file mode 100644 index 00000000..979087b7 --- /dev/null +++ b/app/views/crm/dining_queues/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @crm_dining_queues, partial: 'crm_dining_queues/crm_dining_queue', as: :crm_dining_queue diff --git a/app/views/crm/dining_queues/new.html.erb b/app/views/crm/dining_queues/new.html.erb new file mode 100644 index 00000000..280a59b2 --- /dev/null +++ b/app/views/crm/dining_queues/new.html.erb @@ -0,0 +1,11 @@ + +
+ + <%= render 'form', dining_queue: @dining_queue %> +
\ No newline at end of file diff --git a/app/views/crm/dining_queues/show.html.erb b/app/views/crm/dining_queues/show.html.erb new file mode 100644 index 00000000..5e52a611 --- /dev/null +++ b/app/views/crm/dining_queues/show.html.erb @@ -0,0 +1,19 @@ +

<%= notice %>

+ +

+ Name: + <%= @crm_dining_queue.name %> +

+ +

+ Contact: + <%= @crm_dining_queue.contact %> +

+ +

+ Queue no: + <%= @crm_dining_queue.queue_no %> +

+ +<%= link_to 'Edit', edit_crm_dining_queue_path(@crm_dining_queue) %> | +<%= link_to 'Back', crm_dining_queues_path %> diff --git a/app/views/crm/dining_queues/show.json.jbuilder b/app/views/crm/dining_queues/show.json.jbuilder new file mode 100644 index 00000000..83c09bea --- /dev/null +++ b/app/views/crm/dining_queues/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "crm_dining_queues/crm_dining_queue", crm_dining_queue: @crm_dining_queue diff --git a/app/views/crm/home/_booking.html.erb b/app/views/crm/home/_booking.html.erb index 3a2a7684..fbe837a7 100644 --- a/app/views/crm/home/_booking.html.erb +++ b/app/views/crm/home/_booking.html.erb @@ -6,29 +6,29 @@ <% @booking.each do |booking| %> <% if booking.booking_status == "new" %>
-
- -

- <%= @i += 1 %> . <%= booking.dining_facility.name %> - - <%= booking.id %> -

- -

- - Order at <%= booking.checkin_at.strftime("%H,%m") %>, <%= booking.checkin_by %> - -

-
-