diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index f2ee34ba..8ff96589 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -18,3 +18,4 @@
//= require cable
//= require settings/processing_items
//= require bootstrap-datepicker
+
diff --git a/app/controllers/crm/customers_controller.rb b/app/controllers/crm/customers_controller.rb
index c25f6e80..295a0d8f 100644
--- a/app/controllers/crm/customers_controller.rb
+++ b/app/controllers/crm/customers_controller.rb
@@ -4,10 +4,13 @@ class Crm::CustomersController < ApplicationController
# GET /crm/customers
# GET /crm/customers.json
def index
- @crm_customers = Customer.all
- @customers = Customer.new
+ @sale_id = 0
+ @crm_customers = Customer.all
+ @crm_customer = Customer.new
@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 }
@@ -33,15 +36,68 @@ class Crm::CustomersController < ApplicationController
# POST /crm/customers
# POST /crm/customers.json
def create
- @crm_customer = Customer.new(customer_params)
+ @crm_customers = Customer.new(customer_params)
+
respond_to do |format|
- if @crm_customer.save
- format.html { redirect_to @crm_customer, notice: 'Customer was successfully created.' }
- format.json { render :show, status: :created, location: @crm_customer }
+ if @crm_customers.save
+
+
+ name = customer_params[:name]
+ phone = customer_params[:contact_no]
+ email = customer_params[:email]
+ date_of_birth = customer_params[:date_of_birth]
+ membership_id = params[:membership_id]
+
+ membership = MembershipSetting.find_by_membership_type("smartpay_url")
+ app_token = membership.auth_token.to_s
+ url = membership.gateway_url.to_s + "/api/create_membership_customer".to_s
+
+ response = HTTParty.post(url, :body => { name: name,phone: phone,email: email,
+ date_of_birth: date_of_birth,
+ membership_id: membership_id}.to_json,
+ :headers => {
+ 'Content-Type' => 'application/json',
+ 'Accept' => 'application/json'
+ }
+ )
+
+ if response["status"] == true
+ puts "hhhhhhhhhhhhhhhhhh"
+ puts params[:sale_id]
+ 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.' }
+ else
+ format.html { redirect_to '/crm/customers/'+params[:sale_id]+'/assign_sale_id', 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"] }
+
+ else
+ format.html { redirect_to '/crm/customers/'+params[:sale_id]+'/assign_sale_id', notice: response["message"] }
+ end
+
+ end
+
+
+ # format.json { render :index, status: :created, location: @crm_customers }
+
else
- format.html { render :new }
- format.json { render json: @crm_customer.errors, status: :unprocessable_entity }
+ 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
+
end
end
end
@@ -49,14 +105,38 @@ class Crm::CustomersController < ApplicationController
# PATCH/PUT /crm/customers/1
# PATCH/PUT /crm/customers/1.json
def update
+
respond_to do |format|
if @crm_customer.update(customer_params)
- format.html { redirect_to @crm_customer, notice: 'Customer was successfully updated.' }
+
+ name = customer_params[:name]
+ phone = customer_params[:contact_no]
+ email = customer_params[:email]
+ date_of_birth = customer_params[:date_of_birth]
+ id = customer_params[:membership_id]
+
+ membership = MembershipSetting.find_by_membership_type("smartpay_url")
+ app_token = membership.auth_token.to_s
+ url = membership.gateway_url.to_s + "/api/update_membership_customer".to_s
+
+ response = HTTParty.post(url, :body => { name: name,phone: phone,email: email,
+ date_of_birth: date_of_birth,
+ id: id}.to_json,
+ :headers => {
+ 'Content-Type' => 'application/json',
+ 'Accept' => 'application/json'
+ }
+ )
+
+ format.html { redirect_to crm_customers_path, notice: 'Customer was successfully updated.' }
format.json { render :show, status: :ok, location: @crm_customer }
+
else
+
format.html { render :edit }
format.json { render json: @crm_customer.errors, status: :unprocessable_entity }
end
+
end
end
@@ -70,6 +150,23 @@ class Crm::CustomersController < ApplicationController
end
end
+ # 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
+ @membership = Customer.get_member_group
+ if @membership["status"] == true
+ @member_group = @membership["data"]
+ end
+ respond_to do |format|
+ format.html { render action: "index"}
+ format.json { render json: @crm_customers }
+ end
+ end
+
private
# Use callbacks to share common setup or constraints between actions.
def set_crm_customer
@@ -78,6 +175,9 @@ 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_id, :membership_type, :membership_authentication_code)
+
+ params.require(:customer).permit(:name, :company, :contact_no, :email, :date_of_birth, :membership_type, :membership_authentication_code)
end
end
+
+
diff --git a/app/controllers/crm/home_controller.rb b/app/controllers/crm/home_controller.rb
index 083f2bf7..f3e82e41 100644
--- a/app/controllers/crm/home_controller.rb
+++ b/app/controllers/crm/home_controller.rb
@@ -3,22 +3,38 @@ class Crm::HomeController < BaseCrmController
@booking = Booking.all
@customer = Customer.all
-
- #@booking = Booking.select("bookings.id as booking_id,
- # bookings.checkin_at,
- # bookings.checkin_by,
- # bookings.dining_facility_id,
- # od.customer_id as customer,
- # od.id as order_id,
- # od.item_count as count,
- # odt.id as order_item_id,
- # odt.item_name as item_name")
- # .joins("join booking_orders as bko ON bko.booking_id = bookings.id")
- # .joins("right join orders as od ON od.id = bko.order_id")
- # .joins("right join order_items as odt ON odt.order_id=od.id")
- # .order("bookings.id DESC")
end
+
def show
end
+
+ #print for crm
+ def print_order
+
+ @booking = Booking.find(params[:id])
+ unique_code="CrmOrderPdf"
+
+ print_settings = PrintSetting.find_by_unique_code(unique_code)
+
+ printer = Printer::ReceiptPrinter.new(print_settings)
+
+ printer.print_crm_order(@booking,print_settings)
+
+ 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
+
end
+
diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb
index 62289c89..c5b87b6b 100644
--- a/app/controllers/origami/request_bills_controller.rb
+++ b/app/controllers/origami/request_bills_controller.rb
@@ -1,5 +1,6 @@
class Origami::RequestBillsController < BaseOrigamiController
+
def print
@sale = Sale.new
sale_order=SaleOrder.new
@@ -25,4 +26,4 @@ class Origami::RequestBillsController < BaseOrigamiController
printer.print_receipt_bill(print_settings,@sale_items,@sale_data,customer_name)
redirect_to origami_root_path
end
-end
+
diff --git a/app/models/account.rb b/app/models/account.rb
index dc2e7cf8..5d775b83 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -2,7 +2,7 @@ class Account < ApplicationRecord
validates_presence_of :title, :account_type
has_many :menu_items
- # belongs_to :lookup , :class_name => "Lookup"
+
def self.collection
Account.select("id, title").map { |e| [e.title, e.id] }
end
diff --git a/app/models/customer.rb b/app/models/customer.rb
index 95901cce..6d2bd561 100644
--- a/app/models/customer.rb
+++ b/app/models/customer.rb
@@ -10,21 +10,26 @@ class Customer < ApplicationRecord
validates :contact_no, uniqueness: true
validates :email, uniqueness: true
+
def self.get_member_group
- gateway_url = MembershipSetting.find_by_membership_type("smartpay_url")
- url = gateway_url.gateway_url.to_s + "/api/get_all_member_group".to_s
- response = HTTParty.get(url)
+ membership = MembershipSetting.find_by_membership_type("smartpay_url")
+ app_token = membership.auth_token.to_s
+
+ url = membership.gateway_url.to_s + "/api/get_all_member_group".to_s
+ response = HTTParty.get(url,
+ :body => { app_token: app_token}.to_json,
+ :headers => {
+ 'Content-Type' => 'application/json',
+ 'Accept' => 'application/json'
+ }
+ )
puts response.body, response.code, response.message, response.headers.inspect
return response;
end
-# http://192.168.1.47:3006/api/create_membership_customer
-#get_all_member_group
-
-
def lastest_invoices
sales.where(:customer_id => self.id).order("created_at desc").limit(5)
end
diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb
index d0819529..523b9ec9 100644
--- a/app/models/printer/receipt_printer.rb
+++ b/app/models/printer/receipt_printer.rb
@@ -72,4 +72,14 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
pdf.render_file "tmp/receipt_bill.pdf"
self.print("tmp/receipt_bill.pdf")
end
+
+ #Bill Receipt Print
+ def print_crm_order(booking,setting)
+ #Use CUPS service
+ #Generate PDF
+ #Print
+ pdf = CrmOrderPdf.new(booking,setting)
+ pdf.render_file "tmp/print_crm_order.pdf"
+ self.print("tmp/print_crm_order.pdf")
+ end
end
diff --git a/app/pdf/crm_order_pdf.rb b/app/pdf/crm_order_pdf.rb
new file mode 100644
index 00000000..36aed0a1
--- /dev/null
+++ b/app/pdf/crm_order_pdf.rb
@@ -0,0 +1,71 @@
+class CrmOrderPdf < Prawn::Document
+
+ def initialize(order_item, print_settings)
+ 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.type}", :size => 15
+ stroke_horizontal_rule
+ move_down 5
+
+ #order_info
+ order_info(order_item.checkin_by,order_item.checkin_at, order_item.customer_id)
+
+ # order items
+ order_items(order_item)
+ end
+
+ # Write Order Information to PDF
+ def order_info(order_by, order_at, customer)
+ 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
+ end
+
+ stroke_horizontal_rule
+
+ move_down 20
+ end
+
+ # Write Order items to PDF
+ def order_items(order_item)
+ y_position = cursor
+
+ bounding_box([0,y_position], :width => 180, :height => 15) do
+ text "Item", :size => 7,:align => :left
+ end
+
+ bounding_box([160,y_position], :width => 20, :height => 15) do
+ text "Qty", :size => 7,:align => :right
+ end
+
+ stroke_horizontal_rule
+ move_down 5
+
+ #Add Order Item
+ add_order_items(order_item)
+ end
+
+ # Add order items under order info
+ def add_order_items(order_item)
+ y_position = cursor
+
+ move_down 5
+
+ bounding_box([0,y_position], :width => 180, :height => 20) do
+ text "#{order_item.sale_id}", :size => 7,:align => :left
+ end
+
+ bounding_box([160,y_position], :width => 20, :height => 20) do
+ text "#{order_item.sale_id}", :size => 7,:align => :right
+ end
+
+ move_down 5
+
+ end
+
+end
diff --git a/app/views/crm/customers/_form.html.erb b/app/views/crm/customers/_form.html.erb
index 533710a9..758a52a2 100644
--- a/app/views/crm/customers/_form.html.erb
+++ b/app/views/crm/customers/_form.html.erb
@@ -8,7 +8,6 @@
<%= f.input :contact_no %>
<%= f.input :email %>
<%= f.input :date_of_birth %>
- <%= f.input :membership_id, :collection => @membership %>
<%= f.input :membership_type %>
<%= f.input :membership_authentication_code %>
@@ -17,3 +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 d866d47d..86f267b0 100644
--- a/app/views/crm/customers/index.html.erb
+++ b/app/views/crm/customers/index.html.erb
@@ -1,20 +1,20 @@
-
+
@@ -22,6 +22,7 @@
+ Select
Name
Company
Contact no
@@ -32,10 +33,16 @@
<% @crm_customers.each do |crm_customer| %>
+
+
<%= crm_customer.name %>
<%= crm_customer.company %>
<%= crm_customer.contact_no %>
<%= crm_customer.email %>
+
+ <%= link_to 'Destroy', crm_customer_path(crm_customer), method: :delete, data: { confirm: 'Are you sure?' } %>
+
+
<% end %>
@@ -46,55 +53,61 @@
-
- <%= simple_form_for crm_customers_path, :html => { :class => 'form-horizontal' } do |f| %>
-
+
+ <%= 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" %>
-
-
- <%= f.input :company, :class => "form-control col-md-6" %>
-
-
- <%= f.input :contact_no, :class => "form-control col-md-6" %>
-
-
- <%= f.input :email, :class => "form-control col-md-6" %>
-
+ <%= f.input :name, :class => "form-control col-md-6 name" %>
+
- Date Of Birth
- <%= f.text_field :date_of_birth,:class=>"form-control datepicker",:readonly =>true, :value => @date_of_birth%>
+ <%= 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" %>
+
+
+
+ Date Of Birth
+ <%= f.text_field :date_of_birth,:class=>"form-control datepicker date_of_birth",:readonly =>true, :value => @date_of_birth%>
- <%= f.select :membership_id, options_for_select(@membership.collect { |member|
- [member["id"].name.titleize, member["id"].id] }, 1), {}, { id: 'countries_select' } %>
-
+
Select Member Group
- <% @membership.each do |member| %>
+ <% @member_group.each do |member| %>
">
<%= member["name"] %>
<%end %>
-
+
-
+
- <%= f.input :membership_type, :class => "form-control col-md-6" %>
+ <%= f.input :membership_type, :class => "form-control col-md-6 membership_type" %>
- <%= f.input :membership_authentication_code, :class => "form-control col-md-6" %>
+ <%= f.input :membership_authentication_code, :class => "form-control col-md-6 membership_authentication_code" %>
- <%= f.button :submit, "Submit", :class => 'btn btn-primary' , :id => 'submit_account' %>
+ <%= f.button :submit, "Submit",:class => 'btn btn-primary ', :id => 'submit_customer' %>
+ <%= f.button :submit, "Update",:class => 'btn btn-primary ', :disabled =>'', :id => 'update_customer' %>
<%end%>
-
+
+
+
+
+
+
diff --git a/app/views/crm/customers/show.html.erb b/app/views/crm/customers/show.html.erb
index 30341a00..da88e887 100644
--- a/app/views/crm/customers/show.html.erb
+++ b/app/views/crm/customers/show.html.erb
@@ -25,10 +25,6 @@
<%= @crm_customer.date_of_birth %>
-
- Membership:
- <%= @crm_customer.membership %>
-
Membership type:
diff --git a/app/views/crm/customers/show.json.jbuilder b/app/views/crm/customers/show.json.jbuilder
index 24d20eca..bd9680de 100644
--- a/app/views/crm/customers/show.json.jbuilder
+++ b/app/views/crm/customers/show.json.jbuilder
@@ -1 +1,2 @@
-json.partial! "crm_customers/crm_customer", crm_customer: @crm_customer
+json.extract! @crm_customer, :id, :name, :company, :contact_no, :email, :date_of_birth, :membership_id, :membership_type, :membership_authentication_code, :created_at, :updated_at
+json.url crm_customer_url(@crm_customer, format: :json)
diff --git a/app/views/crm/home/_booking.html.erb b/app/views/crm/home/_booking.html.erb
index d4f2a756..18b0a83e 100644
--- a/app/views/crm/home/_booking.html.erb
+++ b/app/views/crm/home/_booking.html.erb
@@ -4,9 +4,9 @@
<% @i = 0 %>
<% @booking.each do |booking| %>
- <% if booking.booking_status == "assign" %>
+ <% if booking.booking_status == "new" %>
-
+
<%= @i += 1 %> . <%= booking.dining_facility.name %>
- <%= booking.id %>
@@ -36,14 +36,21 @@
diff --git a/app/views/layouts/CRM.html.erb b/app/views/layouts/CRM.html.erb
index 4bd98526..41de0ca2 100644
--- a/app/views/layouts/CRM.html.erb
+++ b/app/views/layouts/CRM.html.erb
@@ -17,7 +17,7 @@
<%= render 'layouts/header_crm' %>
<% flash.each do |type, message| %>
-
+
×
<%= message %>
diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb
index ba11124a..85de2ef3 100644
--- a/app/views/origami/home/index.html.erb
+++ b/app/views/origami/home/index.html.erb
@@ -206,15 +206,14 @@
-
-
+
Add Order
Edit
Move
- Customer
+ Customer
Req.Bill
Discount
@@ -223,3 +222,146 @@
Re.Print
+
+
+
diff --git a/config/routes.rb b/config/routes.rb
index 6bd296a0..ef287f3e 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -95,12 +95,12 @@ Rails.application.routes.draw do
#--------- Customer Relationship Management ------------#
namespace :crm do
root "home#index" #queue number
- #customers
+ get 'customers/:sale_id/assign_sale_id', to: "customers#get_sale_id", :as => "assign_sale"#get sale id with customer for crm
resources :customers
- #membership
- #bookings
- post "update_booking" , to: "bookings#update_booking", as: "update_booking"
- #queue
+ post "update_booking" , to: "bookings#update_booking", as: "update_booking"#assign and cancel
+ post "update_sale" , to: "home#update_sale_by_customer"#update customer id in sale table
+ get '/print/:id', to: "home#print_order"#print order for crm
+
end
#--------- Order Queue Station ------------#