GithubHelp home page GithubHelp logo

spree-contrib / spree_store_credit_payment_method Goto Github PK

View Code? Open in Web Editor NEW
18.0 12.0 55.0 617 KB

Adds store credit functionality as a payment method.

License: BSD 3-Clause "New" or "Revised" License

Ruby 99.17% JavaScript 0.25% CSS 0.34% CoffeeScript 0.23%

spree_store_credit_payment_method's Introduction

SpreeStoreCredits

A Spree store credit implementation that applies store credit as a payment method.

Takes into account purchasing through the API, with the default to use all available store credit.

Store credit can be granted in admin, and is frozen after first usage. Store credit behaves like a credit card in that once an amount is authorized, it cannot be used elsewhere.

Store credit can be stored in multiple buckets (e.g. expiring and non-expiring) because those are taxed differently and implementors might want to prioritize use / refund different types.

Credit Types

Out of the box, there are Expiring and Non-expiring store credits, with the Expiring type having top priority of being used in a purchase.

To add new ones, add a migration with a priority value set, and on purchase it will take the credits from lowest numerical priority to highest. You will also need to overwrite Spree::StoreCredit#associate_credit_type

Configure the gem with non-expiring categorizations in an initializer:

Spree::StoreCredits::Configuration.set_configs(non_expiring_credit_types: ['Example'])

Installation

Add spree_store_credits to your Gemfile:

gem 'spree_store_credits', github: 'spree-contrib/spree_store_credit_payment_method'

Bundle your dependencies and run the installation generator:

bundle
bundle exec rails g spree_store_credits:install

Testing

First bundle your dependencies, then run rake. rake will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using rake test_app.

bundle
bundle exec rake

When testing your applications integration with this extension you may use it's factories. Simply add this require statement to your spec_helper:

require 'spree_store_credits/factories'

TODO

  • Integrate the frontend, this was implemented with just admin and api

Copyright (c) 2014 [Bonobos], released under the New BSD License

spree_store_credit_payment_method's People

Contributors

athal7 avatar gmacdougall avatar jdutil avatar jordan-brough avatar magnusvk avatar plongyear avatar richardnuno avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spree_store_credit_payment_method's Issues

ActionView::Template::Error (Missing partial spree/checkout/payment/_storecredit with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee, :rabl], :versions=>[:v10, :v9, :v8, :v7, :v6, :v5, :v4, :v3, :v2, :v1]}

Does the README should be updated? I think it's missed one partial.
50: <% @order.available_payment_methods.each do |method| %>
51:


  • 52:
    53: <%= render :partial => "spree/checkout/payment/#{method.method_type}", :locals => { :payment_method => method } %>
    54:
    55:

  • 56: <% end %>

    Failing Spec on Invalid CC Payment

      1) Order #add_store_credit_payments there is enough store credit to pay for the entire order there is a credit card payment should invalidate the credit card payment
         Failure/Error: cc_payment.reload.should be_invalid
           expected `#<Spree::Payment id: 1, amount: #<BigDecimal:7fbdf337d468,'0.4575E2',18(36)>, order_id: 1, source_id: 1, source_type: "Spree::CreditCard", payment_method_id: 2, state: "invalid", response_code: "12345", avs_response: nil, created_at: "2014-08-11 23:59:04", updated_at: "2014-08-11 23:59:04", identifier: "3PNANGYC", cvv_response_code: nil, cvv_response_message: nil>.invalid?` to return true, got false
         # ./spec/models/spree/order_decorator_spec.rb:126:in `block (5 levels) in <top (required)>'
    

    How do you actually expire store credits?

    I noticed that the implementation has expiring and non-expiring store credits, (implemented via the spree_store_credit_types table), but how do you actually mark a store credit as expired?

    I was expecting to see an expires_at field on the store credits table but I see none. Am I missing something already implemented?

    in `require': cannot load such file -- spree_promo (LoadError)

    when executing the command "bundle exec rails g spree_store_credits:install" in the terminal, I got the following error
    ~/.rvm/gems/ruby-2.1.2@global/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require': cannot load such file -- spree_promo (LoadError)

    Any help?

    Add preference for whether store credit should be automatically applied

    My current project wants the customer to be able to choose whether or not to apply their store credit to a given order. I'll be setting this up for my own project, but would there be interest if I made it into a PR for this gem? Not sure how that would overlap with the effort to move some pieces into Spree::Core.

    spree::Admin::PaymentsController:Class (NoMethodError) on bundle exec install

    I'm getting this error when trying to install the 2-3-stable branch running bundle exec rails g spree_store_credits:install

    .rvm/gems/ruby-2.0.0-p247/bundler/gems/spree_store_credit_payment_method-aecee00bf815/app/controllers/spree/admin/payments_controller_decorator.rb:35:in `<top (required)>': private method `prepend' called for Spree::Admin::PaymentsController:Class (NoMethodError)
    

    I see where the error is generated. I just don't know why its getting it.

    Any help would be greatly appreciated.

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google โค๏ธ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.