From 72aa7694906cc094338d8c11b8ce7208380e3665 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Tue, 11 Jul 2017 11:06:13 +0630 Subject: [PATCH] added member discount --- .../origami/discounts_controller.rb | 65 +++++++++++++++++++ app/models/ability.rb | 1 + app/models/sale.rb | 5 +- app/views/origami/discounts/index.html.erb | 36 +++++++--- config/routes.rb | 2 +- 5 files changed, 99 insertions(+), 10 deletions(-) diff --git a/app/controllers/origami/discounts_controller.rb b/app/controllers/origami/discounts_controller.rb index 8d0f9422..fcdcf760 100644 --- a/app/controllers/origami/discounts_controller.rb +++ b/app/controllers/origami/discounts_controller.rb @@ -125,6 +125,71 @@ class Origami::DiscountsController < BaseOrigamiController sale_id = params[:sale_id] account_types = JSON.parse(params[:account_types]) sub_total = params[:sub_total] + sale = Sale.find(sale_id) + price = SaleItem.calculate_price_by_accounts(sale.sale_items) + + arr = Array.new; + + account_types.each do |at| + price.each do |pc| + if pc[:name].to_s == at["name"].to_s && pc[:price]>0 + str={type:pc[:name],amount:pc[:price]} + arr.push(str) + end + end + + end + + generic_customer_id = sale.customer.membership_id + + receipt_no = sale.receipt_no + membership = MembershipSetting.find_by_membership_type("paypar_url") + memberaction = MembershipAction.find_by_membership_type("member_discount") + merchant_uid = memberaction.merchant_account_id.to_s + campaign_type_id = memberaction.additional_parameter["campaign_type_id"] + auth_token = memberaction.auth_token.to_s + url = membership.gateway_url.to_s + memberaction.gateway_url.to_s + + # Control for Paypar Cloud + begin + response = HTTParty.post(url, + :body => { generic_customer_id:generic_customer_id , + campaign_type_id: campaign_type_id, + receipt_no: receipt_no, + merchant_uid:merchant_uid, + discount_method:arr.to_json, + total_sale_transaction_amount: sale.grand_total, + auth_token:auth_token}.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' + }, :timeout => 10) + rescue HTTParty::Error + response = {status: false, message: "Can't open membership server "} + + rescue Net::OpenTimeout + + response = { status: false , message: "Can't open membership server "} + + rescue OpenURI::HTTPError + response = { status: false, message: "Can't open membership server "} + + rescue SocketError + response = { status: false, message: "Can't open membership server "} + end + + puts response.to_json + + table_id = sale.bookings[0].dining_facility_id + table_type = DiningFacility.find(table_id).type + + # Re-calc All Amount in Sale + if response["status"] == true + sale.compute_by_sale_items(sale_id, sale.sale_items, response["rebate_earned"].to_f,"member_discount") + end + result = {:status=> "Success", :table_id => table_id, :table_type => table_type,:table_type => table_type,:url_status => response[:status],:url_message => response[:message] } + + render :json => result.to_json end #discount for selected order diff --git a/app/models/ability.rb b/app/models/ability.rb index 3e5fc8b6..9a9706ab 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -84,6 +84,7 @@ class Ability can :create, :discount can :remove_discount_items, :discount can :remove_all_discount, :discount + can :member_discount, :discount can :first_bill, :payment can :show, :payment diff --git a/app/models/sale.rb b/app/models/sale.rb index 661222bc..e281f230 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -208,7 +208,7 @@ class Sale < ApplicationRecord end #compute - invoice total - def compute_by_sale_items(sale_id, sale_itemss, total_discount) + def compute_by_sale_items(sale_id, sale_itemss, total_discount,discount_type=nil) sale = Sale.find(sale_id) sales_items = sale_itemss @@ -227,6 +227,9 @@ class Sale < ApplicationRecord sale.total_amount = subtotal_price sale.total_discount = total_discount sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax + if discount_type == "member_discount" + sale.discount_type = discount_type + end #compute rounding adjustment # adjust_rounding diff --git a/app/views/origami/discounts/index.html.erb b/app/views/origami/discounts/index.html.erb index d643b2e7..42df2bc8 100644 --- a/app/views/origami/discounts/index.html.erb +++ b/app/views/origami/discounts/index.html.erb @@ -191,7 +191,8 @@
- + @@ -496,14 +497,33 @@ $(document).ready(function(){ type: "POST", url: ajax_url, data: params, - success:function(result){ - alert("Successfully Discount!"); - if(result.table_type == "Table"){ - window.location.href = "/origami/table/" + result.table_id + success:function(result){ + + if (result.url_status == false) { + status = result.url_message + }else{ + status = result.status } - else { - window.location.href = "/origami/room/" + result.table_id - } + + $.confirm({ + title: 'Infomation!', + content: status, + buttons: { + confirm: { + text: 'Ok', + btnClass: 'btn-green', + action: function(){ + if(result.table_type == "Table"){ + window.location.href = "/origami/table/" + result.table_id + } + else { + window.location.href = "/origami/room/" + result.table_id + } + } + } + } + }); + } }); }); diff --git a/config/routes.rb b/config/routes.rb index 3320bdc6..b9549c06 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -105,7 +105,7 @@ Rails.application.routes.draw do post "/:id/remove_discount_items" => "discounts#remove_discount_items" # Discount for Member - # post "/:id/member_discount" => "discounts#member_discount" + post "/:id/member_discount" => "discounts#member_discount" get "/:id/request_bills" => "request_bills#print",:as => "request_bill" get '/:sale_id/reprint' => 'payments#reprint' ,:defaults => { :format => 'json' }