diff --git a/Gemfile b/Gemfile index 1487492d..02dca6af 100644 --- a/Gemfile +++ b/Gemfile @@ -9,13 +9,10 @@ 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' #Use PosgreSQL - -#gem 'pg' - +gem 'pg' # redis server for cable # gem 'redis', '~> 3.0' @@ -61,8 +58,10 @@ gem 'sidekiq' # Pagination gem 'kaminari', '~> 0.16.3' + # Datatable gem 'filterrific' + # Use Capistrano for deployment # gem 'capistrano-rails', group: :development @@ -94,4 +93,4 @@ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] gem 'httparty', '~> 0.15.5' -gem 'bootstrap-datepicker-rails' \ No newline at end of file +gem 'bootstrap-datepicker-rails' diff --git a/Gemfile.lock b/Gemfile.lock index e7deca12..6a7c6340 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -268,4 +268,4 @@ DEPENDENCIES web-console (>= 3.3.0) BUNDLED WITH - 1.15.0 + 1.15.1 diff --git a/app/assets/javascripts/origami/request_bills.coffee b/app/assets/javascripts/api/origami/paypar.coffee similarity index 100% rename from app/assets/javascripts/origami/request_bills.coffee rename to app/assets/javascripts/api/origami/paypar.coffee 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 ad77aea9..00000000 --- a/app/assets/javascripts/orgiami.js +++ /dev/null @@ -1,115 +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(); - - //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(); - 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; - }); - - $('#customer').click(function() { - var sale_id=$(".selected-item").find(".orders-id").text(); - window.location.href = '/crm/customers/'+ sale_id + "/assign_sale_id" - return false; - }); -}); - - - diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js new file mode 100644 index 00000000..8ce3d0c4 --- /dev/null +++ b/app/assets/javascripts/origami.js @@ -0,0 +1,244 @@ +// 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-bill').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 */ + $('.cashier_number').on('click', 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/payment.js b/app/assets/javascripts/origami/payment.js deleted file mode 100644 index e21a369e..00000000 --- a/app/assets/javascripts/origami/payment.js +++ /dev/null @@ -1,113 +0,0 @@ -// $(document).on('touchstart click', '.keypad', function(event){ -// event.stopPropagation(); -// event.preventDefault(); -// if(event.handled !== true) { -// -// // Do your magic here. -// var input_value = $(this).attr("data-value"); -// switch (input_value) { -// -// case 'delete': -// process_delete_payment(); -// break; -// -// case 'foc': -// remove_input_action(); -// $(".foc").attr("data-action","true"); -// if(customerName.toString() != " "){ //if already chosen customer -// if($("#foc_reason_lists").attr("foc_reason") == ' '){ -// alert("Please! Choose or Add FOC reason"); -// foc_additional_form(); -// } -// else{ -// process_foc_payment(); -// } -// } -// else{ -// alert("Please! Choose or Save Customer"); -// foc_additional_form(); -// } -// break; -// -// case 'nett': -// remove_input_action(); -// $(".nett").attr("data-action","true"); -// if($(".credit_note_payment").hasClass("payment_selected")){ -// if(customerName == " "){ -// alert("Please! Choose or Save Customer"); -// showCustomer(); -// } -// else{ -// $("#accept_payment_btn").attr("data-payment","credit"); -// process_nett_payment(); -// } -// } -// else{ -// process_nett_payment(); -// } -// break; -// -// case 'edit': -// process_edit_invoice(); -// break; -// -// case 'cancel': -// remove_input_action(); -// var status = $("#label_amountdue").attr("data-status"); -// if (status != 'completed' && status != 'void'){ -// $(".cancel").attr("data-action","true"); -// var message = confirm("Are you sure to void? Please, add reason!"); -// if (message == true) { -// $(".additional_form").hide(); -// $("#void_sale_additional_form").show(); -// process_cancel_payment(); -// } -// } -// else{ -// $(".cancel").addClass("dim"); -// } -// break; -// -// case 'ent': -// amount_due = parseFloat($("#label_amountdue").attr("data-original")); -// other_amt = parseFloat($("#label_cash_amount").attr("data-value")); -// credit_amount = parseFloat($("#label_credit_note").text()); -// if ($(".credit_note_payment").hasClass("payment_selected") && credit_amount > 0){ -// if(customerName.toString() != " "){ -// if(credit_amount > (amount_due - other_amt)){ -// alert("You shouldn't exceed the amount due."); -// } -// else{ -// $("#accept_payment_btn").attr("data-payment","credit"); -// update_balance_due(); -// } -// } -// else{ -// alert("Please! Choose or Save Customer"); -// } -// } -// else{ -// update_balance_due(); -// } -// -// break; -// case 'clear': -// process_clear_payment(); -// break; -// -// default: -// -// var existing_value = $(".payment_selected span").text(); -// -// if (existing_value == "0" || existing_value == "0.00") { existing_value = ""; } -// existing_value = existing_value + input_value; -// $(".payment_selected span").text(existing_value); -// -// } -// -// -// event.handled = true; -// } else { -// return false; -// } -// }); 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/origami/request_bills.scss b/app/assets/stylesheets/api/origami/paypar.scss similarity index 59% rename from app/assets/stylesheets/origami/request_bills.scss rename to app/assets/stylesheets/api/origami/paypar.scss index 20719090..3ce106bb 100644 --- a/app/assets/stylesheets/origami/request_bills.scss +++ b/app/assets/stylesheets/api/origami/paypar.scss @@ -1,3 +1,3 @@ -// Place all the styles related to the origami/RequestBills controller here. +// 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/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 518c2e3e..7896fa45 100644 --- a/app/controllers/crm/customers_controller.rb +++ b/app/controllers/crm/customers_controller.rb @@ -57,7 +57,7 @@ class Crm::CustomersController < BaseCrmController date_of_birth = customer_params[:date_of_birth] membership_id = params[:membership_id] - membership = MembershipSetting.find_by_membership_type("smartpay_url") + 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 @@ -124,7 +124,7 @@ class Crm::CustomersController < BaseCrmController date_of_birth = customer_params[:date_of_birth] id = customer_params[:membership_id] - membership = MembershipSetting.find_by_membership_type("smartpay_url") + 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 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/payments_controller.rb b/app/controllers/origami/payments_controller.rb index bac414ad..c60efdac 100644 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -10,7 +10,7 @@ class Origami::PaymentsController < BaseOrigamiController if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) sale_payment = SalePayment.new - sale_payment.process_payment(saleObj, @user, cash) + sale_payment.process_payment(saleObj, @user, cash, "cash") end end 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 ed7aa466..d1aa9e61 100644 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -26,6 +26,6 @@ class Origami::RequestBillsController < BaseOrigamiController printer.print_receipt_bill(print_settings,@sale_items,@sale_data,customer_name) redirect_to origami_root_path end - end + diff --git a/app/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/customer.rb b/app/models/customer.rb index b0667206..3286a319 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -14,7 +14,7 @@ class Customer < ApplicationRecord def self.get_member_group - membership = MembershipSetting.find_by_membership_type("smartpay_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 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/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..2545eae7 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 @@ -73,7 +103,7 @@ class SalePayment < ApplicationRecord payment_status = false self.payment_method = "cash" self.payment_amount = self.received_amount - self.outstanding_amount = self.sale.grand_total - self.received_amount + self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f self.payment_status = "paid" payment_method = self.save! @@ -148,16 +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 - if (self.sale.grand_total <= self.sale.amount_received && self.sale.amount_changed > 0) + self.sale.amount_received = self.sale.amount_received.to_f + paid_amount.to_f + self.sale.amount_changed = paid_amount.to_f - self.sale.amount_received + if (self.sale.grand_total <= self.sale.amount_received.to_f && self.sale.amount_changed.to_f > 0) self.sale.payment_status = "paid" self.sale.sale_status = "completed" self.sale.save! 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/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 47c10ac9..bdd146b7 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -20,6 +20,7 @@
  • <%= link_to "Membership Setting",settings_membership_settings_path, :tabindex =>"-1" %>
  • <%= link_to "Payment Method", settings_payment_method_settings_path, :tabindex =>"-1" %>
  • <%= link_to "Tax Profile", settings_tax_profiles_path, :tabindex =>"-1" %>
  • +
  • <%= link_to "Print Setting", print_settings_path, :tabindex =>"-1" %>
  • @@ -30,9 +31,14 @@
  • <%= link_to "Sales ", crm_root_path, :tabindex =>"-1" %>
  • - + 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 61813a7c..fa521d6c 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -214,12 +214,14 @@ - + + - - + + + 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..85505ef5 100644 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -165,42 +165,43 @@ \ 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/initializers/assets.rb b/config/initializers/assets.rb index fe5eec86..9952a7bc 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -11,11 +11,11 @@ Rails.application.config.assets.version = '1.0' # Rails.application.config.assets.precompile += %w( search.js ) # --- Waiter/ Cashier - Orgiami ---- -Rails.application.config.assets.precompile += %w( orgiami.css ) -Rails.application.config.assets.precompile += %w( orgiami.js ) +Rails.application.config.assets.precompile += %w( origami.css ) +Rails.application.config.assets.precompile += %w( origami.js ) # -- Order Queue Station ----- Rails.application.config.assets.precompile += %w( OQS.css ) -Rails.application.config.assets.precompile += %w( OQS.js ) +Rails.application.config.assets.precompile += %w( OQS.js ) Rails.application.config.assets.precompile += %w( settings.css ) diff --git a/config/routes.rb b/config/routes.rb index aa3c878f..6d43e260 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' @@ -74,12 +77,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" 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