diff --git a/Gemfile b/Gemfile index 7295ffab..b39a85a3 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,7 @@ gem 'rails', '~> 5.1.0' gem 'mysql2', '>= 0.3.18', '< 0.5' #Use PosgreSQL -# gem 'pg' +gem 'pg' # redis server for cable # gem 'redis', '~> 3.0' diff --git a/Gemfile.lock b/Gemfile.lock index 6a7c6340..4235d035 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,6 +110,7 @@ GEM nokogiri (1.7.2) mini_portile2 (~> 2.1.0) pdf-core (0.7.0) + pg (0.20.0) prawn (2.2.2) pdf-core (~> 0.7.0) ttfunk (~> 1.5) @@ -246,6 +247,7 @@ DEPENDENCIES kaminari (~> 0.16.3) listen (~> 3.0.5) mysql2 (>= 0.3.18, < 0.5) + pg prawn prawn-table puma (~> 3.0) diff --git a/app/assets/javascripts/cable.js b/app/assets/javascripts/cable.js index ce5ac871..43efe3f2 100644 --- a/app/assets/javascripts/cable.js +++ b/app/assets/javascripts/cable.js @@ -6,9 +6,9 @@ //= require_tree ./channels // Temp Disable -// (function() { -// this.App || (this.App = {}); +(function() { + this.App || (this.App = {}); -// App.cable = ActionCable.createConsumer(); + App.cable = ActionCable.createConsumer(); -// }).call(this); +}).call(this); diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index f1df9cf8..dc3ab163 100644 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -68,11 +68,12 @@ $(document).ready(function(){ // Receipt Header receipt_no = result[i].receipt_no; cashier = result[i].cashier_name; - receipt_date = result[i].receipt_date; + receipt_date = new Date(result[i].receipt_date); + show_date = receipt_date.getDate() + "-" + receipt_date.getMonth() + "-" + receipt_date.getFullYear() + ' ' + receipt_date.getHours()+ ':' + receipt_date.getMinutes() $("#receipt_no").text(receipt_no); $("#cashier").text(cashier == null ? "" : cashier); - $("#receipt_date").text(receipt_date); + $("#receipt_date").text(show_date); //Receipt Charges @@ -132,7 +133,8 @@ $(document).ready(function(){ }); // Pay Discount for Payment - $("#pay-discount").on('click', function(){ + $("#pay-discount").on('click', function(e){ + e.preventDefault(); var sale_id = $('#sale-id').text(); var sale_item_id = $('.selected-item').attr('id'); var sub_total = $('#order-sub-total').text(); @@ -140,10 +142,10 @@ $(document).ready(function(){ var discount_type = $('#discount-type').val(); var discount_value = $('#discount-amount').val(); var discount_amount = discount_value; + var ajax_url = "/origami/" + sale_id + "/discount"; - if(sale_item_id == null){ - alert('Please select item row to discount!'); - return; + if(sale_item_id != null){ + ajax_url = "/origami/" + sale_item_id + "/discount"; } // For Percentage Discount @@ -154,7 +156,7 @@ $(document).ready(function(){ 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/" + sale_item_id + "/discount", + url: ajax_url, data: params, success:function(result){ } }); diff --git a/app/assets/stylesheets/origami.scss b/app/assets/stylesheets/origami.scss index 5e361f7e..1ea32844 100644 --- a/app/assets/stylesheets/origami.scss +++ b/app/assets/stylesheets/origami.scss @@ -33,6 +33,10 @@ // cursor:pointer; } +.del_cashier_number{ + opacity:0.6, +} + .pay{ width: 98%; height:211px; diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index 193a4a45..a01cc717 100644 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -8,9 +8,15 @@ class Api::BillController < Api::ApiController #create Bill by Booking ID if (params[:booking_id]) - @sale = Sale.new - @status, @sale_id = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee.name) - + booking = Booking.find(params[:booking_id]) + if booking + if booking.sale_id.nil? + @sale = Sale.new + @status, @sale_id = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee.name) + else + @status = true + end + end elsif (params[:order_id]) @sale = Sale.new @status, @sale_id = @sale.generate_invoice_from_order(params[:order_id], current_login_employee.name) diff --git a/app/controllers/crm/customers_controller.rb b/app/controllers/crm/customers_controller.rb index 525302c8..ed285f49 100644 --- a/app/controllers/crm/customers_controller.rb +++ b/app/controllers/crm/customers_controller.rb @@ -5,7 +5,7 @@ class Crm::CustomersController < BaseCrmController # GET /crm/customers.json def index filter = params[:filter] - + if filter.nil? @crm_customers = Customer.order("customer_id").page(params[:page]) #@products = Product.order("name").page(params[:page]).per(5) @@ -31,7 +31,7 @@ class Crm::CustomersController < BaseCrmController # GET /crm/customers/1.json def show @orders = Order.where("customer_id=?", params[:id]) - + if @orders @order_items = [] @orders.each do |bo| @@ -57,7 +57,7 @@ class Crm::CustomersController < BaseCrmController def create @crm_customers = Customer.new(customer_params) - + respond_to do |format| if @crm_customers.save name = customer_params[:name] @@ -72,7 +72,9 @@ class Crm::CustomersController < BaseCrmController url = membership.gateway_url.to_s + memberaction.gateway_url.to_s response = HTTParty.post(url, :body => { name: name,phone: phone,email: email, + dob: dob, + member_group_id: member_group_id,merchant_uid:merchant_uid}.to_json, :headers => { 'Content-Type' => 'application/json', @@ -81,18 +83,18 @@ class Crm::CustomersController < BaseCrmController ) 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] format.html { redirect_to '/origami/'+params[:sale_id]+'/add_customer', notice: 'Customer was successfully created.' } else format.html { redirect_to crm_customers_path, notice: 'Customer was successfully created'} - end + end # format.json { render :index, status: :created, location: @crm_customers } else - + @crm_customers.destroy if params[:sale_id] format.html { redirect_to '/origami/'+params[:sale_id]+'/add_customer'} @@ -103,7 +105,7 @@ class Crm::CustomersController < BaseCrmController else if params[:sale_id] - format.html { redirect_to '/origami/'+params[:sale_id]+'/add_customer'} + 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 } @@ -131,7 +133,7 @@ end memberaction = MembershipAction.find_by_membership_type("update_membership_customer") merchant_uid = memberaction.merchant_account_id.to_s url = membership.gateway_url.to_s + memberaction.gateway_url.to_s - + response = HTTParty.post(url, :body => { name: name,phone: phone,email: email, dob: dob, id: id,member_group_id:member_group_id,merchant_uid:merchant_uid}.to_json, diff --git a/app/controllers/origami/customers_controller.rb b/app/controllers/origami/customers_controller.rb index 30ead5b0..14af5f49 100644 --- a/app/controllers/origami/customers_controller.rb +++ b/app/controllers/origami/customers_controller.rb @@ -28,6 +28,9 @@ class Origami::CustomersController < BaseOrigamiController # if @membership["status"] == true # @member_group = @membership["data"] # end + # puts "Errrrrrrrrrrrrrrrrr" + # puts @crm_customer.valid? + respond_to do |format| # format.html { render :template => "crm/customers/index" } diff --git a/app/controllers/origami/discounts_controller.rb b/app/controllers/origami/discounts_controller.rb index e80ca348..fb981a80 100644 --- a/app/controllers/origami/discounts_controller.rb +++ b/app/controllers/origami/discounts_controller.rb @@ -30,13 +30,15 @@ class Origami::DiscountsController < BaseOrigamiController sale.save #save sale item for discount - origin_sale_item = SaleItem.find(sale_item_id) + if sale_item_id != nil + origin_sale_item = SaleItem.find(sale_item_id) + end sale_item = SaleItem.new #pull sale_item.sale_id = sale_id - sale_item.product_code = origin_sale_item.product_code - sale_item.product_name = origin_sale_item.product_name + " Discount" + sale_item.product_code = origin_sale_item != nil ? origin_sale_item.product_code : sale_id + sale_item.product_name = "Overall Discount" sale_item.remark = remark sale_item.qty = 1 diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 290a2911..134c9474 100644 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -24,8 +24,8 @@ class Origami::PaymentsController < BaseOrigamiController if spay.payment_method == "cash" @cash = spay.payment_amount end - if spay.payment_method == "mpu" - @other = spay.payment_amount + if spay.payment_method == "mpu" || spay.payment_method == "paypar" + @other += spay.payment_amount end end end diff --git a/app/models/order.rb b/app/models/order.rb index 1b60a7b4..9a1afe5d 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -223,7 +223,7 @@ class Order < ApplicationRecord #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, + booking_orders = Booking.select("sales.receipt_no,orders.status as order_status, sales.sale_status as sale_status, orders.order_id as order_id,sales.customer_id as sale_customer_id,orders.customer_id as order_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") @@ -232,7 +232,6 @@ class Order < ApplicationRecord .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,orders.order_id") - end #Origami: Cashier : to view booking order Table @@ -244,12 +243,12 @@ class Order < ApplicationRecord .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") + .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status,orders.order_id") end - + #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, + booking_rooms = Booking.select("sales.receipt_no,orders.status as order_status, sales.sale_status as sale_status, orders.order_id as order_id,sales.customer_id as sale_customer_id,orders.customer_id as order_customer_id, bookings.booking_id,orders.customer_id as customer_id, sales.sale_id as sale_id,dining_facilities.name as room_name") @@ -258,8 +257,8 @@ class Order < ApplicationRecord .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("sales.sale_status<>'completed' and 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") + .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,orders.customer_id,orders.order_id") end #Origami: Cashier : to view order type Room @@ -279,7 +278,7 @@ class Order < ApplicationRecord def self.get_orders 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, + orders = Order.select("orders.order_id as order_id,sales.receipt_no,orders.status as order_status, sales.sale_status as sale_status, orders.order_id as order_id,sales.customer_id as sale_customer_id,orders.customer_id as order_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 @@ -288,7 +287,7 @@ class Order < ApplicationRecord 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("sales.sale_status<>'completed' and dining_facilities.is_active=? and orders.date between ? and ?",true,from,to) + .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,orders.customer_id") end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index b8c527af..526ef03c 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -60,7 +60,7 @@ class SalePayment < ApplicationRecord #record an payment in sale-audit remark = "No outstanding Amount - Grand Total [#{invoice.grand_total}] | Due [#{amount_due}] | Paid [#{invoice.amount_received}]" sale_audit = SaleAudit.record_payment(invoice.id, remark,action_by) - + return false, "No outstanding Amount" end @@ -84,17 +84,22 @@ class SalePayment < ApplicationRecord url = paypar_url.to_s + membership_actions_data.gateway_url.to_s merchant_uid = membership_actions_data.merchant_account_id campaign_type_id = membership_actions_data.additional_parameter["campaign_type_id"] - response = HTTParty.post(url, - :body => { generic_customer_id:membership_id,redeem_amount:received_amount,receipet_no:sale_id,campaign_type_id:campaign_type_id,account_no:"",merchant_uid:merchant_uid}.to_json, + sale_data = Sale.find_by_sale_id(sale_id) + if sale_data + response = HTTParty.post(url, + :body => { generic_customer_id:membership_id,redeem_amount:received_amount,receipt_no:sale_data.receipt_no,campaign_type_id:campaign_type_id,account_no:"",merchant_uid:merchant_uid}.to_json, :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' } ) + else + response = false; + end + else response =false; end - puts response.to_json return response; end @@ -217,7 +222,7 @@ class SalePayment < ApplicationRecord self.sale.sale_status = "completed" self.sale.save! table_update_status(sObj) - rebat() + rebat(sObj) end end @@ -233,8 +238,37 @@ class SalePayment < ApplicationRecord end end - def rebat + def rebat(sObj) + food_prices, beverage_prices = SaleItem.calculate_food_beverage(sObj.sale_items) + generic_customer_id = sObj.customer.membership_id + if generic_customer_id != nil || generic_customer_id != "" + paypar = sObj.sale_payments + payparcost = 0 + paypar.each do |pp| + if pp.payment_method == "paypar" + payparcost = payparcost + pp.payment_amount + end + end + total_amount = food_prices - payparcost + puts "aaaa" + puts food_prices + puts payparcost + puts total_amount + receipt_no = sObj.receipt_no + membership = MembershipSetting.find_by_membership_type("paypar_url") + memberaction = MembershipAction.find_by_membership_type("rebate") + campaign_type_id = memberaction.additional_parameter["campaign_type_id"] + app_token = membership.auth_token.to_s + url = membership.gateway_url.to_s + memberaction.gateway_url.to_s + response = HTTParty.post(url, :body => { generic_customer_id:generic_customer_id ,total_amount: total_amount,campaign_type_id: campaign_type_id, + receipt_no: receipt_no}.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' + }) + puts response.to_json + end end private diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 641678f9..4a74c7b1 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -18,6 +18,7 @@
  • <%= link_to "Cashier Terminals ", settings_cashier_terminals_path, :tabindex =>"-1" %>
  • <%= link_to "Employees", settings_employees_path, :tabindex =>"-1" %>
  • <%= link_to "Membership Setting",settings_membership_settings_path, :tabindex =>"-1" %>
  • +
  • <%= link_to "Membership Action",settings_membership_actions_path, :tabindex =>"-1" %>
  • <%= link_to "Payment Method", settings_payment_method_settings_path, :tabindex =>"-1" %>
  • <%= link_to "Tax Profile", settings_tax_profiles_path, :tabindex =>"-1" %>
  • <%= link_to "Print Setting", print_settings_path, :tabindex =>"-1" %>
  • @@ -27,8 +28,8 @@