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 15657a98..d8cb1f69 100644 --- a/app/controllers/crm/customers_controller.rb +++ b/app/controllers/crm/customers_controller.rb @@ -4,8 +4,8 @@ class Crm::CustomersController < ApplicationController # GET /crm/customers # GET /crm/customers.json def index - @crm_customers = Customer.all - @crm_customer = Customer.new + @crm_customers = Customer.all + @crm_customer = Customer.new @membership = Customer.get_member_group if @membership["status"] == true @member_group = @membership["data"] @@ -35,12 +35,11 @@ class Crm::CustomersController < ApplicationController # POST /crm/customers # POST /crm/customers.json def create - puts "Hello" - puts customer_params.to_json @crm_customers = Customer.new(customer_params) respond_to do |format| if @crm_customers.save + name = customer_params[:name] phone = customer_params[:contact_no] @@ -52,23 +51,33 @@ class Crm::CustomersController < ApplicationController 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' - } - ) + 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' + } + ) - puts "rrrrrrrrrrrrrr" - puts response.to_json + if response["status"] == true + + customer = Customer.find(@crm_customers.customer_id) + status = customer.update_attributes(membership_id: response["customer_datas"]["id"]) - format.html { redirect_to crm_customers_path, notice: 'Customer was successfully created.' } - format.json { render :index, status: :created, location: @crm_customers } + format.html { redirect_to crm_customers_path, notice: 'Customer was successfully created.' } + # format.json { render :index, status: :created, location: @crm_customers } + else + @crm_customers.destroy + format.html { redirect_to crm_customers_path, notice: 'Customer was not successfully created.' } + end + + + # format.json { render :index, status: :created, location: @crm_customers } else - format.html { render :index } - format.json { render json: @crm_customer.errors, status: :unprocessable_entity } + format.html { redirect_to crm_customers_path} + format.json { render json: @crm_customers.errors, status: :unprocessable_entity } end end end @@ -76,9 +85,30 @@ 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' + } + ) + puts response.to_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 } diff --git a/app/controllers/crm/home_controller.rb b/app/controllers/crm/home_controller.rb index 083f2bf7..7b565ba5 100644 --- a/app/controllers/crm/home_controller.rb +++ b/app/controllers/crm/home_controller.rb @@ -3,22 +3,24 @@ 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 + + @booking = Booking.find(params[:id]) + + unique_code="CrmOrderPdf" + + #print_settings = PrintSetting.find_by_unique_code(unique_code) + + printer = Printer::ReceiptPrinter.new() + + printer.print_crm_order(@booking) + + end end diff --git a/app/models/customer.rb b/app/models/customer.rb index 206c2ada..6d2bd561 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -10,8 +10,6 @@ class Customer < ApplicationRecord validates :contact_no, uniqueness: true validates :email, uniqueness: true - # attr_accessor :name, :company, :contact_no, :email, :date_of_birth, :membership_id, :membership_type, :membership_authentication_code - def self.get_member_group @@ -32,26 +30,6 @@ class Customer < ApplicationRecord end - -# http://192.168.1.47:3006/api/create_membership_customer -#get_all_member_group - - def self.generate(params) - puts "Hello " - puts params.to_json - customer = Customer.new - customer.name= params[:name] - customer.company= params[:company] - customer.contact_no= params[:contact_no] - customer.email= params[:email] - customer.date_of_birth= params[:date_of_birth] - customer.membership_id= params[:membership_id] - customer.membership_type= params[:membership_type] - customer.membership_authentication_code= params[:membership_authentication_code] - customer.save! - return customer - end - 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 86d43190..b60d08ae 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) + #Use CUPS service + #Generate PDF + #Print + pdf = CrmOrderPdf.new(booking) + 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..f9d641b3 --- /dev/null +++ b/app/pdf/crm_order_pdf.rb @@ -0,0 +1,38 @@ +class OrderItemPdf < Prawn::Document + + def initialize(order_item) + 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 + stroke_horizontal_rule + move_down 5 + + #order_info + order_info(order_item.order_by,order_item.order_at, order_item.customer) + + # 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 + + + + end + +end diff --git a/app/views/crm/customers/_form.html.erb b/app/views/crm/customers/_form.html.erb index 533710a9..6de6d686 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 %> diff --git a/app/views/crm/customers/index.html.erb b/app/views/crm/customers/index.html.erb index ce4c3826..167dccc4 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,31 +53,36 @@
-
- <%= simple_form_for @crm_customer, :url => crm_customers_path, :method => :post 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 :name, :class => "form-control col-md-6 name" %> +
- <%= f.input :company, :class => "form-control col-md-6" %> + <%= f.input :company, :class => "form-control col-md-6 company" %>
- <%= f.input :contact_no, :class => "form-control col-md-6" %> + <%= f.input :contact_no, :class => "form-control col-md-6 contact_no" %> + +
+
- <%= f.input :email, :class => "form-control col-md-6" %> + <%= f.input :email, :class => "form-control col-md-6 email" %>
-
- <%= f.text_field :date_of_birth,:class=>"form-control datepicker",:readonly =>true, :value => @date_of_birth%> - +
+ + <%= f.text_field :date_of_birth,:class=>"form-control datepicker date_of_birth",:readonly =>true, :value => @date_of_birth%>
-
- - <% @member_group.each do |member| %>
- +
- <%= 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 f69f5fe0..afacb52e 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,20 @@ 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/config/routes.rb b/config/routes.rb index df652e6b..b5267114 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -86,12 +86,9 @@ Rails.application.routes.draw do #--------- Customer Relationship Management ------------# namespace :crm do root "home#index" #queue number - #customers resources :customers - #membership - #bookings post "update_booking" , to: "bookings#update_booking", as: "update_booking" - #queue + get 'print/:id', to: "home#print" end #--------- Order Queue Station ------------#