diff --git a/Gemfile b/Gemfile index da3af1e5..01a87af7 100644 --- a/Gemfile +++ b/Gemfile @@ -9,8 +9,7 @@ end # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.1.0' # Use mysql as the database for Active Record - -#gem 'mysql2', '>= 0.3.18', '< 0.5' +gem 'mysql2', '>= 0.3.18', '< 0.5' #Use PosgreSQL gem 'pg' @@ -44,9 +43,6 @@ gem 'to_xls-rails' #Reporting gem #gem 'compendium' -# Pagination -gem 'kaminari', :git => "git://github.com/amatsuda/kaminari.git", :branch => 'master' - # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks @@ -61,7 +57,8 @@ gem 'bcrypt', '~> 3.1.7' gem 'sidekiq' # Pagination -gem 'kaminari', :git => "git://github.com/amatsuda/kaminari.git", :branch => 'master' +gem 'kaminari', '~> 0.16.3' + # Use Capistrano for deployment # gem 'capistrano-rails', group: :development diff --git a/Gemfile.lock b/Gemfile.lock index 2c4c94b3..520eb9c8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,21 +1,3 @@ -GIT - remote: git://github.com/amatsuda/kaminari.git - revision: bc52ae73d41386d344b5d1b18e689e5a988f1a03 - branch: master - specs: - kaminari (1.0.1) - activesupport (>= 4.1.0) - kaminari-actionview (= 1.0.1) - kaminari-activerecord (= 1.0.1) - kaminari-core (= 1.0.1) - kaminari-actionview (1.0.1) - actionview - kaminari-core (= 1.0.1) - kaminari-activerecord (1.0.1) - activerecord - kaminari-core (= 1.0.1) - kaminari-core (1.0.1) - GEM remote: https://rubygems.org/ specs: @@ -104,6 +86,9 @@ GEM rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) + kaminari (0.16.3) + actionpack (>= 3.0.0) + activesupport (>= 3.0.0) listen (3.0.8) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) @@ -119,6 +104,7 @@ GEM minitest (5.10.2) multi_json (1.12.1) multi_xml (0.6.0) + mysql2 (0.4.6) nio4r (2.1.0) nokogiri (1.7.2) mini_portile2 (~> 2.1.0) @@ -256,8 +242,10 @@ DEPENDENCIES httparty (~> 0.15.5) jbuilder (~> 2.5) jquery-rails - kaminari! + kaminari (~> 0.16.3) listen (~> 3.0.5) + + mysql2 (>= 0.3.18, < 0.5) pg prawn prawn-table @@ -281,4 +269,4 @@ DEPENDENCIES web-console (>= 3.3.0) BUNDLED WITH - 1.15.0 + 1.15.1 diff --git a/app/assets/javascripts/api/origami/paypar.coffee b/app/assets/javascripts/api/origami/paypar.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/api/origami/paypar.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ 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/assets/javascripts/membership_actions.coffee b/app/assets/javascripts/membership_actions.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/membership_actions.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/orgiami.js b/app/assets/javascripts/orgiami.js deleted file mode 100644 index cd8622c3..00000000 --- a/app/assets/javascripts/orgiami.js +++ /dev/null @@ -1,102 +0,0 @@ -// This is a manifest file that'll be compiled into application.js, which will include all the files -// listed below. -// -// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, -// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. -// -// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -// compiled file. JavaScript code in this file should be added after the last require_* statement. -// -// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details -// about supported directives. -// -//= require jquery -//= require bootstrap -//= require jquery_ujs -//= require turbolinks -//= require cable - -$(document).ready(function(){ - $(".orders").on('click', function(){ - var zone_name=$(this).find(".orders-table").text(); - var receipt_no=$(this).find(".orders-receipt-no").text(); - var unique_id=$(this).find(".orders-id").text(); - - var cashier=""; - var receipt_date=""; - var sub_total=0; - var discount_amount=0; - var tax_amount=0; - var grand_total_amount=0; - - $("#order-title").text("ORDER DETAILS - " + zone_name); - // clear order items - $("#order-items-table").children("tbody").empty(); - - // AJAX call for order - $.ajax({ - type: "GET", - url: "origami/" + unique_id, - data: { 'id' : unique_id }, - success:function(result){ - for (i = 0; i < result.length; i++) { - var data = JSON.stringify(result[i]); - var parse_data = JSON.parse(data); - - // Receipt Header - receipt_no = result[i].receipt_no; - cashier = result[i].cashier_name; - receipt_date = result[i].receipt_date; - - $("#receipt_no").text(receipt_no); - $("#cashier").text(cashier==null?"":cashier); - $("#receipt_date").text(receipt_date); - - - //Receipt Charges - sub_total += (parse_data.qty*parse_data.price); - discount_amount = parse_data.discount_amount; - tax_amount = parse_data.tax_amount; - grand_total_amount = parse_data.grand_total_amount; - - $("#order-sub-total").text(sub_total); - $("#order-food").text(''); - $("#order-beverage").text(''); - $("#order-discount").text(discount_amount); - $("#order-Tax").text(tax_amount); - $("#order-grand-total").text(grand_total_amount); - - // Ordered Items - var order_items_rows = "" + - "" + parse_data.item_name + "" + - "" + parse_data.qty + "" + - "" + parse_data.qty*parse_data.price + "" + - ""; - - $("#order-items-table").children("tbody").append(order_items_rows); - } - } - }); - // End AJAX Call - - $('.orders').removeClass('selected-item'); - $(this).addClass('selected-item'); - }); - - // Bill Request - $('#request_bills').click(function() { - var order_id=$(".selected-item").find(".orders-id").text(); - window.location.href = '/origami/request_bills/'+ order_id - return false; - }); - - // Payment for Bill - $('#pay').click(function() { - var sale_id=$(".selected-item").find(".orders-id").text(); - window.location.href = '/origami/sale/'+ sale_id + "/payment" - return false; - }); -}); - - - diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js new file mode 100644 index 00000000..20ac5b26 --- /dev/null +++ b/app/assets/javascripts/origami.js @@ -0,0 +1,243 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. JavaScript code in this file should be added after the last require_* statement. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery +//= require bootstrap +//= require jquery_ujs +//= require turbolinks +//= require cable + +$(document).ready(function(){ + $(".orders").on('click', function(){ + var zone_name=$(this).find(".orders-table").text(); + var receipt_no=$(this).find(".orders-receipt-no").text(); + var unique_id=$(this).find(".orders-id").text(); + var order_status=$(this).find(".orders-order-status").text().trim(); + + // Enable/Disable Button + control_button(order_status); + + //for customer button + if(unique_id.charAt(0) == 'S'){ + $("#customer").removeAttr('disabled'); + }else{ + $("#customer").attr('disabled','disabled'); + } + + var cashier=""; + var receipt_date=""; + var sub_total=0; + var discount_amount=0; + var tax_amount=0; + var grand_total_amount=0; + + $("#order-title").text("ORDER DETAILS - " + zone_name); + // clear order items + $("#order-items-table").children("tbody").empty(); + + // AJAX call for order + $.ajax({ + type: "GET", + url: "origami/" + unique_id, + data: { 'id' : unique_id }, + success:function(result){ + for (i = 0; i < result.length; i++) { + var data = JSON.stringify(result[i]); + var parse_data = JSON.parse(data); + + // Receipt Header + receipt_no = result[i].receipt_no; + cashier = result[i].cashier_name; + receipt_date = result[i].receipt_date; + + $("#receipt_no").text(receipt_no); + $("#cashier").text(cashier==null?"":cashier); + $("#receipt_date").text(receipt_date); + + + //Receipt Charges + sub_total += (parse_data.qty*parse_data.price); + discount_amount = parse_data.discount_amount; + tax_amount = parse_data.tax_amount; + grand_total_amount = parse_data.grand_total_amount; + + $("#order-sub-total").text(sub_total); + $("#order-food").text(''); + $("#order-beverage").text(''); + $("#order-discount").text(discount_amount); + $("#order-Tax").text(tax_amount); + $("#order-grand-total").text(grand_total_amount); + + // Ordered Items + var order_items_rows = "" + + "" + parse_data.item_name + "" + + "" + parse_data.qty + "" + + "" + parse_data.qty*parse_data.price + "" + + ""; + + $("#order-items-table").children("tbody").append(order_items_rows); + } + } + }); + // End AJAX Call + + $('.orders').removeClass('selected-item'); + $(this).addClass('selected-item'); + }); + + // Bill Request + $('#request_bills').click(function() { + var order_id=$(".selected-item").find(".orders-id").text(); + if(order_id!=""){ + window.location.href = '/origami/request_bills/'+ order_id + } + else { + alert("Please select an order!"); + } + return false; + }); + + // Discount for Payment + $('#discount').click(function() { + var order_id=$(".selected-item").find(".orders-id").text(); + if(order_id!=""){ + window.location.href = '/origami/discount/'+ order_id + } + else { + alert("Please select an order!"); + } + + return false; + }); + + // Pay Discount for Payment + $("#pay-discount").on('click', function(){ + var sale_id = $('#sale-id').text(); + var sub_total = $('#order-sub-total').text(); + var grand_total = $('#order-grand-total').text(); + var discount_type = $('#discount-type').val(); + var discount_value = $('#discount-amount').val(); + var discount_amount = discount_value; + + // For Percentage Discount + if(discount_type == 1){ + discount_amount=(sub_total*discount_value)/100; + } + + var params = {'sale_id': sale_id, 'grand_total' : grand_total, 'discount_type':discount_type, 'discount_value':discount_value, 'discount_amount':discount_amount}; + $.ajax({ + type: "POST", + url: "/origami/discount", + data: params, + success:function(result){ } + }); + }); + + // Payment for Bill + $('#pay').click(function() { + var sale_id=$(".selected-item").find(".orders-id").text(); + if(sale_id!=""){ + window.location.href = '/origami/sale/'+ sale_id + "/payment" + } + else { + alert("Please select an order!"); + } + + return false; + }); + + $('#customer').click(function() { + var sale_id=$(".selected-item").find(".orders-id").text(); + window.location.href = '/crm/customers/'+ sale_id + "/assign_sale_id" + return false; + }); +}); + +/* For Receipt - Calculate discount or tax */ +$(document).on('click', '.cashier_number', function(event){ + if(event.handled !== true) { + var original_value=0; + original_value = $('#discount-amount').val(); + + var input_type = $(this).attr("data-type"); + + switch (input_type) { + case 'num': + var input_value = $(this).attr("data-value"); + if (original_value == "0.0"){ + $('#discount-amount').val(input_value); + update_balance(); + } + else{ + $('#discount-amount').val(original_value + '' + input_value); + update_balance(); + } + break; + + case 'add': + var input_value = $(this).attr("data-value"); + amount = parseInt(input_value) + parseInt(original_value); + $('#discount-amount').val(amount); + update_balance(); + break; + + case 'del' : + var discount_text=$('#discount-amount').val(); + $('#discount-amount').val(discount_text.substr(0,discount_text.length-1)); + update_balance(); + break; + + case 'clr': + $('#discount-amount').val("0.0"); + update_balance(); + break; + } + + event.handled = true; + } else { + return false; + } +}); + +/* Button Control by Status */ +function control_button(order_status){ + if(order_status=="billed"){ + $("#request_bills").prop('disabled', true); + $("#discount").prop('disabled', false); + $("#pay").prop('disabled', false); + } + else if(order_status=="new") { + $("#request_bills").prop('disabled', false); + $("#discount").prop('disabled', true); + $("#pay").prop('disabled', true); + } +} + +/* For Receipt - Update Balance */ +function update_balance(){ + var discount_type = $('#discount-type').val(); + var discount_amount = $('#discount-amount').val(); + var sub_total = $('#order-sub-total').text(); + var tax = $('#order-Tax').text(); + + // For Percentage Discount + if(discount_type == 1){ + discount_amount=(sub_total*discount_amount)/100; + } + + var total = (parseFloat(sub_total) + parseFloat(tax)) - discount_amount; + $('#order-discount').text(discount_amount); + $('#order-grand-total').text(total); +} + + + diff --git a/app/assets/javascripts/origami/paypar.coffee b/app/assets/javascripts/origami/paypar.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/origami/paypar.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/settings/membership_actions.coffee b/app/assets/javascripts/settings/membership_actions.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/settings/membership_actions.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/api/origami/paypar.scss b/app/assets/stylesheets/api/origami/paypar.scss new file mode 100644 index 00000000..3ce106bb --- /dev/null +++ b/app/assets/stylesheets/api/origami/paypar.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the api/origami/paypar controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/membership_actions.scss b/app/assets/stylesheets/membership_actions.scss new file mode 100644 index 00000000..a916dc5b --- /dev/null +++ b/app/assets/stylesheets/membership_actions.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the membership_actions controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/orgiami.scss b/app/assets/stylesheets/origami.scss similarity index 91% rename from app/assets/stylesheets/orgiami.scss rename to app/assets/stylesheets/origami.scss index d94bc702..0be16266 100644 --- a/app/assets/stylesheets/orgiami.scss +++ b/app/assets/stylesheets/origami.scss @@ -69,3 +69,10 @@ .green{ background-color: #009900 } + + +/*----- Reset -----*/ + +select.form-control { + height: inherit !important; +} diff --git a/app/assets/stylesheets/origami/paypar.scss b/app/assets/stylesheets/origami/paypar.scss new file mode 100644 index 00000000..8cc055f3 --- /dev/null +++ b/app/assets/stylesheets/origami/paypar.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the origami/paypar controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/settings/membership_actions.scss b/app/assets/stylesheets/settings/membership_actions.scss new file mode 100644 index 00000000..66eafd50 --- /dev/null +++ b/app/assets/stylesheets/settings/membership_actions.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the settings/membership_actions controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/api/memberships_controller.rb b/app/controllers/api/memberships_controller.rb index 6b125868..210a4ca0 100644 --- a/app/controllers/api/memberships_controller.rb +++ b/app/controllers/api/memberships_controller.rb @@ -1,7 +1,7 @@ class Api::MembershipsController < ActionController::API before :authenticate_token - + #Add Membership to invoice def create diff --git a/app/controllers/crm/customers_controller.rb b/app/controllers/crm/customers_controller.rb index c25f6e80..325ac7dd 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("paypar_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("paypar_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..9ae2b413 100644 --- a/app/controllers/crm/home_controller.rb +++ b/app/controllers/crm/home_controller.rb @@ -3,22 +3,53 @@ 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]) + + @total_amount = 0.00 + @total_tax = 0.00 + + if @booking.booking_orders + order_items = [] + @booking.booking_orders.each do |bo| + order = Order.find(bo.order_id) + #if (order.status == "new") + order_items = order_items + order.order_items + #end + end + + end + + unique_code="CrmOrderPdf" + + print_settings = PrintSetting.find_by_unique_code(unique_code) + + printer = Printer::ReceiptPrinter.new(print_settings) + + printer.print_crm_order(@booking,order_items,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/card_payments_controller.rb b/app/controllers/origami/card_payments_controller.rb new file mode 100644 index 00000000..1d18e401 --- /dev/null +++ b/app/controllers/origami/card_payments_controller.rb @@ -0,0 +1,29 @@ +class Origami::CardPaymentsController < BaseOrigamiController + + + def index + @membership_rebate_balance = 0 + @membership_id = 0 + if !@membership_id.nil? + membership_setting = MembershipSetting.find_by_membership_type("paypar_url") + membership_data = SalePayment.get_paypar_account(membership_setting.gateway_url,membership_setting.auth_token,@membership_id) + if membership_data["status"]==true + membership_account_data = membership_data["data"]; + membership_account_data.each do |acc_data| + if acc_data["accountable_type"] == "REBATEACCOUNT" + @membership_rebate_balance=acc_data["balance"] + else + @membership_rebate_balance = 0 + end + end + else + @membership_rebate_balance = 0 + end + end + + end + + def create + end + +end diff --git a/app/controllers/origami/discounts_controller.rb b/app/controllers/origami/discounts_controller.rb index 09ab1103..daf68918 100644 --- a/app/controllers/origami/discounts_controller.rb +++ b/app/controllers/origami/discounts_controller.rb @@ -1,6 +1,51 @@ class Origami::DiscountsController < BaseOrigamiController + + #discount page show from origami index with selected order def index + sale_id = params[:id] + if Sale.exists?(sale_id) + @sale_data = Sale.find(sale_id) + end end + + #discount for selected order def create + sale_id = params[:sale_id] + discount_type = params[:discount_type] + discount_value = params[:discount_value] + discount_amount = params[:discount_amount] + grand_total = params[:grand_total] + + if discount_type == 0 + remark="Discount " + discount_amount + " as net" + else + remark="Discount " + discount_amount + " as percentage" + end + + #update discount for sale + sale = Sale.find(sale_id) + sale.total_discount = discount_amount + sale.grand_total = grand_total + sale.save + + #save sale item for discount + sale_item = SaleItem.new + + #pull + sale_item.sale_id = sale_id + sale_item.product_code = 0 + sale_item.product_name = "Discount" + sale_item.remark = remark + + sale_item.qty = 1 + sale_item.unit_price = (0-discount_amount.to_f) + sale_item.taxable_price = discount_amount + sale_item.is_taxable = 0 + + sale_item.price = sale_item.qty * sale_item.unit_price + sale_item.save + + redirect_to origami_root_path end + end diff --git a/app/controllers/origami/others_payments_controller.rb b/app/controllers/origami/others_payments_controller.rb index e92c9535..a5177b06 100644 --- a/app/controllers/origami/others_payments_controller.rb +++ b/app/controllers/origami/others_payments_controller.rb @@ -2,6 +2,34 @@ class Origami::OthersPaymentsController < BaseOrigamiController def index + @membership_rebate_balance = 0 + @sale_id = params[:sale_id] + @payment_method_setting = PaymentMethodSetting.all + # @sale_id = params[:sale_id] + # sale_data = Sale.find_by_sale_id(@sale_id) + + # if sale_data.customer_id + # customer_data= Customer.find_by_customer_id(sale_data.customer_id) + # @membership_id = customer_data.membership_id + # if !@membership_id.nil? + # membership_setting = MembershipSetting.find_by_membership_type("paypar_url") + # membership_data = SalePayment.get_paypar_account(membership_setting.gateway_url,membership_setting.auth_token,@membership_id) + # if membership_data["status"]==true + # membership_account_data = membership_data["data"]; + # membership_account_data.each do |acc_data| + # if acc_data["accountable_type"] == "REBATEACCOUNT" + # @membership_rebate_balance=acc_data["balance"] + # else + # @membership_rebate_balance = 0 + # end + # end + # else + # @membership_rebate_balance = 0 + # end + # end + # else + + # end end def create diff --git a/app/controllers/origami/paypar_payments_controller.rb b/app/controllers/origami/paypar_payments_controller.rb new file mode 100644 index 00000000..af5ce55f --- /dev/null +++ b/app/controllers/origami/paypar_payments_controller.rb @@ -0,0 +1,22 @@ +class Origami::PayparPaymentsController < BaseOrigamiController + def create + sale_id = params[:sale_id] + redeem_amount = params[:redeem_amount] + membership_id = params[:membership_id] + payment_method = "paypar" + if(Sale.exists?(sale_id)) + saleObj = Sale.find(sale_id) + sale_payment = SalePayment.new + status,msg =sale_payment.process_payment(saleObj, @user, redeem_amount,payment_method) + + if status == true + @out = true, "Success!" + else + @out =false, "Please try again payment!" + end + else + @out = false, "There has no sale record!" + end + + end +end \ No newline at end of file diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index 62289c89..d1aa9e61 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 @@ -26,3 +27,5 @@ class Origami::RequestBillsController < BaseOrigamiController redirect_to origami_root_path end end + + diff --git a/app/controllers/settings/membership_actions_controller.rb b/app/controllers/settings/membership_actions_controller.rb new file mode 100644 index 00000000..6db1a45b --- /dev/null +++ b/app/controllers/settings/membership_actions_controller.rb @@ -0,0 +1,111 @@ +class Settings::MembershipActionsController < ApplicationController + before_action :set_settings_membership_action, only: [:show, :edit, :update, :destroy] + + # GET /settings/membership_actions + # GET /settings/membership_actions.json + def index + type = params[:type] + @sale_id = params[:sale_id] + if type.nil? + @settings_membership_actions = Settings::MembershipAction.all + else + membership_actions_data=Settings::MembershipAction.find_by_membership_type(type) + + if !membership_actions_data.nil? + url = params[:gateway_url].to_s + membership_actions_data.gateway_url.to_s + puts url.to_json + sale_data = Sale.find_by_sale_id(@sale_id) + if sale_data.customer_id + customer_data= Customer.find_by_customer_id(sale_data.customer_id) + @membership_id = customer_data.membership_id + @campaign_type_id =1 + if !@membership_id.nil? + membership_setting = MembershipSetting.find_by_membership_type("paypar_url") + membership_data = SalePayment.get_paypar_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id) + if membership_data["status"]==true + @membership_rebate_balance=membership_data["balance"] + @out = true, @membership_rebate_balance + else + @out = false, 0 + end + else + @out = false, 0 + end + else + @out =false, 0 + end + # campaign_type_id=1 + # get_account_data = MembershipAction.get_account_data(url) + else + @out = false, 0 + end + render :json => @out.to_json + end + + end + + # GET /settings/membership_actions/1 + # GET /settings/membership_actions/1.json + def show + end + + # GET /settings/membership_actions/new + def new + @settings_membership_action = Settings::MembershipAction.new + end + + # GET /settings/membership_actions/1/edit + def edit + end + + # POST /settings/membership_actions + # POST /settings/membership_actions.json + def create + @settings_membership_action = Settings::MembershipAction.new(settings_membership_action_params) + + respond_to do |format| + if @settings_membership_action.save + format.html { redirect_to @settings_membership_action, notice: 'Membership action was successfully created.' } + format.json { render :show, status: :created, location: @settings_membership_action } + else + format.html { render :new } + format.json { render json: @settings_membership_action.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /settings/membership_actions/1 + # PATCH/PUT /settings/membership_actions/1.json + def update + respond_to do |format| + if @settings_membership_action.update(settings_membership_action_params) + format.html { redirect_to @settings_membership_action, notice: 'Membership action was successfully updated.' } + format.json { render :show, status: :ok, location: @settings_membership_action } + else + format.html { render :edit } + format.json { render json: @settings_membership_action.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /settings/membership_actions/1 + # DELETE /settings/membership_actions/1.json + def destroy + @settings_membership_action.destroy + respond_to do |format| + format.html { redirect_to settings_membership_actions_url, notice: 'Membership action was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_settings_membership_action + @settings_membership_action = Settings::MembershipAction.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def settings_membership_action_params + params.require(:settings_membership_action).permit(:membership_type, :is_active, :gateway_communication_type, :gateway_url, :auth_token, :merchant_account_id, :created_by, :additional_parameter) + end +end diff --git a/app/controllers/settings/payment_method_settings_controller.rb b/app/controllers/settings/payment_method_settings_controller.rb index ce27f725..f3ac595e 100644 --- a/app/controllers/settings/payment_method_settings_controller.rb +++ b/app/controllers/settings/payment_method_settings_controller.rb @@ -69,6 +69,6 @@ class Settings::PaymentMethodSettingsController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def settings_payment_method_setting_params - params.require(:payment_method_setting).permit(:payment_method, :is_active, :gateway_communication_type, :gateway_url, :auth_token, :merchant_account_id) + params.require(:payment_method_setting).permit(:payment_method, :is_active, :gateway_communication_type, :gateway_url, :auth_token, :merchant_account_id, :additional_parameters) end end diff --git a/app/helpers/api/origami/paypar_helper.rb b/app/helpers/api/origami/paypar_helper.rb new file mode 100644 index 00000000..0e102f10 --- /dev/null +++ b/app/helpers/api/origami/paypar_helper.rb @@ -0,0 +1,2 @@ +module Api::Origami::PayparHelper +end diff --git a/app/helpers/origami/paypar_helper.rb b/app/helpers/origami/paypar_helper.rb new file mode 100644 index 00000000..fe18e897 --- /dev/null +++ b/app/helpers/origami/paypar_helper.rb @@ -0,0 +1,2 @@ +module Origami::PayparHelper +end diff --git a/app/helpers/settings/membership_actions_helper.rb b/app/helpers/settings/membership_actions_helper.rb new file mode 100644 index 00000000..038ec51f --- /dev/null +++ b/app/helpers/settings/membership_actions_helper.rb @@ -0,0 +1,2 @@ +module Settings::MembershipActionsHelper +end diff --git a/app/jobs/order_queue_processor_job.rb b/app/jobs/order_queue_processor_job.rb index 10081ad5..e92faa36 100644 --- a/app/jobs/order_queue_processor_job.rb +++ b/app/jobs/order_queue_processor_job.rb @@ -1,5 +1,5 @@ class OrderQueueProcessorJob < ApplicationJob - queue_as :oqs + queue_as :default def perform(order_id) # Do something later 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..afc17d79 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("paypar_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/order.rb b/app/models/order.rb index 8c456a2c..4817c3ce 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -48,7 +48,7 @@ class Order < ApplicationRecord process_order_queue #send order to broadcast job - send_order_broadcast + #send_order_broadcast return true, booking diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index d0819529..d203568f 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,order_items,setting) + #Use CUPS service + #Generate PDF + #Print + pdf = CrmOrderPdf.new(booking,order_items,setting) + pdf.render_file "tmp/print_crm_order.pdf" + self.print("tmp/print_crm_order.pdf") + end end diff --git a/app/models/sale.rb b/app/models/sale.rb index 1a9c9a28..b0f07cb0 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -55,8 +55,8 @@ class Sale < ApplicationRecord generate_receipt_no order = Order.find(order_id) - #Default - Values - self.tax_type = "execlusive" + #Default Tax - Values + self.tax_type = "exclusive" self.requested_by = requested_by self.requested_at = DateTime.now.utc diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb index 1ebd1632..5d87ff13 100644 --- a/app/models/sale_item.rb +++ b/app/models/sale_item.rb @@ -12,7 +12,7 @@ class SaleItem < ApplicationRecord def self.get_order_items_details(sale_id) - order_details = SaleItem.select("sales.total_discount as discount_amount,DATE_FORMAT(sales.receipt_date,'%Y-%m-%d %h:%m') as receipt_date, + order_details = SaleItem.select("sales.total_tax as tax_amount, sales.grand_total as grand_total_amount , sales.total_discount as discount_amount,DATE_FORMAT(sales.receipt_date,'%Y-%m-%d %h:%m') as receipt_date, sales.cashier_name,sales.receipt_no,sale_items.product_name as item_name,sale_items.qty,sale_items.price,sale_items.unit_price as total_price") .joins("left join sales on sales.sale_id = sale_items.sale_id") .where("sale_items.sale_id=?",sale_id) diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 8f9b7294..834dba1f 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -8,12 +8,10 @@ class SalePayment < ApplicationRecord attr_accessor :received_amount, :card_payment_reference, :voucher_no, :giftcard_no, :customer_id, :external_payment_status - def process_payment(invoice, action_by, cash_amount) + def process_payment(invoice, action_by, cash_amount,payment_method) self.sale = invoice self.received_amount = cash_amount - - payment_method = "cash" amount_due = invoice.grand_total #get all payment for this invoices @@ -54,7 +52,7 @@ class SalePayment < ApplicationRecord end #record an payment in sale-audit - remark = "Payment #{payment_method}- for Invoice #{invoice.receipt_no} Due [#{amount_due}]| pay amount -> #{amount} | Payment Status ->#{payment_status}" + remark = "Payment #{payment_method}- for Invoice #{invoice.receipt_no} Due [#{amount_due}]| pay amount -> #{cash_amount} | Payment Status ->#{payment_status}" sale_audit = SaleAudit.record_payment(invoice.id, remark, action_by) return true, self.sale @@ -66,6 +64,38 @@ class SalePayment < ApplicationRecord return false, "No outstanding Amount" end + end + + def self.get_paypar_account(url,token,membership_id,campaign_type_id) + response = HTTParty.get(url, + :body => { app_token: token,membership_id:membership_id,campaign_type_id:campaign_type_id}.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' + } + ) + return response; + + end + + def self.redeem(paypar_url,token,membership_id,received_amount,sale_id,campaign_type_id) + membership_actions_data = Settings::MembershipAction.find_by_membership_type("redeem_url"); + if !membership_actions_data.nil? + url = paypar_url.to_s + membership_actions_data.gateway_url.to_s + campaign_type_id = 1 + response = HTTParty.post(url, + :body => { generic_customer_id:membership_id,total_amount:received_amount,receipet_no:sale_id,campaign_type_id:campaign_type_id,account_no:""}.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' + } + ) + else + response =false; + end + + return response; + end private @@ -148,15 +178,37 @@ class SalePayment < ApplicationRecord end def paypar_payment - ##TODO - Integration with Paypar (SmartPay) + payment_status = false + + #Next time - validate if the vochure number is valid - within + self.payment_method = "paypar" + self.payment_amount = self.received_amount + self.payment_reference = self.voucher_no + self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f + self.payment_status = "pending" + payment_method = self.save! + + campaign_type_id =1; + customer_data = Customer.find_by_customer_id(self.sale.customer_id) + membership_setting = MembershipSetting.find_by_membership_type("paypar_url") + membership_data = SalePayment.redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id,campaign_type_id) + if membership_data["status"]==true + SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') + sale_update_payment_status(self.received_amount.to_f) + + else + sale_update_payment_status(0) + end + + + return payment_status + end def sale_update_payment_status(paid_amount) - puts "paid_amount" - puts paid_amount #update amount_outstanding self.sale.amount_received = self.sale.amount_received + paid_amount - self.sale.amount_changed = amount - self.sale.amount_received + self.sale.amount_changed = paid_amount - self.sale.amount_received if (self.sale.grand_total <= self.sale.amount_received && self.sale.amount_changed > 0) self.sale.payment_status = "paid" self.sale.sale_status = "completed" diff --git a/app/models/settings/membership_action.rb b/app/models/settings/membership_action.rb new file mode 100644 index 00000000..814e4b97 --- /dev/null +++ b/app/models/settings/membership_action.rb @@ -0,0 +1,2 @@ +class Settings::MembershipAction < ApplicationRecord +end diff --git a/app/pdf/crm_order_pdf.rb b/app/pdf/crm_order_pdf.rb new file mode 100644 index 00000000..94fc5503 --- /dev/null +++ b/app/pdf/crm_order_pdf.rb @@ -0,0 +1,106 @@ +class CrmOrderPdf < Prawn::Document + attr_accessor :receipt_width,:price_column_width,:p_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_column_width,:item_description_width + def initialize(booking,order_items,print_settings) + self.p_width = 200 + self.page_height = 1450 + self.margin = 10 + # self.price_width = self.p_width / 2 + self.price_width=80 + self.item_width = self.p_width - self.price_width + self.item_height = self.item_height + self.qty_column_width = self.p_width / 2 + self.item_description_width=self.p_width - self.price_width + self.receipt_width=130 + + @item_width = self.p_width.to_i / 2 + @qty_width = @item_width.to_i / 3 + @double = @qty_width * 1.3 + @half_qty = @qty_width / 2 + #setting page margin and width + super(:margin => [self.margin, self.margin, self.margin, self.margin], :page_size => [self.p_width, self.page_height]) + self.header_font_size = 7 + self.item_font_size = 9 + + header( booking.type, booking.dining_facility.name) + stroke_horizontal_rule + order_detail(booking.checkin_by,booking.checkin_at,booking.dining_facility.name) + line_items(order_items) + #all_total(order_items) + + + end + + def header (type, name) + text "#{type}", :size => self.header_font_size,:align => :center + move_down 5 + text "#{name}", :size => self.header_font_size,:align => :center + # move_down self.item_height + move_down 5 + + stroke_horizontal_rule + + end + + def order_detail(order_by,order_at,customer) + move_down 5 + move_down 2 + y_position = cursor + qty_column_width = self.p_width * 0.2 + item_description_width = self.p_width * 0.5 + price_column_width = self.p_width * 0.3 + + + + stroke_horizontal_rule + move_down 5 + y_position = cursor + pad_top(15) { + # @item_width.to_i + @half_qty.to_i + text_box "Order By", :at =>[0,y_position], :width => @item_width.to_i - @half_qty.to_i , :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size + text_box "Order At", :at =>[@item_width.to_i - @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "Customer", :at =>[@item_width.to_i-@qty_width,y_position], :width => @half_qty, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + + } + + move_down 5 + stroke_horizontal_rule +y_position = cursor + pad_top(15) { + + text_box "#{order_by}", :at =>[@item_width.to_i - @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "#{order_at.to_i}", :at =>[@item_width.to_i-@qty_width,y_position], :width => @half_qty, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "#{customer}", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @double, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + + } + end + + def line_items(order_items) + y_position = cursor + qty_column_width = self.p_width * 0.2 + item_description_width = self.p_width * 0.5 + price_column_width = self.p_width * 0.3 + + + + stroke_horizontal_rule + move_down 5 + y_position = cursor + pad_top(15) { + # @item_width.to_i + @half_qty.to_i + text_box "Items", :at =>[0,y_position], :width => @item_width.to_i - @half_qty.to_i , :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size + text_box "Price", :at =>[@item_width.to_i - @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "Qty", :at =>[@item_width.to_i-@qty_width,y_position], :width => @half_qty, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + text_box "Total", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @double, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right + + } + + move_down 5 + stroke_horizontal_rule + + + + 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" %> +
- - <%= 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" %> +
+ +
+ + <%= 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' } %> - - <% @membership.each do |member| %> + <% @member_group.each do |member| %> <%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..3a2a7684 100644 --- a/app/views/crm/home/_booking.html.erb +++ b/app/views/crm/home/_booking.html.erb @@ -4,9 +4,10 @@ <% @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,29 +37,50 @@ 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/layouts/_header_crm.html.erb b/app/views/layouts/_header_crm.html.erb index 7e497f1e..31dee08d 100644 --- a/app/views/layouts/_header_crm.html.erb +++ b/app/views/layouts/_header_crm.html.erb @@ -4,7 +4,7 @@ CRM
- Queue | Bookings | Online Orders | Customers + Queue | Bookings | Online Orders | <%= link_to 'Customer', crm_customers_path, :html=>":color:white" %>
diff --git a/app/views/layouts/origami.html.erb b/app/views/layouts/origami.html.erb index 2c438597..ef5f3789 100644 --- a/app/views/layouts/origami.html.erb +++ b/app/views/layouts/origami.html.erb @@ -9,8 +9,8 @@ SmartSales : Restaurant <%= csrf_meta_tags %> - <%= stylesheet_link_tag 'orgiami', media: 'all', 'data-turbolinks-track': 'reload' %> - <%= javascript_include_tag 'orgiami', 'data-turbolinks-track': 'reload' %> + <%= stylesheet_link_tag 'origami', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_include_tag 'origami', 'data-turbolinks-track': 'reload' %> diff --git a/app/views/origami/discounts/index.html.erb b/app/views/origami/discounts/index.html.erb new file mode 100644 index 00000000..e95bdcc3 --- /dev/null +++ b/app/views/origami/discounts/index.html.erb @@ -0,0 +1,178 @@ +
+ +
+ + +
+
+ +
ORDER DETAILS
+
+
+
+
+

Receipt No: <%=@sale_data.receipt_no rescue ' '%>

+

Cashier: <%=@sale_data.cashier_name rescue ' '%>

+
+
+

Date: <%=@sale_data.receipt_date.strftime("%d/%m/%Y - %I:%M %p") rescue '-'%>

+
+
+
+ + + + + + + + <% sub_total = 0 %> + <% @sale_data.sale_items.each do |sale_item| %> + <% sub_total += sale_item.qty*sale_item.unit_price%> + + + + + + <%end %> + +
ItemsQTY + Price +
+ <%=sale_item.product_name%>@<%=sale_item.unit_price%> + + <%=sale_item.qty%> + + <%=(sale_item.qty*sale_item.unit_price)%> +
+
+ +
+
+
+ + + +
+ +
+
+
Pay Discount
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+
1
+
2
+
3
+
+
+
+
500
+
+
+ +
+
+
+
4
+
5
+
6
+
+
+
+
1000
+
+
+ +
+
+
+
7
+
8
+
9
+
+
+
+
5000
+
+
+ +
+
+
+
0
+
.
+
00
+
+
+
+
10000
+
+
+ +
+
+
+
+
DEL
+
CLR
+
+
+
+
50000
+
+
+
+
+
+
+
diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index a8301f52..35a46907 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -1,6 +1,6 @@
-
+
diff --git a/app/views/origami/home/index_old.html.erb b/app/views/origami/home/index_old.html.erb deleted file mode 100644 index d480cf8d..00000000 --- a/app/views/origami/home/index_old.html.erb +++ /dev/null @@ -1,328 +0,0 @@ -
-
- - - - - - -
- - -
- -
- - <% if @booking_orders %> - <% @booking_orders.each do |booking_order| %> - <% if booking_order.order_status != "new" %> -
-
-

- <%=booking_order.table_name%>

- Receipt No : <%=booking_order.receipt_no%>
- Order Status : <%=booking_order.order_status %> -
-
- <% else %> -
-
-

<%=booking_order.table_name%>

- Order Status : <%=booking_order.order_status %> -
-
- <% end %> - <%end %> - <%end %> -
-
- - -
- -
- - <% if @booking_rooms %> - <% @booking_rooms.each do |booking_room| %> - <% if !booking_room.order_status = 'new'%> -
-
-

- <%=booking_room.room_name%>

- Receipt No : <%=booking_room.receipt_no%>
- Order Status : <%=booking_room.order_status %> -
-
- <% else %> -
-
-

<%=booking_room.room_name%>ddd

\ - Order Status : <%=booking_room.order_status %> -
-
- <% end %> - <%end %> - <%end %> -
-
- - -
- - -
- - <% if @orders %> - <% @orders.each do |order| %> - <% if !order.order_status = 'new'%> -
-
-

- Order No:<%=order.order_id%>

- Receipt No : <%=order.receipt_no%>
- Order Status : <%=order.order_status %> -
-
- <% else %> -
-
-

Order No:<%=order.order_id%>

- Order Status : <%=order.order_status %> -
-
- <% end %> - <%end %> - <%end %> -
-
- -
- -
- -
-
-
-
ORDER DETAILS -

-
-
-
-
- - - - - - -
ItemsQTY - Price -
-
-
- - - - - - - - - -
- - - - - -
-
- - -
-
-
- -
- - - - - - - - - - - - -
-
- - diff --git a/app/views/origami/others_payments/index.html.erb b/app/views/origami/others_payments/index.html.erb index 86ef10b0..77c06904 100644 --- a/app/views/origami/others_payments/index.html.erb +++ b/app/views/origami/others_payments/index.html.erb @@ -1 +1,177 @@ -Hello Card Payment +
+ +
+
+ <% @payment_method_setting.each do |payment_method|%> +
+
<%= payment_method.payment_method %>
+
+ <% end %> +
+
+ +
+ +
+
+
+
+
+
1
+
2
+
3
+
+
+
+
1000
+
+
+
+
+
+
4
+
5
+
6
+
+
+
+
5000
+
+
+
+
+
+
7
+
8
+
9
+
+
+
+
10000
+
+
+
+
+
+
0
+
.
+
00
+
+
+
+
50000
+
+
+
+
+
+
+
DEL
+
CLR
+
+
+
+
PAY
+
+
+
+
+ +
+
+
+ +
+ \ No newline at end of file diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index ccd9fd77..c2c15787 100644 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -165,7 +165,7 @@ \ No newline at end of file diff --git a/app/views/settings/membership_actions/_form.html.erb b/app/views/settings/membership_actions/_form.html.erb new file mode 100644 index 00000000..9f4a2cd5 --- /dev/null +++ b/app/views/settings/membership_actions/_form.html.erb @@ -0,0 +1,18 @@ +<%= simple_form_for(@settings_membership_action) do |f| %> + <%= f.error_notification %> + +
+ <%= f.input :membership_type %> + <%= f.input :is_active %> + <%= f.input :gateway_communication_type %> + <%= f.input :gateway_url %> + <%= f.input :auth_token %> + <%= f.input :merchant_account_id %> + <%= f.input :created_by %> + <%= f.input :additional_parameter %> +
+ +
+ <%= f.button :submit %> +
+<% end %> diff --git a/app/views/settings/membership_actions/_settings_membership_action.json.jbuilder b/app/views/settings/membership_actions/_settings_membership_action.json.jbuilder new file mode 100644 index 00000000..30c691d4 --- /dev/null +++ b/app/views/settings/membership_actions/_settings_membership_action.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! settings_membership_action, :id, :membership_type, :is_active, :gateway_communication_type, :gateway_url, :auth_token, :merchant_account_id, :created_by, :additional_parameter, :created_at, :updated_at +json.url settings_membership_action_url(settings_membership_action, format: :json) diff --git a/app/views/settings/membership_actions/edit.html.erb b/app/views/settings/membership_actions/edit.html.erb new file mode 100644 index 00000000..3373d008 --- /dev/null +++ b/app/views/settings/membership_actions/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Settings Membership Action

+ +<%= render 'form', settings_membership_action: @settings_membership_action %> + +<%= link_to 'Show', @settings_membership_action %> | +<%= link_to 'Back', settings_membership_actions_path %> diff --git a/app/views/settings/membership_actions/index.html.erb b/app/views/settings/membership_actions/index.html.erb new file mode 100644 index 00000000..80b4420e --- /dev/null +++ b/app/views/settings/membership_actions/index.html.erb @@ -0,0 +1,41 @@ +

<%= notice %>

+ +

Settings Membership Actions

+ + + + + + + + + + + + + + + + + + <% @settings_membership_actions.each do |settings_membership_action| %> + + + + + + + + + + + + + + <% end %> + +
Membership typeIs activeGateway communication typeGateway urlAuth tokenMerchant accountCreated byAdditional parameter
<%= settings_membership_action.membership_type %><%= settings_membership_action.is_active %><%= settings_membership_action.gateway_communication_type %><%= settings_membership_action.gateway_url %><%= settings_membership_action.auth_token %><%= settings_membership_action.merchant_account_id %><%= settings_membership_action.created_by %><%= settings_membership_action.additional_parameter %><%= link_to 'Show', settings_membership_action %><%= link_to 'Edit', edit_settings_membership_action_path(settings_membership_action) %><%= link_to 'Destroy', settings_membership_action, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Settings Membership Action', new_settings_membership_action_path %> diff --git a/app/views/settings/membership_actions/index.json.jbuilder b/app/views/settings/membership_actions/index.json.jbuilder new file mode 100644 index 00000000..0b90b195 --- /dev/null +++ b/app/views/settings/membership_actions/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @settings_membership_actions, partial: 'settings_membership_actions/settings_membership_action', as: :settings_membership_action diff --git a/app/views/settings/membership_actions/new.html.erb b/app/views/settings/membership_actions/new.html.erb new file mode 100644 index 00000000..802e887a --- /dev/null +++ b/app/views/settings/membership_actions/new.html.erb @@ -0,0 +1,5 @@ +

New Settings Membership Action

+ +<%= render 'form', settings_membership_action: @settings_membership_action %> + +<%= link_to 'Back', settings_membership_actions_path %> diff --git a/app/views/settings/membership_actions/show.html.erb b/app/views/settings/membership_actions/show.html.erb new file mode 100644 index 00000000..ee285af8 --- /dev/null +++ b/app/views/settings/membership_actions/show.html.erb @@ -0,0 +1,44 @@ +

<%= notice %>

+ +

+ Membership type: + <%= @settings_membership_action.membership_type %> +

+ +

+ Is active: + <%= @settings_membership_action.is_active %> +

+ +

+ Gateway communication type: + <%= @settings_membership_action.gateway_communication_type %> +

+ +

+ Gateway url: + <%= @settings_membership_action.gateway_url %> +

+ +

+ Auth token: + <%= @settings_membership_action.auth_token %> +

+ +

+ Merchant account: + <%= @settings_membership_action.merchant_account_id %> +

+ +

+ Created by: + <%= @settings_membership_action.created_by %> +

+ +

+ Additional parameter: + <%= @settings_membership_action.additional_parameter %> +

+ +<%= link_to 'Edit', edit_settings_membership_action_path(@settings_membership_action) %> | +<%= link_to 'Back', settings_membership_actions_path %> diff --git a/app/views/settings/membership_actions/show.json.jbuilder b/app/views/settings/membership_actions/show.json.jbuilder new file mode 100644 index 00000000..aa642795 --- /dev/null +++ b/app/views/settings/membership_actions/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "settings_membership_actions/settings_membership_action", settings_membership_action: @settings_membership_action diff --git a/app/views/settings/payment_method_settings/_form.html.erb b/app/views/settings/payment_method_settings/_form.html.erb index 740ad046..c8a72dbc 100644 --- a/app/views/settings/payment_method_settings/_form.html.erb +++ b/app/views/settings/payment_method_settings/_form.html.erb @@ -8,6 +8,7 @@ <%= f.input :gateway_url %> <%= f.input :auth_token %> <%= f.input :merchant_account_id %> + <%= f.input :additional_parameters %>
diff --git a/config/routes.rb b/config/routes.rb index b988579d..6d7be02e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,10 @@ require 'sidekiq/web' Rails.application.routes.draw do - + + namespace :settings do + resources :membership_actions + end root 'home#index' mount Sidekiq::Web => '/kiq' @@ -72,12 +75,14 @@ Rails.application.routes.draw do resources :customers, only: [:index,:new, :create ] #add customer type end - get "/request_bills/:id" => "request_bills#print" + get "/discount/:id" => "discounts#index" + post "/discount" => "discounts#create" + #--------- Payment ------------# get 'sale/:sale_id/payment' => 'payments#show' post 'payment_process' => 'payments#create' - + post 'paypar_payment_process' => 'paypar_payments#create' get 'sale/:sale_id/payment/credit_payment' => "credit_payments#index" get 'sale/:sale_id/payment/others_payment' => "others_payments#index" @@ -93,12 +98,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 ------------# diff --git a/db/migrate/20170421171849_add_company_address_email.rb b/db/migrate/20170421171849_add_company_address_email.rb index 81667406..3bf6602e 100644 --- a/db/migrate/20170421171849_add_company_address_email.rb +++ b/db/migrate/20170421171849_add_company_address_email.rb @@ -1,4 +1,5 @@ class AddCompanyAddressEmail < ActiveRecord::Migration[5.1] def change + add_column :order_items, :completed_by, :string end end diff --git a/db/migrate/20170507045043_order_items_completed_by.rb b/db/migrate/20170507045043_order_items_completed_by.rb deleted file mode 100644 index c6c791c0..00000000 --- a/db/migrate/20170507045043_order_items_completed_by.rb +++ /dev/null @@ -1,6 +0,0 @@ -class OrderItemsCompletedBy < ActiveRecord::Migration[5.1] - def change - add_column :order_items, :completed_by, :string - add_column :order_items, :completed_at, :datetime - end -end diff --git a/db/migrate/20170602093159_create_print_settings.rb b/db/migrate/20170602093159_create_print_settings.rb index a5ce89d6..e9ea5e83 100644 --- a/db/migrate/20170602093159_create_print_settings.rb +++ b/db/migrate/20170602093159_create_print_settings.rb @@ -3,10 +3,10 @@ class CreatePrintSettings < ActiveRecord::Migration[5.1] create_table :print_settings do |t| t.string :name, :null => false t.string :unique_code, :null => false - t.string :template, :null => false - t.string :db_name, :null => false - t.string :db_type, :null => false - t.string :db_username, :null => false + t.string :template + t.string :db_name + t.string :db_type + t.string :db_username t.string :db_password t.string :printer_name, :null => false t.string :api_settings diff --git a/db/migrate/20170608104900_create_settings_membership_actions.rb b/db/migrate/20170608104900_create_settings_membership_actions.rb new file mode 100644 index 00000000..2b9dd85d --- /dev/null +++ b/db/migrate/20170608104900_create_settings_membership_actions.rb @@ -0,0 +1,16 @@ +class CreateSettingsMembershipActions < ActiveRecord::Migration[5.1] + def change + create_table :settings_membership_actions do |t| + t.string :membership_type + t.boolean :is_active + t.string :gateway_communication_type + t.string :gateway_url + t.string :auth_token + t.string :merchant_account_id + t.string :created_by + t.string :additional_parameter + + t.timestamps + end + end +end diff --git a/db/migrate/20170608111602_additionparametertopaymentsettings.rb b/db/migrate/20170608111602_additionparametertopaymentsettings.rb new file mode 100644 index 00000000..ec85c209 --- /dev/null +++ b/db/migrate/20170608111602_additionparametertopaymentsettings.rb @@ -0,0 +1,5 @@ +class Additionparametertopaymentsettings < ActiveRecord::Migration[5.1] + def change + add_column :payment_method_settings, :additional_parameters, :string + end +end diff --git a/db/seeds.rb b/db/seeds.rb index c90bfff5..fc19164d 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -140,9 +140,13 @@ admin_employee = Employee.create({name: "Administrator", role: "Administrator", food = Account.create({title: "Food", account_type: "0"}) beverage = Account.create({title: "Beverage", account_type: "1"}) -shop = Shop.create( - {name: "Beauty In The Pot", address: "address", township: "Yangon", city: "Yangon", state: "Yangon", - country: "Myanmar", phone_no: "09123456789", reservation_no: "bip000001", license: "license", - activated_at: "2017-06-06", license_data: "license_data", base_currency: "Ks", id_prefix: "abc"} - ) +order_station1=PrintSetting.create({name: "OrderItemPdf", unique_code: "OrderItemPdf", printer_name: "EPSON-TM-T82-S-A"}) +order_station2=PrintSetting.create({name: "Order Summary", unique_code: "OrderSummaryPdf", printer_name: "EPSON-TM-T82-S-A"}) +request_bill_printer=PrintSetting.create({name: "Receipt Bill", unique_code: "ReceiptBillPdf", printer_name: "EPSON-TM-T82-S-A"}) + +# shop = Shop.create( +# {name: "Beauty In The Pot", address: "address", township: "Yangon", city: "Yangon", state: "Yangon", +# country: "Myanmar", phone_no: "09123456789", reservation_no: "bip000001", license: "license", +# activated_at: "2017-06-06", license_data: "license_data", base_currency: "Ks", id_prefix: "abc"} +# ) diff --git a/dump.rdb b/dump.rdb index b931754d..35382006 100644 Binary files a/dump.rdb and b/dump.rdb differ diff --git a/spec/controllers/api/origami/paypar_controller_spec.rb b/spec/controllers/api/origami/paypar_controller_spec.rb new file mode 100644 index 00000000..e0003e75 --- /dev/null +++ b/spec/controllers/api/origami/paypar_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Api::Origami::PayparController, type: :controller do + +end diff --git a/spec/controllers/membership_actions_controller_spec.rb b/spec/controllers/membership_actions_controller_spec.rb new file mode 100644 index 00000000..f22e7497 --- /dev/null +++ b/spec/controllers/membership_actions_controller_spec.rb @@ -0,0 +1,141 @@ +require 'rails_helper' + +# This spec was generated by rspec-rails when you ran the scaffold generator. +# It demonstrates how one might use RSpec to specify the controller code that +# was generated by Rails when you ran the scaffold generator. +# +# It assumes that the implementation code is generated by the rails scaffold +# generator. If you are using any extension libraries to generate different +# controller code, this generated spec may or may not pass. +# +# It only uses APIs available in rails and/or rspec-rails. There are a number +# of tools you can use to make these specs even more expressive, but we're +# sticking to rails and rspec-rails APIs to keep things simple and stable. +# +# Compared to earlier versions of this generator, there is very limited use of +# stubs and message expectations in this spec. Stubs are only used when there +# is no simpler way to get a handle on the object needed for the example. +# Message expectations are only used when there is no simpler way to specify +# that an instance is receiving a specific message. +# +# Also compared to earlier versions of this generator, there are no longer any +# expectations of assigns and templates rendered. These features have been +# removed from Rails core in Rails 5, but can be added back in via the +# `rails-controller-testing` gem. + +RSpec.describe MembershipActionsController, type: :controller do + + # This should return the minimal set of attributes required to create a valid + # MembershipAction. As you add validations to MembershipAction, be sure to + # adjust the attributes here as well. + let(:valid_attributes) { + skip("Add a hash of attributes valid for your model") + } + + let(:invalid_attributes) { + skip("Add a hash of attributes invalid for your model") + } + + # This should return the minimal set of values that should be in the session + # in order to pass any filters (e.g. authentication) defined in + # MembershipActionsController. Be sure to keep this updated too. + let(:valid_session) { {} } + + describe "GET #index" do + it "returns a success response" do + membership_action = MembershipAction.create! valid_attributes + get :index, params: {}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #show" do + it "returns a success response" do + membership_action = MembershipAction.create! valid_attributes + get :show, params: {id: membership_action.to_param}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #new" do + it "returns a success response" do + get :new, params: {}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #edit" do + it "returns a success response" do + membership_action = MembershipAction.create! valid_attributes + get :edit, params: {id: membership_action.to_param}, session: valid_session + expect(response).to be_success + end + end + + describe "POST #create" do + context "with valid params" do + it "creates a new MembershipAction" do + expect { + post :create, params: {membership_action: valid_attributes}, session: valid_session + }.to change(MembershipAction, :count).by(1) + end + + it "redirects to the created membership_action" do + post :create, params: {membership_action: valid_attributes}, session: valid_session + expect(response).to redirect_to(MembershipAction.last) + end + end + + context "with invalid params" do + it "returns a success response (i.e. to display the 'new' template)" do + post :create, params: {membership_action: invalid_attributes}, session: valid_session + expect(response).to be_success + end + end + end + + describe "PUT #update" do + context "with valid params" do + let(:new_attributes) { + skip("Add a hash of attributes valid for your model") + } + + it "updates the requested membership_action" do + membership_action = MembershipAction.create! valid_attributes + put :update, params: {id: membership_action.to_param, membership_action: new_attributes}, session: valid_session + membership_action.reload + skip("Add assertions for updated state") + end + + it "redirects to the membership_action" do + membership_action = MembershipAction.create! valid_attributes + put :update, params: {id: membership_action.to_param, membership_action: valid_attributes}, session: valid_session + expect(response).to redirect_to(membership_action) + end + end + + context "with invalid params" do + it "returns a success response (i.e. to display the 'edit' template)" do + membership_action = MembershipAction.create! valid_attributes + put :update, params: {id: membership_action.to_param, membership_action: invalid_attributes}, session: valid_session + expect(response).to be_success + end + end + end + + describe "DELETE #destroy" do + it "destroys the requested membership_action" do + membership_action = MembershipAction.create! valid_attributes + expect { + delete :destroy, params: {id: membership_action.to_param}, session: valid_session + }.to change(MembershipAction, :count).by(-1) + end + + it "redirects to the membership_actions list" do + membership_action = MembershipAction.create! valid_attributes + delete :destroy, params: {id: membership_action.to_param}, session: valid_session + expect(response).to redirect_to(membership_actions_url) + end + end + +end diff --git a/spec/controllers/origami/paypar_controller_spec.rb b/spec/controllers/origami/paypar_controller_spec.rb new file mode 100644 index 00000000..749649d4 --- /dev/null +++ b/spec/controllers/origami/paypar_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Origami::PayparController, type: :controller do + +end diff --git a/spec/controllers/settings/membership_actions_controller_spec.rb b/spec/controllers/settings/membership_actions_controller_spec.rb new file mode 100644 index 00000000..af030c74 --- /dev/null +++ b/spec/controllers/settings/membership_actions_controller_spec.rb @@ -0,0 +1,141 @@ +require 'rails_helper' + +# This spec was generated by rspec-rails when you ran the scaffold generator. +# It demonstrates how one might use RSpec to specify the controller code that +# was generated by Rails when you ran the scaffold generator. +# +# It assumes that the implementation code is generated by the rails scaffold +# generator. If you are using any extension libraries to generate different +# controller code, this generated spec may or may not pass. +# +# It only uses APIs available in rails and/or rspec-rails. There are a number +# of tools you can use to make these specs even more expressive, but we're +# sticking to rails and rspec-rails APIs to keep things simple and stable. +# +# Compared to earlier versions of this generator, there is very limited use of +# stubs and message expectations in this spec. Stubs are only used when there +# is no simpler way to get a handle on the object needed for the example. +# Message expectations are only used when there is no simpler way to specify +# that an instance is receiving a specific message. +# +# Also compared to earlier versions of this generator, there are no longer any +# expectations of assigns and templates rendered. These features have been +# removed from Rails core in Rails 5, but can be added back in via the +# `rails-controller-testing` gem. + +RSpec.describe Settings::MembershipActionsController, type: :controller do + + # This should return the minimal set of attributes required to create a valid + # Settings::MembershipAction. As you add validations to Settings::MembershipAction, be sure to + # adjust the attributes here as well. + let(:valid_attributes) { + skip("Add a hash of attributes valid for your model") + } + + let(:invalid_attributes) { + skip("Add a hash of attributes invalid for your model") + } + + # This should return the minimal set of values that should be in the session + # in order to pass any filters (e.g. authentication) defined in + # Settings::MembershipActionsController. Be sure to keep this updated too. + let(:valid_session) { {} } + + describe "GET #index" do + it "returns a success response" do + membership_action = Settings::MembershipAction.create! valid_attributes + get :index, params: {}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #show" do + it "returns a success response" do + membership_action = Settings::MembershipAction.create! valid_attributes + get :show, params: {id: membership_action.to_param}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #new" do + it "returns a success response" do + get :new, params: {}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #edit" do + it "returns a success response" do + membership_action = Settings::MembershipAction.create! valid_attributes + get :edit, params: {id: membership_action.to_param}, session: valid_session + expect(response).to be_success + end + end + + describe "POST #create" do + context "with valid params" do + it "creates a new Settings::MembershipAction" do + expect { + post :create, params: {settings_membership_action: valid_attributes}, session: valid_session + }.to change(Settings::MembershipAction, :count).by(1) + end + + it "redirects to the created settings_membership_action" do + post :create, params: {settings_membership_action: valid_attributes}, session: valid_session + expect(response).to redirect_to(Settings::MembershipAction.last) + end + end + + context "with invalid params" do + it "returns a success response (i.e. to display the 'new' template)" do + post :create, params: {settings_membership_action: invalid_attributes}, session: valid_session + expect(response).to be_success + end + end + end + + describe "PUT #update" do + context "with valid params" do + let(:new_attributes) { + skip("Add a hash of attributes valid for your model") + } + + it "updates the requested settings_membership_action" do + membership_action = Settings::MembershipAction.create! valid_attributes + put :update, params: {id: membership_action.to_param, settings_membership_action: new_attributes}, session: valid_session + membership_action.reload + skip("Add assertions for updated state") + end + + it "redirects to the settings_membership_action" do + membership_action = Settings::MembershipAction.create! valid_attributes + put :update, params: {id: membership_action.to_param, settings_membership_action: valid_attributes}, session: valid_session + expect(response).to redirect_to(membership_action) + end + end + + context "with invalid params" do + it "returns a success response (i.e. to display the 'edit' template)" do + membership_action = Settings::MembershipAction.create! valid_attributes + put :update, params: {id: membership_action.to_param, settings_membership_action: invalid_attributes}, session: valid_session + expect(response).to be_success + end + end + end + + describe "DELETE #destroy" do + it "destroys the requested settings_membership_action" do + membership_action = Settings::MembershipAction.create! valid_attributes + expect { + delete :destroy, params: {id: membership_action.to_param}, session: valid_session + }.to change(Settings::MembershipAction, :count).by(-1) + end + + it "redirects to the settings_membership_actions list" do + membership_action = Settings::MembershipAction.create! valid_attributes + delete :destroy, params: {id: membership_action.to_param}, session: valid_session + expect(response).to redirect_to(settings_membership_actions_url) + end + end + +end diff --git a/spec/helpers/api/origami/paypar_helper_spec.rb b/spec/helpers/api/origami/paypar_helper_spec.rb new file mode 100644 index 00000000..d53d9eae --- /dev/null +++ b/spec/helpers/api/origami/paypar_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the Api::Origami::PayparHelper. For example: +# +# describe Api::Origami::PayparHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe Api::Origami::PayparHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/helpers/membership_actions_helper_spec.rb b/spec/helpers/membership_actions_helper_spec.rb new file mode 100644 index 00000000..d1dded48 --- /dev/null +++ b/spec/helpers/membership_actions_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the MembershipActionsHelper. For example: +# +# describe MembershipActionsHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe MembershipActionsHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/helpers/origami/paypar_helper_spec.rb b/spec/helpers/origami/paypar_helper_spec.rb new file mode 100644 index 00000000..4613b9e7 --- /dev/null +++ b/spec/helpers/origami/paypar_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the Origami::PayparHelper. For example: +# +# describe Origami::PayparHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe Origami::PayparHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/helpers/settings/membership_actions_helper_spec.rb b/spec/helpers/settings/membership_actions_helper_spec.rb new file mode 100644 index 00000000..16ba4a4d --- /dev/null +++ b/spec/helpers/settings/membership_actions_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the Settings::MembershipActionsHelper. For example: +# +# describe Settings::MembershipActionsHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe Settings::MembershipActionsHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/membership_action_spec.rb b/spec/models/membership_action_spec.rb new file mode 100644 index 00000000..9f39102d --- /dev/null +++ b/spec/models/membership_action_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe MembershipAction, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/settings/membership_action_spec.rb b/spec/models/settings/membership_action_spec.rb new file mode 100644 index 00000000..eeab228c --- /dev/null +++ b/spec/models/settings/membership_action_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Settings::MembershipAction, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/requests/membership_actions_spec.rb b/spec/requests/membership_actions_spec.rb new file mode 100644 index 00000000..096fdf9f --- /dev/null +++ b/spec/requests/membership_actions_spec.rb @@ -0,0 +1,10 @@ +require 'rails_helper' + +RSpec.describe "MembershipActions", type: :request do + describe "GET /membership_actions" do + it "works! (now write some real specs)" do + get membership_actions_path + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/requests/settings/settings_membership_actions_spec.rb b/spec/requests/settings/settings_membership_actions_spec.rb new file mode 100644 index 00000000..4ac7e179 --- /dev/null +++ b/spec/requests/settings/settings_membership_actions_spec.rb @@ -0,0 +1,10 @@ +require 'rails_helper' + +RSpec.describe "Settings::MembershipActions", type: :request do + describe "GET /settings_membership_actions" do + it "works! (now write some real specs)" do + get settings_membership_actions_path + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/routing/membership_actions_routing_spec.rb b/spec/routing/membership_actions_routing_spec.rb new file mode 100644 index 00000000..dd5cd196 --- /dev/null +++ b/spec/routing/membership_actions_routing_spec.rb @@ -0,0 +1,39 @@ +require "rails_helper" + +RSpec.describe MembershipActionsController, type: :routing do + describe "routing" do + + it "routes to #index" do + expect(:get => "/membership_actions").to route_to("membership_actions#index") + end + + it "routes to #new" do + expect(:get => "/membership_actions/new").to route_to("membership_actions#new") + end + + it "routes to #show" do + expect(:get => "/membership_actions/1").to route_to("membership_actions#show", :id => "1") + end + + it "routes to #edit" do + expect(:get => "/membership_actions/1/edit").to route_to("membership_actions#edit", :id => "1") + end + + it "routes to #create" do + expect(:post => "/membership_actions").to route_to("membership_actions#create") + end + + it "routes to #update via PUT" do + expect(:put => "/membership_actions/1").to route_to("membership_actions#update", :id => "1") + end + + it "routes to #update via PATCH" do + expect(:patch => "/membership_actions/1").to route_to("membership_actions#update", :id => "1") + end + + it "routes to #destroy" do + expect(:delete => "/membership_actions/1").to route_to("membership_actions#destroy", :id => "1") + end + + end +end diff --git a/spec/routing/settings/membership_actions_routing_spec.rb b/spec/routing/settings/membership_actions_routing_spec.rb new file mode 100644 index 00000000..137464f4 --- /dev/null +++ b/spec/routing/settings/membership_actions_routing_spec.rb @@ -0,0 +1,39 @@ +require "rails_helper" + +RSpec.describe Settings::MembershipActionsController, type: :routing do + describe "routing" do + + it "routes to #index" do + expect(:get => "/settings/membership_actions").to route_to("settings/membership_actions#index") + end + + it "routes to #new" do + expect(:get => "/settings/membership_actions/new").to route_to("settings/membership_actions#new") + end + + it "routes to #show" do + expect(:get => "/settings/membership_actions/1").to route_to("settings/membership_actions#show", :id => "1") + end + + it "routes to #edit" do + expect(:get => "/settings/membership_actions/1/edit").to route_to("settings/membership_actions#edit", :id => "1") + end + + it "routes to #create" do + expect(:post => "/settings/membership_actions").to route_to("settings/membership_actions#create") + end + + it "routes to #update via PUT" do + expect(:put => "/settings/membership_actions/1").to route_to("settings/membership_actions#update", :id => "1") + end + + it "routes to #update via PATCH" do + expect(:patch => "/settings/membership_actions/1").to route_to("settings/membership_actions#update", :id => "1") + end + + it "routes to #destroy" do + expect(:delete => "/settings/membership_actions/1").to route_to("settings/membership_actions#destroy", :id => "1") + end + + end +end diff --git a/spec/views/membership_actions/edit.html.erb_spec.rb b/spec/views/membership_actions/edit.html.erb_spec.rb new file mode 100644 index 00000000..77823c89 --- /dev/null +++ b/spec/views/membership_actions/edit.html.erb_spec.rb @@ -0,0 +1,39 @@ +require 'rails_helper' + +RSpec.describe "membership_actions/edit", type: :view do + before(:each) do + @membership_action = assign(:membership_action, MembershipAction.create!( + :membership_type => "MyString", + :is_active => false, + :gateway_communication_type => "MyString", + :gateway_url => "MyString", + :auth_token => "MyString", + :merchant_account_id => "MyString", + :created_by => "MyString", + :additional_parameter => "" + )) + end + + it "renders the edit membership_action form" do + render + + assert_select "form[action=?][method=?]", membership_action_path(@membership_action), "post" do + + assert_select "input[name=?]", "membership_action[membership_type]" + + assert_select "input[name=?]", "membership_action[is_active]" + + assert_select "input[name=?]", "membership_action[gateway_communication_type]" + + assert_select "input[name=?]", "membership_action[gateway_url]" + + assert_select "input[name=?]", "membership_action[auth_token]" + + assert_select "input[name=?]", "membership_action[merchant_account_id]" + + assert_select "input[name=?]", "membership_action[created_by]" + + assert_select "input[name=?]", "membership_action[additional_parameter]" + end + end +end diff --git a/spec/views/membership_actions/index.html.erb_spec.rb b/spec/views/membership_actions/index.html.erb_spec.rb new file mode 100644 index 00000000..a8913079 --- /dev/null +++ b/spec/views/membership_actions/index.html.erb_spec.rb @@ -0,0 +1,40 @@ +require 'rails_helper' + +RSpec.describe "membership_actions/index", type: :view do + before(:each) do + assign(:membership_actions, [ + MembershipAction.create!( + :membership_type => "Membership Type", + :is_active => false, + :gateway_communication_type => "Gateway Communication Type", + :gateway_url => "Gateway Url", + :auth_token => "Auth Token", + :merchant_account_id => "Merchant Account", + :created_by => "Created By", + :additional_parameter => "" + ), + MembershipAction.create!( + :membership_type => "Membership Type", + :is_active => false, + :gateway_communication_type => "Gateway Communication Type", + :gateway_url => "Gateway Url", + :auth_token => "Auth Token", + :merchant_account_id => "Merchant Account", + :created_by => "Created By", + :additional_parameter => "" + ) + ]) + end + + it "renders a list of membership_actions" do + render + assert_select "tr>td", :text => "Membership Type".to_s, :count => 2 + assert_select "tr>td", :text => false.to_s, :count => 2 + assert_select "tr>td", :text => "Gateway Communication Type".to_s, :count => 2 + assert_select "tr>td", :text => "Gateway Url".to_s, :count => 2 + assert_select "tr>td", :text => "Auth Token".to_s, :count => 2 + assert_select "tr>td", :text => "Merchant Account".to_s, :count => 2 + assert_select "tr>td", :text => "Created By".to_s, :count => 2 + assert_select "tr>td", :text => "".to_s, :count => 2 + end +end diff --git a/spec/views/membership_actions/index.json.jbuilder b/spec/views/membership_actions/index.json.jbuilder new file mode 100644 index 00000000..e69de29b diff --git a/spec/views/membership_actions/new.html.erb_spec.rb b/spec/views/membership_actions/new.html.erb_spec.rb new file mode 100644 index 00000000..e6cf42ea --- /dev/null +++ b/spec/views/membership_actions/new.html.erb_spec.rb @@ -0,0 +1,39 @@ +require 'rails_helper' + +RSpec.describe "membership_actions/new", type: :view do + before(:each) do + assign(:membership_action, MembershipAction.new( + :membership_type => "MyString", + :is_active => false, + :gateway_communication_type => "MyString", + :gateway_url => "MyString", + :auth_token => "MyString", + :merchant_account_id => "MyString", + :created_by => "MyString", + :additional_parameter => "" + )) + end + + it "renders new membership_action form" do + render + + assert_select "form[action=?][method=?]", membership_actions_path, "post" do + + assert_select "input[name=?]", "membership_action[membership_type]" + + assert_select "input[name=?]", "membership_action[is_active]" + + assert_select "input[name=?]", "membership_action[gateway_communication_type]" + + assert_select "input[name=?]", "membership_action[gateway_url]" + + assert_select "input[name=?]", "membership_action[auth_token]" + + assert_select "input[name=?]", "membership_action[merchant_account_id]" + + assert_select "input[name=?]", "membership_action[created_by]" + + assert_select "input[name=?]", "membership_action[additional_parameter]" + end + end +end diff --git a/spec/views/membership_actions/show.html.erb_spec.rb b/spec/views/membership_actions/show.html.erb_spec.rb new file mode 100644 index 00000000..5e52c84b --- /dev/null +++ b/spec/views/membership_actions/show.html.erb_spec.rb @@ -0,0 +1,28 @@ +require 'rails_helper' + +RSpec.describe "membership_actions/show", type: :view do + before(:each) do + @membership_action = assign(:membership_action, MembershipAction.create!( + :membership_type => "Membership Type", + :is_active => false, + :gateway_communication_type => "Gateway Communication Type", + :gateway_url => "Gateway Url", + :auth_token => "Auth Token", + :merchant_account_id => "Merchant Account", + :created_by => "Created By", + :additional_parameter => "" + )) + end + + it "renders attributes in

" do + render + expect(rendered).to match(/Membership Type/) + expect(rendered).to match(/false/) + expect(rendered).to match(/Gateway Communication Type/) + expect(rendered).to match(/Gateway Url/) + expect(rendered).to match(/Auth Token/) + expect(rendered).to match(/Merchant Account/) + expect(rendered).to match(/Created By/) + expect(rendered).to match(//) + end +end diff --git a/spec/views/settings/membership_actions/edit.html.erb_spec.rb b/spec/views/settings/membership_actions/edit.html.erb_spec.rb new file mode 100644 index 00000000..be5958c5 --- /dev/null +++ b/spec/views/settings/membership_actions/edit.html.erb_spec.rb @@ -0,0 +1,39 @@ +require 'rails_helper' + +RSpec.describe "settings/membership_actions/edit", type: :view do + before(:each) do + @settings_membership_action = assign(:settings_membership_action, Settings::MembershipAction.create!( + :membership_type => "MyString", + :is_active => false, + :gateway_communication_type => "MyString", + :gateway_url => "MyString", + :auth_token => "MyString", + :merchant_account_id => "MyString", + :created_by => "MyString", + :additional_parameter => "MyString" + )) + end + + it "renders the edit settings_membership_action form" do + render + + assert_select "form[action=?][method=?]", settings_membership_action_path(@settings_membership_action), "post" do + + assert_select "input[name=?]", "settings_membership_action[membership_type]" + + assert_select "input[name=?]", "settings_membership_action[is_active]" + + assert_select "input[name=?]", "settings_membership_action[gateway_communication_type]" + + assert_select "input[name=?]", "settings_membership_action[gateway_url]" + + assert_select "input[name=?]", "settings_membership_action[auth_token]" + + assert_select "input[name=?]", "settings_membership_action[merchant_account_id]" + + assert_select "input[name=?]", "settings_membership_action[created_by]" + + assert_select "input[name=?]", "settings_membership_action[additional_parameter]" + end + end +end diff --git a/spec/views/settings/membership_actions/index.html.erb_spec.rb b/spec/views/settings/membership_actions/index.html.erb_spec.rb new file mode 100644 index 00000000..9f8ea799 --- /dev/null +++ b/spec/views/settings/membership_actions/index.html.erb_spec.rb @@ -0,0 +1,40 @@ +require 'rails_helper' + +RSpec.describe "settings/membership_actions/index", type: :view do + before(:each) do + assign(:settings_membership_actions, [ + Settings::MembershipAction.create!( + :membership_type => "Membership Type", + :is_active => false, + :gateway_communication_type => "Gateway Communication Type", + :gateway_url => "Gateway Url", + :auth_token => "Auth Token", + :merchant_account_id => "Merchant Account", + :created_by => "Created By", + :additional_parameter => "Additional Parameter" + ), + Settings::MembershipAction.create!( + :membership_type => "Membership Type", + :is_active => false, + :gateway_communication_type => "Gateway Communication Type", + :gateway_url => "Gateway Url", + :auth_token => "Auth Token", + :merchant_account_id => "Merchant Account", + :created_by => "Created By", + :additional_parameter => "Additional Parameter" + ) + ]) + end + + it "renders a list of settings/membership_actions" do + render + assert_select "tr>td", :text => "Membership Type".to_s, :count => 2 + assert_select "tr>td", :text => false.to_s, :count => 2 + assert_select "tr>td", :text => "Gateway Communication Type".to_s, :count => 2 + assert_select "tr>td", :text => "Gateway Url".to_s, :count => 2 + assert_select "tr>td", :text => "Auth Token".to_s, :count => 2 + assert_select "tr>td", :text => "Merchant Account".to_s, :count => 2 + assert_select "tr>td", :text => "Created By".to_s, :count => 2 + assert_select "tr>td", :text => "Additional Parameter".to_s, :count => 2 + end +end diff --git a/spec/views/settings/membership_actions/new.html.erb_spec.rb b/spec/views/settings/membership_actions/new.html.erb_spec.rb new file mode 100644 index 00000000..506e06e9 --- /dev/null +++ b/spec/views/settings/membership_actions/new.html.erb_spec.rb @@ -0,0 +1,39 @@ +require 'rails_helper' + +RSpec.describe "settings/membership_actions/new", type: :view do + before(:each) do + assign(:settings_membership_action, Settings::MembershipAction.new( + :membership_type => "MyString", + :is_active => false, + :gateway_communication_type => "MyString", + :gateway_url => "MyString", + :auth_token => "MyString", + :merchant_account_id => "MyString", + :created_by => "MyString", + :additional_parameter => "MyString" + )) + end + + it "renders new settings_membership_action form" do + render + + assert_select "form[action=?][method=?]", settings_membership_actions_path, "post" do + + assert_select "input[name=?]", "settings_membership_action[membership_type]" + + assert_select "input[name=?]", "settings_membership_action[is_active]" + + assert_select "input[name=?]", "settings_membership_action[gateway_communication_type]" + + assert_select "input[name=?]", "settings_membership_action[gateway_url]" + + assert_select "input[name=?]", "settings_membership_action[auth_token]" + + assert_select "input[name=?]", "settings_membership_action[merchant_account_id]" + + assert_select "input[name=?]", "settings_membership_action[created_by]" + + assert_select "input[name=?]", "settings_membership_action[additional_parameter]" + end + end +end diff --git a/spec/views/settings/membership_actions/show.html.erb_spec.rb b/spec/views/settings/membership_actions/show.html.erb_spec.rb new file mode 100644 index 00000000..1f625a0a --- /dev/null +++ b/spec/views/settings/membership_actions/show.html.erb_spec.rb @@ -0,0 +1,28 @@ +require 'rails_helper' + +RSpec.describe "settings/membership_actions/show", type: :view do + before(:each) do + @settings_membership_action = assign(:settings_membership_action, Settings::MembershipAction.create!( + :membership_type => "Membership Type", + :is_active => false, + :gateway_communication_type => "Gateway Communication Type", + :gateway_url => "Gateway Url", + :auth_token => "Auth Token", + :merchant_account_id => "Merchant Account", + :created_by => "Created By", + :additional_parameter => "Additional Parameter" + )) + end + + it "renders attributes in

" do + render + expect(rendered).to match(/Membership Type/) + expect(rendered).to match(/false/) + expect(rendered).to match(/Gateway Communication Type/) + expect(rendered).to match(/Gateway Url/) + expect(rendered).to match(/Auth Token/) + expect(rendered).to match(/Merchant Account/) + expect(rendered).to match(/Created By/) + expect(rendered).to match(/Additional Parameter/) + end +end diff --git a/test/system/membership_actions_test.rb b/test/system/membership_actions_test.rb new file mode 100644 index 00000000..6223e2a5 --- /dev/null +++ b/test/system/membership_actions_test.rb @@ -0,0 +1,9 @@ +require "application_system_test_case" + +class Settings::MembershipActionsTest < ApplicationSystemTestCase + # test "visiting the index" do + # visit settings_membership_actions_url + # + # assert_selector "h1", text: "Settings::MembershipAction" + # end +end