diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index 94d8e220..fe209451 100644 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -18,17 +18,17 @@ $(document).ready(function(){ $(".orders").on('click', function(){ - var zone_name=$(this).find(".orders-table").text(); + 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(); + 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'); + $("#customer").removeAttr('disabled'); }else{ $("#customer").attr('disabled','disabled'); } @@ -53,7 +53,7 @@ $(document).ready(function(){ type: "GET", url: "origami/" + unique_id, data: { 'id' : unique_id }, - success:function(result){ + success:function(result){ for (i = 0; i < result.length; i++) { var data = JSON.stringify(result[i]); var parse_data = JSON.parse(data); @@ -82,7 +82,7 @@ $(document).ready(function(){ $("#order-grand-total").text(grand_total_amount); // Ordered Items - var order_items_rows = "" + + var order_items_rows = "" + "" + parse_data.item_name + "" + "" + parse_data.qty + "" + "" + parse_data.qty*parse_data.price + "" + @@ -98,9 +98,9 @@ $(document).ready(function(){ $(this).addClass('selected-item'); }); - // Bill Request + // Bill Request $('#request_bills').click(function() { - var order_id=$(".selected-item").find(".orders-id").text(); + var order_id=$(".selected-item").find(".orders-id").text(); if(order_id!=""){ window.location.href = '/origami/request_bills/'+ order_id } @@ -110,16 +110,16 @@ $(document).ready(function(){ return false; }); - // Discount for Payment + // Discount for Payment $('#discount').click(function() { - var order_id=$(".selected-item").find(".orders-id").text(); + 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; }); @@ -129,11 +129,11 @@ $(document).ready(function(){ 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_value = $('#discount-amount').val(); var discount_amount = discount_value; // For Percentage Discount - if(discount_type == 1){ + if(discount_type == 1){ discount_amount=(sub_total*discount_value)/100; } @@ -155,8 +155,8 @@ $(document).ready(function(){ } else { alert("Please select an order!"); - } - + } + return false; }); @@ -190,7 +190,7 @@ $(document).ready(function(){ original_value = $('#discount-amount').val(); var input_type = $(this).attr("data-type"); - + switch (input_type) { case 'num': var input_value = $(this).attr("data-value"); @@ -201,7 +201,7 @@ $(document).ready(function(){ else{ $('#discount-amount').val(original_value + '' + input_value); update_balance(); - } + } break; case 'add': @@ -232,16 +232,16 @@ $(document).ready(function(){ }); /* Button Control by Status */ -function control_button(order_status){ +function control_button(order_status){ if(order_status=="billed"){ $("#request_bills").prop('disabled', true); $("#discount").prop('disabled', false); - $("#pay").prop('disabled', false); + $("#pay-bill").prop('disabled', false); } else if(order_status=="new") { $("#request_bills").prop('disabled', false); $("#discount").prop('disabled', true); - $("#pay").prop('disabled', true); + $("#pay-bill").prop('disabled', true); } } @@ -258,9 +258,6 @@ function update_balance(){ } var total = (parseFloat(sub_total) + parseFloat(tax)) - discount_amount; - $('#order-discount').text(discount_amount); + $('#order-discount').text(discount_amount); $('#order-grand-total').text(total); } - - - diff --git a/app/assets/javascripts/origami/redeem_payments.coffee b/app/assets/javascripts/origami/redeem_payments.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/origami/redeem_payments.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.scss b/app/assets/stylesheets/origami.scss index 0be16266..c37f2678 100644 --- a/app/assets/stylesheets/origami.scss +++ b/app/assets/stylesheets/origami.scss @@ -7,17 +7,36 @@ // min-height: 75rem; // padding-top: 4.5rem; // } +.others-payment{ + line-height:100px; + text-align:center; + color:white; + width:300px; + height:100px; + font-size:18px; +} .cashier_number{ - height:76px; - line-height:80px; + width: 30%; + height:71px; + line-height:71px; + text-align:center; background:#54A5AF; - float:left; - margin:2px; + // float:left; + // margin:2px; + font-size:20px; + color:white; + // cursor:pointer; +} + +.pay{ + width: 98%; + height:210px; + line-height:210px; + text-align:center; font-size:20px; color:white; - cursor:pointer; } .cashier_number:hover{ @@ -25,7 +44,7 @@ } .long{ - width:100% + width:49% } .sold { @@ -42,17 +61,17 @@ } .charges-name { - width: 80%; + width: 80%; text-align: left; } .item-name { - width: 60%; + width: 60%; text-align: left; } .item-attr { - width: 20%; + width: 20%; text-align: right; } @@ -70,7 +89,13 @@ background-color: #009900 } +.left{ + margin-left:1px; +} +.bottom{ + margin-bottom: 1px; +} /*----- Reset -----*/ select.form-control { diff --git a/app/assets/stylesheets/origami/redeem_payments.scss b/app/assets/stylesheets/origami/redeem_payments.scss new file mode 100644 index 00000000..8fdd1e53 --- /dev/null +++ b/app/assets/stylesheets/origami/redeem_payments.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the origami/redeem_payments 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/bill_controller.rb b/app/controllers/api/bill_controller.rb index a98c8f3d..193a4a45 100644 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -9,11 +9,11 @@ class Api::BillController < Api::ApiController #create Bill by Booking ID if (params[:booking_id]) @sale = Sale.new - @status = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee.name) - + @status, @sale_id = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee.name) + elsif (params[:order_id]) @sale = Sale.new - @status = @sale.generate_invoice_from_order(params[:order_id], current_login_employee.name) + @status, @sale_id = @sale.generate_invoice_from_order(params[:order_id], current_login_employee.name) end end diff --git a/app/controllers/crm/customers_controller.rb b/app/controllers/crm/customers_controller.rb index 042ec63a..8c477355 100644 --- a/app/controllers/crm/customers_controller.rb +++ b/app/controllers/crm/customers_controller.rb @@ -48,7 +48,7 @@ class Crm::CustomersController < BaseCrmController def create @crm_customers = Customer.new(customer_params) - + respond_to do |format| if @crm_customers.save name = customer_params[:name] @@ -58,8 +58,9 @@ class Crm::CustomersController < BaseCrmController membership_id = params[:membership_id] membership = MembershipSetting.find_by_membership_type("paypar_url") + memberaction = MembershipAction.find_by_membership_type("create_membership_customer") app_token = membership.auth_token.to_s - url = membership.gateway_url.to_s + "/api/create_membership_customer".to_s + url = membership.gateway_url.to_s + memberaction.gateway_url.to_s response = HTTParty.post(url, :body => { name: name,phone: phone,email: email, date_of_birth: date_of_birth, @@ -79,9 +80,6 @@ class Crm::CustomersController < BaseCrmController format.html { redirect_to '/origami/'+params[:sale_id]+'/add_customer', notice: 'Customer was successfully created.' } - else - format.html { redirect_to crm_customers_path, notice: 'Customer was successfully created.' } - end # format.json { render :index, status: :created, location: @crm_customers } else @@ -92,7 +90,7 @@ class Crm::CustomersController < BaseCrmController else format.html { redirect_to crm_customers_path, notice: response["message"] } end - + end # format.json { render :index, status: :created, location: @crm_customers } @@ -106,7 +104,7 @@ class Crm::CustomersController < BaseCrmController format.html { redirect_to crm_customers_path} format.json { render json: @crm_customers.errors, status: :unprocessable_entity } end - + end end end @@ -114,7 +112,7 @@ class Crm::CustomersController < BaseCrmController # PATCH/PUT /crm/customers/1 # PATCH/PUT /crm/customers/1.json def update - + respond_to do |format| if @crm_customer.update(customer_params) @@ -125,9 +123,10 @@ class Crm::CustomersController < BaseCrmController id = customer_params[:membership_id] membership = MembershipSetting.find_by_membership_type("paypar_url") + memberaction = MembershipAction.find_by_membership_type("update_membership_customer") app_token = membership.auth_token.to_s - url = membership.gateway_url.to_s + "/api/update_membership_customer".to_s - + url = membership.gateway_url.to_s + memberaction.gateway_url.to_s + response = HTTParty.post(url, :body => { name: name,phone: phone,email: email, date_of_birth: date_of_birth, id: id}.to_json, @@ -136,7 +135,7 @@ class Crm::CustomersController < BaseCrmController 'Accept' => 'application/json' } ) - + format.html { redirect_to crm_customers_path, notice: 'Customer was successfully updated.' } format.json { render :show, status: :ok, location: @crm_customer } @@ -161,7 +160,21 @@ class Crm::CustomersController < BaseCrmController # 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. @@ -175,5 +188,3 @@ class Crm::CustomersController < BaseCrmController params.require(:customer).permit(:name, :company, :contact_no, :email, :date_of_birth) end end - - diff --git a/app/controllers/origami/mpu_controller.rb b/app/controllers/origami/mpu_controller.rb new file mode 100644 index 00000000..263e55f7 --- /dev/null +++ b/app/controllers/origami/mpu_controller.rb @@ -0,0 +1,17 @@ +class Origami::MpuController < BaseOrigamiController + + def index + @sale_id = params[:sale_id] + end + + def create + cash = params[:amount] + sale_id = params[:sale_id] + if(Sale.exists?(sale_id)) + saleObj = Sale.find(sale_id) + sale_payment = SalePayment.new + @status, @sale = sale_payment.process_payment(saleObj, @user, cash, "mpu") + end + end + +end diff --git a/app/controllers/origami/others_payments_controller.rb b/app/controllers/origami/others_payments_controller.rb index a5177b06..c050c3f3 100644 --- a/app/controllers/origami/others_payments_controller.rb +++ b/app/controllers/origami/others_payments_controller.rb @@ -5,6 +5,7 @@ class Origami::OthersPaymentsController < BaseOrigamiController @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) diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index c60efdac..290a2911 100644 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -17,7 +17,17 @@ class Origami::PaymentsController < BaseOrigamiController def show sale_id = params[:sale_id] if Sale.exists?(sale_id) + @cash = 0.0 + @other = 0.0 @sale_data = Sale.find_by_sale_id(sale_id) + @sale_data.sale_payments.each do |spay| + if spay.payment_method == "cash" + @cash = spay.payment_amount + end + if spay.payment_method == "mpu" + @other = spay.payment_amount + end + end end end diff --git a/app/controllers/origami/paypar_payments_controller.rb b/app/controllers/origami/paypar_payments_controller.rb index af5ce55f..0c3ea11f 100644 --- a/app/controllers/origami/paypar_payments_controller.rb +++ b/app/controllers/origami/paypar_payments_controller.rb @@ -8,7 +8,6 @@ class Origami::PayparPaymentsController < BaseOrigamiController 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 @@ -19,4 +18,4 @@ class Origami::PayparPaymentsController < BaseOrigamiController end end -end \ No newline at end of file +end diff --git a/app/controllers/origami/redeem_payments_controller.rb b/app/controllers/origami/redeem_payments_controller.rb new file mode 100644 index 00000000..0821a2d8 --- /dev/null +++ b/app/controllers/origami/redeem_payments_controller.rb @@ -0,0 +1,46 @@ +class Origami::RedeemPaymentsController < BaseOrigamiController + def index + @sale_id = params[:sale_id] + payment_method = params[:payment_method] + @membership_rebate_balance=0 + sale_data = Sale.find_by_sale_id(@sale_id) + if sale_data + if sale_data.customer_id + customer_data= Customer.find_by_customer_id(sale_data.customer_id) + if customer_data + @membership_id = customer_data.membership_id + if !@membership_id.nil? + membership_setting = MembershipSetting.find_by_membership_type("paypar_url") + if membership_setting.gateway_url + member_actions =MembershipAction.find_by_membership_type("get_account_balance") + if member_actions.gateway_url + @campaign_type_id = member_actions.additional_parameter["campaign_type_id"] + url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s + 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,@membership_id + end + else + @out =false,0 + end + else + @out = false,0 + end + + + else + @out = false, 0 + end + else + @out = false, 0 + end + else + @out = false, 0 + end + else + @out = false, 0 + end + @out = false, 0 + end +end diff --git a/app/controllers/settings/membership_actions_controller.rb b/app/controllers/settings/membership_actions_controller.rb index 6db1a45b..ad7311f2 100644 --- a/app/controllers/settings/membership_actions_controller.rb +++ b/app/controllers/settings/membership_actions_controller.rb @@ -4,44 +4,7 @@ class Settings::MembershipActionsController < ApplicationController # 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 - + @settings_membership_actions = MembershipAction.all end # GET /settings/membership_actions/1 @@ -51,7 +14,7 @@ class Settings::MembershipActionsController < ApplicationController # GET /settings/membership_actions/new def new - @settings_membership_action = Settings::MembershipAction.new + @settings_membership_action = MembershipAction.new end # GET /settings/membership_actions/1/edit @@ -61,11 +24,11 @@ class Settings::MembershipActionsController < ApplicationController # POST /settings/membership_actions # POST /settings/membership_actions.json def create - @settings_membership_action = Settings::MembershipAction.new(settings_membership_action_params) + @settings_membership_action = 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.html { redirect_to settings_membership_actions_path, notice: 'Membership action was successfully created.' } format.json { render :show, status: :created, location: @settings_membership_action } else format.html { render :new } @@ -79,7 +42,7 @@ class Settings::MembershipActionsController < ApplicationController 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.html { redirect_to settings_membership_action_path, notice: 'Membership action was successfully updated.' } format.json { render :show, status: :ok, location: @settings_membership_action } else format.html { render :edit } @@ -101,11 +64,11 @@ class Settings::MembershipActionsController < ApplicationController private # Use callbacks to share common setup or constraints between actions. def set_settings_membership_action - @settings_membership_action = Settings::MembershipAction.find(params[:id]) + @settings_membership_action = 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) + params.require(: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/helpers/origami/redeem_payments_helper.rb b/app/helpers/origami/redeem_payments_helper.rb new file mode 100644 index 00000000..7e9151cb --- /dev/null +++ b/app/helpers/origami/redeem_payments_helper.rb @@ -0,0 +1,2 @@ +module Origami::RedeemPaymentsHelper +end diff --git a/app/models/customer.rb b/app/models/customer.rb index 3286a319..4f013678 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -15,9 +15,10 @@ class Customer < ApplicationRecord def self.get_member_group membership = MembershipSetting.find_by_membership_type("paypar_url") + memberaction = MembershipAction.find_by_membership_type("get_all_member_group") app_token = membership.auth_token.to_s - url = membership.gateway_url.to_s + "/api/get_all_member_group".to_s + url = membership.gateway_url.to_s + memberaction.gateway_url.to_s response = HTTParty.get(url, :body => { app_token: app_token}.to_json, :headers => { diff --git a/app/models/membership_action.rb b/app/models/membership_action.rb new file mode 100644 index 00000000..93a4b3d8 --- /dev/null +++ b/app/models/membership_action.rb @@ -0,0 +1,2 @@ +class MembershipAction < ApplicationRecord +end diff --git a/app/models/sale.rb b/app/models/sale.rb index b0f07cb0..47d271f1 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -3,7 +3,6 @@ class Sale < ApplicationRecord #primary key - need to be unique generated for multiple shops before_create :generate_custom_id - #before_create :generate_receipt_no belongs_to :cashier, :optional => true belongs_to :customer, :optional => true @@ -17,7 +16,6 @@ class Sale < ApplicationRecord scope :open_invoices, -> { where("sale_status = 'new' and receipt_date BETWEEN '#{DateTime.now.utc.end_of_day}' AND '#{DateTime.now.utc.beginning_of_day}'") } def generate_invoice_from_booking(booking_id, requested_by) - puts "get invoice from booking" booking = Booking.find(booking_id) status = false Rails.logger.debug "Booking -> " + booking.id.to_s @@ -33,7 +31,6 @@ class Sale < ApplicationRecord booking.sale_id = sale_id end order = booking.booking_orders.take.order - puts "add sale order" link_order_sale(order.id) return status, sale_id end @@ -231,9 +228,10 @@ class Sale < ApplicationRecord def link_order_sale(order_id) #create if it doesn't exist saleOrder = SaleOrder.where("sale_id=? and order_id=?", self.id, order_id).take - + if saleOrder.nil? - SaleOrder.create(:sale_id => self.id, :order_id => order_id) + sale_order = SaleOrder.new + sale_order.create_sale_order(self.id, order_id) end # if (SaleOrder.where("sale_id = #{self.id} and order_id=#{order_id}").nil?) # SaleOrder.create(:sale_id => self.id, :order_id => order_id) @@ -261,6 +259,7 @@ class Sale < ApplicationRecord end private + def generate_custom_id self.sale_id = SeedGenerator.generate_id(self.class.name, "SAL") end diff --git a/app/models/sale_order.rb b/app/models/sale_order.rb index 15da1386..786054c9 100644 --- a/app/models/sale_order.rb +++ b/app/models/sale_order.rb @@ -2,13 +2,22 @@ class SaleOrder < ApplicationRecord self.primary_key = "sale_order_id" #primary key - need to be unique generated for multiple shops - before_create :generate_custom_id + before_create :generate_sale_order_id belongs_to :sale belongs_to :order + def create_sale_order(sale, order) + self.sale_id = sale + self.order_id = order + self.save + + end + private - def generate_custom_id - self.sale_order_id = SeedGenerator.generate_id(self.class.name, "SOI") + def generate_sale_order_id + self.class.name + saleOrderId = SeedGenerator.generate_id(self.class.name, "SOI") + self.sale_order_id = saleOrderId end end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 2545eae7..8dea66a3 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -78,11 +78,11 @@ class SalePayment < ApplicationRecord 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"); + def self.redeem(paypar_url,token,membership_id,received_amount,sale_id) + membership_actions_data = MembershipAction.find_by_membership_type("redeem"); if !membership_actions_data.nil? url = paypar_url.to_s + membership_actions_data.gateway_url.to_s - campaign_type_id = 1 + campaign_type_id = membership_actions_data.additional_parameter["campaign_type_id"] 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 => { @@ -93,7 +93,7 @@ class SalePayment < ApplicationRecord else response =false; end - + puts response.to_json return response; end @@ -106,7 +106,6 @@ class SalePayment < ApplicationRecord self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f self.payment_status = "paid" payment_method = self.save! - sale_update_payment_status(self.received_amount) return payment_status @@ -134,7 +133,7 @@ class SalePayment < ApplicationRecord self.payment_method = method self.payment_amount = self.received_amount self.payment_reference = self.card_payment_reference - 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! @@ -188,10 +187,9 @@ class SalePayment < ApplicationRecord 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) + membership_data = SalePayment.redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_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) @@ -207,15 +205,26 @@ class SalePayment < ApplicationRecord def sale_update_payment_status(paid_amount) #update amount_outstanding 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.amount_changed = paid_amount.to_f - self.sale.amount_received.to_f + all_received_amount = 0.0 + sObj = Sale.find(self.sale_id) + sObj.sale_payments.each do |spay| + all_received_amount += spay.payment_amount.to_f + end + + if (self.sale.grand_total <= all_received_amount) self.sale.payment_status = "paid" self.sale.sale_status = "completed" self.sale.save! + rebat() end end + def rebat + + end + private def generate_custom_id self.sale_payment_id = SeedGenerator.generate_id(self.class.name, "SPI") diff --git a/app/models/seed_generator.rb b/app/models/seed_generator.rb index 5e7864b6..fe896a4d 100644 --- a/app/models/seed_generator.rb +++ b/app/models/seed_generator.rb @@ -1,7 +1,9 @@ class SeedGenerator < ApplicationRecord + def self.generate_id(model, prefix) seed = SeedGenerator.find_by_model(model) new_receipt_no = 0 + if (seed.nil?) seed = SeedGenerator.new() seed.model = model @@ -16,8 +18,8 @@ class SeedGenerator < ApplicationRecord end padding_len = 15 - prefix.length - - return prefix +"-"+ seed.current.to_s.to_s.rjust((14-prefix.length)+1,'0') + saleOrderId = prefix +"-"+ seed.current.to_s.to_s.rjust((14-prefix.length)+1,'0') + return saleOrderId end diff --git a/app/models/settings/membership_action.rb b/app/models/settings/membership_action.rb deleted file mode 100644 index 814e4b97..00000000 --- a/app/models/settings/membership_action.rb +++ /dev/null @@ -1,2 +0,0 @@ -class Settings::MembershipAction < ApplicationRecord -end diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 2e8c47fb..6ec5c978 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -21,24 +21,25 @@
- <% - @booking_orders.each do |bko| + <% + @booking_orders.each do |bko| # Assigned Id for new Order? Sale? unique_id="" # For CSS- Class for Order? Sale? sale_status="" - if bko.order_status == 'new' + if bko.order_status == 'new' unique_id=bko.booking_id - else + else unique_id=bko.sale_id sale_status="sold" - end + end %>

<%= bko.table_name %>

+

Receipt No : @@ -49,12 +50,12 @@ Order Status : <%= bko.order_status %> - + -

-
-
- <% +

+
+
+ <% end %> @@ -63,18 +64,18 @@
- <% - @booking_rooms.each do |rmo| + <% + @booking_rooms.each do |rmo| # Assigned Id for new Order? Sale? unique_id="" # For CSS- Class for Order? Sale? sale_status="" - if rmo.order_status == 'new' - unique_id=rmo.booking_id - else + if rmo.order_status == 'new' + unique_id=rmo.booking_id + else unique_id=rmo.sale_id sale_status="sold" - end + end %>
@@ -91,12 +92,12 @@ Order Status : <%= rmo.order_status %> - + -

-
-
- <% +

+
+
+ <% end %> @@ -105,18 +106,18 @@
- <% - @orders.each do |odr| + <% + @orders.each do |odr| # Assigned Id for new Order? Sale? unique_id="" # For CSS- Class for Order? Sale? sale_status="" - if odr.order_status == 'new' + if odr.order_status == 'new' unique_id=odr.booking_id - else + else unique_id=odr.sale_id sale_status="sold" - end + end %>
@@ -133,16 +134,16 @@ Order Status : <%= odr.order_status %> - + -

-
-
- <% +

+
+
+ <% end %> - + @@ -160,10 +161,10 @@

Receipt No:

Cashier:

-
+

Date:

-
+
@@ -217,7 +218,7 @@
- + @@ -227,13 +228,18 @@ +<<<<<<< HEAD +======= + + +>>>>>>> 6d4ef8e2adaa39c710a9b30dcb35737b6be2410e - + - + diff --git a/app/views/origami/mpu/create.json.jbuilder b/app/views/origami/mpu/create.json.jbuilder new file mode 100644 index 00000000..9767a7d8 --- /dev/null +++ b/app/views/origami/mpu/create.json.jbuilder @@ -0,0 +1,5 @@ +if(@status) + json.status @status +else + json.status false +end diff --git a/app/views/origami/mpu/index.html.erb b/app/views/origami/mpu/index.html.erb new file mode 100644 index 00000000..f082dc1a --- /dev/null +++ b/app/views/origami/mpu/index.html.erb @@ -0,0 +1,26 @@ +

MPU

+ + +Amount : + + + + + + diff --git a/app/views/origami/others_payments/index.html.erb b/app/views/origami/others_payments/index.html.erb index 77c06904..4b2397a2 100644 --- a/app/views/origami/others_payments/index.html.erb +++ b/app/views/origami/others_payments/index.html.erb @@ -1,177 +1,19 @@
- -
-
+ +
+
<% @payment_method_setting.each do |payment_method|%> -
-
<%= payment_method.payment_method %>
-
- <% end %> +
<%= 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 +$('.others-payment').on('click',function(){ + var input_type = $(this).attr("data-type"); + var sale_id = $(this).attr("data-sale-id"); + window.location.href = '/origami/sale/'+ sale_id + "/payment/others_payment/" + input_type; +}) + diff --git a/app/views/origami/payments/create.json.jbuilder b/app/views/origami/payments/create.json.jbuilder new file mode 100644 index 00000000..08bf292c --- /dev/null +++ b/app/views/origami/payments/create.json.jbuilder @@ -0,0 +1 @@ +json.status true diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index 85505ef5..198b9518 100644 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -1,25 +1,35 @@
-
+
- Receipt No : <%=@sale_data.receipt_no rescue ' '%> - Receipt Date : <%=@sale_data.receipt_date.utc.getlocal.strftime("%d/%m/%Y - %I:%M %p") rescue '-'%> - Table No <% if @sale_data%>- <%=@sale_data.receipt_no%><% end %> - Sale Id <% if @sale_data %><%=@sale_data.sale_id %><% end %> + + + + + + + + + + + + + +
Receipt No : <%=@sale_data.receipt_no rescue ' '%>Receipt Date : <%=@sale_data.receipt_date.utc.getlocal.strftime("%d/%m/%Y - %I:%M %p") rescue '-'%>
Table No <% if @sale_data%>- <%=@sale_data.receipt_no%><% end %>Sale Id <% if @sale_data %><%=@sale_data.sale_id %><% end %>
Customer : Default CustomerPoints : 1234
- - +
+ - - + - +
ItemsQTY - Price + ItemsQTY + Price
@@ -71,99 +81,87 @@
-
-
AMOUNT DUE
-
<%= @sale_data.grand_total %>
+
+
Amount Due
+
<%= @sale_data.grand_total %>

-
CASH
-
0.0
+
Cash
+
<%= @cash %>

-
CREDIT
-
0.0
+
Credit
+
0.0

-
OTHERS PAYMENT
-
0.0
+
Others Payment
+
<%= @other %>

-
BALANCE
+
Balance
<%= @sale_data.grand_total %>

-
-
-
-
-
-
1
-
2
-
3
-
-
-
-
1000
+ +
+
+
+
1
+
2
+
3
+
+
+
4
+
5
+
6
+
+
+
7
+
8
+
9
+
+
+
0
+
.
+
00
+
+
+
+
Del
+
Clr
-
-
-
-
4
-
5
-
6
-
+
+
+
1000
+
3000
-
-
5000
+
+
5000
+
10000
+
+
+
Pay
-
-
-
-
7
-
8
-
9
-
-
-
-
10000
-
-
-
-
-
-
0
-
.
-
00
-
-
-
-
50000
-
-
-
-
-
-
-
DEL
-
CLR
-
-
-
-
PAY
-
-
-
+ +
+
+ + +
diff --git a/app/views/settings/membership_actions/_form.html.erb b/app/views/settings/membership_actions/_form.html.erb index 9f4a2cd5..3084d4ac 100644 --- a/app/views/settings/membership_actions/_form.html.erb +++ b/app/views/settings/membership_actions/_form.html.erb @@ -1,4 +1,4 @@ -<%= simple_form_for(@settings_membership_action) do |f| %> +<%= simple_form_for([:settings,@settings_membership_action]) do |f| %> <%= f.error_notification %>
diff --git a/app/views/settings/membership_actions/edit.html.erb b/app/views/settings/membership_actions/edit.html.erb index 3373d008..cd5cb98a 100644 --- a/app/views/settings/membership_actions/edit.html.erb +++ b/app/views/settings/membership_actions/edit.html.erb @@ -2,5 +2,5 @@ <%= render 'form', settings_membership_action: @settings_membership_action %> -<%= link_to 'Show', @settings_membership_action %> | +<%= link_to 'Show', settings_membership_action_path(@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 index 80b4420e..635fd34c 100644 --- a/app/views/settings/membership_actions/index.html.erb +++ b/app/views/settings/membership_actions/index.html.erb @@ -28,9 +28,9 @@ <%= settings_membership_action.merchant_account_id %> <%= settings_membership_action.created_by %> <%= settings_membership_action.additional_parameter %> - <%= link_to 'Show', settings_membership_action %> + <%= link_to 'Show', settings_membership_action_path(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 'Destroy', settings_membership_action_path(settings_membership_action), method: :delete, data: { confirm: 'Are you sure?' } %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index 6fc2cf92..2c9be9e0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,7 @@ require 'sidekiq/web' Rails.application.routes.draw do - + namespace :settings do resources :membership_actions end @@ -94,6 +94,10 @@ Rails.application.routes.draw do get '/:customer_id/get_customer' => 'home#get_customer' post '/:sale_id/update_sale' , to: "home#update_sale_by_customer"#update customer id in sale table + # get 'sale/:sale_id/payment/others_payment/:payment_method' => "redeem_payments#index" + get 'sale/:sale_id/payment/others_payment/MPU' => "mpu#index" + post 'create_mpu_payment' => "mpu#create" + get 'sale/:sale_id/payment/others_payment/REDEEMREBATE' => "redeem_payments#index" end #--------- Waiter/Ordering Station ------------# diff --git a/db/migrate/20170403140820_create_order_items.rb b/db/migrate/20170403140820_create_order_items.rb index b0f43c32..c5382030 100644 --- a/db/migrate/20170403140820_create_order_items.rb +++ b/db/migrate/20170403140820_create_order_items.rb @@ -13,6 +13,7 @@ class CreateOrderItems < ActiveRecord::Migration[5.1] t.string :options t.json :set_menu_items #this parameter is require to route the items correctly t.boolean :taxable, :null => false, :default => true + t.string :completed_by t.timestamps end end diff --git a/db/migrate/20170403153001_create_payment_method_settings.rb b/db/migrate/20170403153001_create_payment_method_settings.rb index 981d42d3..339a3187 100644 --- a/db/migrate/20170403153001_create_payment_method_settings.rb +++ b/db/migrate/20170403153001_create_payment_method_settings.rb @@ -7,7 +7,7 @@ class CreatePaymentMethodSettings < ActiveRecord::Migration[5.1] t.string :gateway_url t.string :auth_token t.string :merchant_account_id - + t.string :additional_parameters t.timestamps end end diff --git a/db/migrate/20170403174029_create_sale_orders.rb b/db/migrate/20170403174029_create_sale_orders.rb index e2b3fe40..a786163b 100644 --- a/db/migrate/20170403174029_create_sale_orders.rb +++ b/db/migrate/20170403174029_create_sale_orders.rb @@ -1,8 +1,8 @@ class CreateSaleOrders < ActiveRecord::Migration[5.1] def change create_table :sale_orders, :id => false do |t| - t.primary_key :sale_order_id #custom primary key - to ensure consistence for cloud syncing - + + t.string :sale_order_id, :limit => 16, :primary_key => true t.string :sale_id, foreign_key: true,:limit => 16 t.string :order_id, foreign_key: true, :limit => 16 diff --git a/db/migrate/20170421171849_add_company_address_email.rb b/db/migrate/20170421171849_add_company_address_email.rb deleted file mode 100644 index 3bf6602e..00000000 --- a/db/migrate/20170421171849_add_company_address_email.rb +++ /dev/null @@ -1,5 +0,0 @@ -class AddCompanyAddressEmail < ActiveRecord::Migration[5.1] - def change - add_column :order_items, :completed_by, :string - end -end diff --git a/db/migrate/20170608111602_additionparametertopaymentsettings.rb b/db/migrate/20170608111602_additionparametertopaymentsettings.rb deleted file mode 100644 index ec85c209..00000000 --- a/db/migrate/20170608111602_additionparametertopaymentsettings.rb +++ /dev/null @@ -1,5 +0,0 @@ -class Additionparametertopaymentsettings < ActiveRecord::Migration[5.1] - def change - add_column :payment_method_settings, :additional_parameters, :string - end -end diff --git a/db/migrate/20170608104900_create_settings_membership_actions.rb b/db/migrate/20170611084537_create_membership_actions.rb similarity index 55% rename from db/migrate/20170608104900_create_settings_membership_actions.rb rename to db/migrate/20170611084537_create_membership_actions.rb index 2b9dd85d..74695871 100644 --- a/db/migrate/20170608104900_create_settings_membership_actions.rb +++ b/db/migrate/20170611084537_create_membership_actions.rb @@ -1,14 +1,14 @@ -class CreateSettingsMembershipActions < ActiveRecord::Migration[5.1] +class CreateMembershipActions < ActiveRecord::Migration[5.1] def change - create_table :settings_membership_actions do |t| - t.string :membership_type + create_table :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.jsonb :additional_parameter t.timestamps end diff --git a/db/seeds.rb b/db/seeds.rb index fc19164d..1dfd1b87 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -144,6 +144,17 @@ order_station1=PrintSetting.create({name: "OrderItemPdf", unique_code: "OrderIte 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"}) +member_setting = MembershipSetting.create({membership_type:"paypar_url",gateway_url: "192.168.1."}) + +member_actions= MembershipAction.create([{membership_type:"get_account_balance",gateway_url:"/api/membership_campaigns/get_correspond_account_data",additional_parameter:{campaign_type_id:1}}, + {membership_type:"redeem",gateway_url:"/api/membership_campaigns/redeem",additional_parameter:{campaign_type_id:1}}, + {membership_type:"create_membership_customer",gateway_url:"/api/generic_customer/create_membership_customer"}, + {membership_type:"update_membership_customer",gateway_url:"/api/generic_customer/update_membership_customer"}, + {membership_type:"get_all_member_group",gateway_url:"/api/member_group/get_all_member_group"}, + {membership_type:"rebate",gateway_url:"/api/membership_campaigns/rebate",additional_parameter:{campaign_type_id:1}}, + {membership_type:"get_all_member_account",gateway_url:"/api/generic_customer/get_membership_data"} + ]) + # 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", diff --git a/dump.rdb b/dump.rdb index 35382006..ebdb6db6 100644 Binary files a/dump.rdb and b/dump.rdb differ diff --git a/lib/tasks/clear_data.rake b/lib/tasks/clear_data.rake new file mode 100644 index 00000000..c9e0fe22 --- /dev/null +++ b/lib/tasks/clear_data.rake @@ -0,0 +1,16 @@ +namespace :clear do + desc "Clear Data" + task :data => :environment do + BookingOrder.delete_all + Booking.delete_all + OrderItem.delete_all + AssignedOrderItem.delete_all + Order.delete_all + SaleOrder.delete_all + SaleItem.delete_all + Sale.delete_all + SaleAudit.delete_all + SalePayment.delete_all + puts "Clear Data Done." + end +end diff --git a/spec/controllers/origami/redeem_payments_controller_spec.rb b/spec/controllers/origami/redeem_payments_controller_spec.rb new file mode 100644 index 00000000..22e705d7 --- /dev/null +++ b/spec/controllers/origami/redeem_payments_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Origami::RedeemPaymentsController, type: :controller do + +end diff --git a/spec/helpers/origami/redeem_payments_helper_spec.rb b/spec/helpers/origami/redeem_payments_helper_spec.rb new file mode 100644 index 00000000..580d73ff --- /dev/null +++ b/spec/helpers/origami/redeem_payments_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the Origami::RedeemPaymentsHelper. For example: +# +# describe Origami::RedeemPaymentsHelper 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::RedeemPaymentsHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end