129 lines
4.4 KiB
Ruby
129 lines
4.4 KiB
Ruby
class Origami::CustomersController < BaseOrigamiController
|
|
load_and_authorize_resource
|
|
def index
|
|
end
|
|
|
|
# GET /crm/customers/1
|
|
# GET /crm/customers/1.json
|
|
def show
|
|
end
|
|
|
|
def get_customer
|
|
|
|
filter = params[:filter]
|
|
type = params[:type]
|
|
|
|
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.search(filter)
|
|
# search account no from paypar
|
|
if !@crm_customers.present? && type == "card"
|
|
response = Customer.search_paypar_account_no(filter)
|
|
if response["status"] == true
|
|
@crm_customers = Customer.new
|
|
@crm_customers.name = response["customer_data"]["name"]
|
|
@crm_customers.contact_no = response["customer_data"]["phone"]
|
|
@crm_customers.email = response["customer_data"]["email"]
|
|
@crm_customers.date_of_birth = response["customer_data"]["DOB"]
|
|
@crm_customers.nrc_no = response["customer_data"]["NRC"]
|
|
@crm_customers.address = response["customer_data"]["address"]
|
|
@crm_customers.card_no = response["customer_data"]["customer_card_no"]
|
|
@crm_customers.paypar_account_no = filter
|
|
@crm_customers.membership_id = response["customer_data"]["id"]
|
|
@crm_customers.membership_type = response["customer_data"]["member_group_id"]
|
|
@crm_customers.customer_type = "Dinein"
|
|
@crm_customers.tax_profiles = ["1", "2"]
|
|
@crm_customers.save
|
|
@crm_customers = Customer.search(filter)
|
|
else
|
|
@crm_customers = [{"customer_id": response["status"],"message": response["message"] }]
|
|
end
|
|
end
|
|
end
|
|
|
|
render :json => @crm_customers.to_json
|
|
end
|
|
|
|
def add_customer
|
|
|
|
@sale_id = params[:sale_id]
|
|
if(@sale_id[0,3] == "SAL")
|
|
@booking = Booking.find_by_sale_id(@sale_id)
|
|
@dining_facility = DiningFacility.find(@booking.dining_facility_id)
|
|
else
|
|
@booking_order = BookingOrder.find_by_order_id(@sale_id)
|
|
@booking = Booking.find(@booking_order.booking_id)
|
|
@dining_facility = DiningFacility.find(@booking.dining_facility_id)
|
|
end
|
|
|
|
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.search(filter)
|
|
end
|
|
#@crm_customers = Customer.all
|
|
@crm_customers = Kaminari.paginate_array(@crm_customers).page(params[:page]).per(50)
|
|
@crm_customer = Customer.new
|
|
@count_customer = Customer.count_customer
|
|
|
|
@taxes = TaxProfile.all.order("order_by asc")
|
|
# if flash["errors"]
|
|
# @crm_customer.valid?
|
|
# 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
|
|
|
|
def update_sale_by_customer
|
|
|
|
id = params[:sale_id][0,3]
|
|
customer_id = params[:customer_id]
|
|
customer = Customer.find(customer_id)
|
|
|
|
# Check and find with card no
|
|
# if(!customer_id.include? "CUS")
|
|
# customer = Customer.find_by_paypar_account_no(customer_id)
|
|
# if(customer != nil)
|
|
# customer_id = customer.customer_id
|
|
# end
|
|
# end
|
|
|
|
if(id == "SAL")
|
|
sale = Sale.find(params[:sale_id])
|
|
status = sale.update_attributes(customer_id: customer_id)
|
|
sale.sale_orders.each do |sale_order|
|
|
order = Order.find(sale_order.order_id)
|
|
status = order.update_attributes(customer_id: customer_id,order_type:customer.customer_type)
|
|
end
|
|
else
|
|
@booking = BookingOrder.find_by_order_id(params[:sale_id])
|
|
@orders = BookingOrder.where("booking_id = ? ", @booking.booking_id)
|
|
|
|
@orders.each do |bo|
|
|
order = Order.find(bo.order_id)
|
|
status = order.update_attributes(customer_id: customer_id,order_type:customer.customer_type)
|
|
end
|
|
|
|
end
|
|
|
|
if status == true
|
|
render json: JSON.generate({:status => true})
|
|
# Re-calc All Amount in Sale
|
|
sale.compute_by_sale_items(sale.sale_id, sale.sale_items, sale.total_discount)
|
|
else
|
|
render json: JSON.generate({:status => false, :error_message => "Record not found"})
|
|
end
|
|
end
|
|
|
|
|
|
end
|