Merge branch 'master' of github.com:domify/registry

This commit is contained in:
Priit Tark 2015-07-14 17:33:23 +03:00
commit 9f2d87606d
8 changed files with 138 additions and 17 deletions

View file

@ -1,6 +1,8 @@
class Admin::InvoicesController < AdminController
load_and_authorize_resource
before_action :set_invoice, only: [:forward, :download_pdf]
def new
@deposit = Deposit.new
end
@ -39,9 +41,33 @@ class Admin::InvoicesController < AdminController
end
end
def forward
@invoice.billing_email = @invoice.buyer.billing_email
return unless request.post?
@invoice.billing_email = params[:invoice][:billing_email]
if @invoice.forward(render_to_string('registrar/invoices/pdf', layout: false))
flash[:notice] = t(:invoice_forwared)
redirect_to([:admin, @invoice])
else
flash.now[:alert] = t(:failed_to_forward_invoice)
end
end
def download_pdf
pdf = @invoice.pdf(render_to_string('registrar/invoices/pdf', layout: false))
send_data pdf, filename: @invoice.pdf_name
end
private
def deposit_params
params.require(:deposit).permit(:amount, :description, :registrar_id)
end
def set_invoice
@invoice = Invoice.find(params[:invoice_id])
end
end

View file

@ -7,7 +7,9 @@ class Invoice < ActiveRecord::Base
accepts_nested_attributes_for :invoice_items
scope :unbinded, -> { where('id NOT IN (SELECT invoice_id FROM account_activities)') }
scope :unbinded, lambda {
where('id NOT IN (SELECT invoice_id FROM account_activities where invoice_id IS NOT NULL)')
}
attr_accessor :billing_email
validates :billing_email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i }, allow_blank: true
@ -36,7 +38,7 @@ class Invoice < ActiveRecord::Base
class << self
def cancel_overdue_invoices
logger.info "#{Time.zone.now.utc} - Cancelling overdue invoices\n"
STDOUT << "#{Time.zone.now.utc} - Cancelling overdue invoices\n" unless Rails.env.test?
cr_at = Time.zone.now - Setting.days_to_keep_overdue_invoices_active.days
invoices = Invoice.unbinded.where(
@ -45,7 +47,7 @@ class Invoice < ActiveRecord::Base
count = invoices.update_all(cancelled_at: Time.zone.now)
logger.info "#{Time.zone.now.utc} - Successfully cancelled #{count} overdue invoices\n"
STDOUT << "#{Time.zone.now.utc} - Successfully cancelled #{count} overdue invoices\n" unless Rails.env.test?
end
end

View file

@ -0,0 +1,15 @@
- content_for :actions do
= link_to(t(:back_to_invoice), admin_invoice_path(@invoice), class: 'btn btn-default')
= render 'shared/title', name: t(:forward_invoice)
= form_for([:admin, @invoice], url: { action: :forward }, method: :post) do |f|
.row
.col-md-4.col-md-offset-4
= render 'shared/full_errors', object: @invoice
.form-group
= f.label :billing_email
= f.text_field :billing_email, class: 'form-control', autocomplete: 'off'
.row
.col-md-12.text-right
= button_tag(t(:forward), class: 'btn btn-warning')

View file

@ -4,6 +4,8 @@
= @invoice
.col-sm-6
%h1.text-right.text-center-xs
= link_to(t(:download), admin_invoice_download_pdf_path(@invoice), class: 'btn btn-default')
= link_to(t(:forward), admin_invoice_forward_path(@invoice), class: 'btn btn-default')
- if !@invoice.cancelled? && !@invoice.binded?
= link_to(t(:cancel), cancel_admin_invoice_path(@invoice), method: :patch, class: 'btn btn-warning')
= link_to(t(:back), admin_invoices_path, class: 'btn btn-default')

View file

@ -176,7 +176,9 @@ Rails.application.routes.draw do
end
resources :invoices do
get 'download_pdf'
patch 'cancel', on: :member
match 'forward', via: [:post, :get]
end
resources :domains do

View file

@ -936,14 +936,14 @@ ActiveRecord::Schema.define(version: 20150713113436) do
end
create_table "que_jobs", id: false, force: :cascade do |t|
t.integer "priority", limit: 2, default: 100, null: false
t.datetime "run_at", default: '2015-06-30 14:16:50', null: false
t.integer "job_id", limit: 8, default: 0, null: false
t.text "job_class", null: false
t.json "args", default: [], null: false
t.integer "error_count", default: 0, null: false
t.integer "priority", limit: 2, default: 100, null: false
t.datetime "run_at", default: "now()", null: false
t.integer "job_id", limit: 8, default: "nextval('que_jobs_job_id_seq'::regclass)", null: false
t.text "job_class", null: false
t.json "args", default: [], null: false
t.integer "error_count", default: 0, null: false
t.text "last_error"
t.text "queue", default: "", null: false
t.text "queue", default: "", null: false
end
create_table "registrant_verifications", force: :cascade do |t|

View file

@ -2421,8 +2421,8 @@ ALTER SEQUENCE pricelists_id_seq OWNED BY pricelists.id;
CREATE TABLE que_jobs (
priority smallint DEFAULT 100 NOT NULL,
run_at timestamp without time zone DEFAULT '2015-06-30 14:16:50.905537'::timestamp without time zone NOT NULL,
job_id bigint DEFAULT 0 NOT NULL,
run_at timestamp with time zone DEFAULT now() NOT NULL,
job_id bigint NOT NULL,
job_class text NOT NULL,
args json DEFAULT '[]'::json NOT NULL,
error_count integer DEFAULT 0 NOT NULL,
@ -2431,6 +2431,32 @@ CREATE TABLE que_jobs (
);
--
-- Name: TABLE que_jobs; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE que_jobs IS '3';
--
-- Name: que_jobs_job_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE que_jobs_job_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: que_jobs_job_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE que_jobs_job_id_seq OWNED BY que_jobs.job_id;
--
-- Name: registrant_verifications; Type: TABLE; Schema: public; Owner: -; Tablespace:
--
@ -3186,6 +3212,13 @@ ALTER TABLE ONLY people ALTER COLUMN id SET DEFAULT nextval('people_id_seq'::reg
ALTER TABLE ONLY pricelists ALTER COLUMN id SET DEFAULT nextval('pricelists_id_seq'::regclass);
--
-- Name: job_id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY que_jobs ALTER COLUMN job_id SET DEFAULT nextval('que_jobs_job_id_seq'::regclass);
--
-- Name: id; Type: DEFAULT; Schema: public; Owner: -
--
@ -3705,6 +3738,14 @@ ALTER TABLE ONLY pricelists
ADD CONSTRAINT pricelists_pkey PRIMARY KEY (id);
--
-- Name: que_jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
--
ALTER TABLE ONLY que_jobs
ADD CONSTRAINT que_jobs_pkey PRIMARY KEY (queue, priority, run_at, job_id);
--
-- Name: registrant_verifications_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
--
@ -4809,14 +4850,26 @@ INSERT INTO schema_migrations (version) VALUES ('20150520164507');
INSERT INTO schema_migrations (version) VALUES ('20150521120145');
INSERT INTO schema_migrations (version) VALUES ('20150522164020');
INSERT INTO schema_migrations (version) VALUES ('20150525075550');
INSERT INTO schema_migrations (version) VALUES ('20150601083516');
INSERT INTO schema_migrations (version) VALUES ('20150601083800');
INSERT INTO schema_migrations (version) VALUES ('20150603141549');
INSERT INTO schema_migrations (version) VALUES ('20150603211318');
INSERT INTO schema_migrations (version) VALUES ('20150603212659');
INSERT INTO schema_migrations (version) VALUES ('20150609093515');
INSERT INTO schema_migrations (version) VALUES ('20150609103333');
INSERT INTO schema_migrations (version) VALUES ('20150610111019');
INSERT INTO schema_migrations (version) VALUES ('20150610112238');
INSERT INTO schema_migrations (version) VALUES ('20150610144547');
@ -4825,8 +4878,12 @@ INSERT INTO schema_migrations (version) VALUES ('20150611124920');
INSERT INTO schema_migrations (version) VALUES ('20150612123111');
INSERT INTO schema_migrations (version) VALUES ('20150612125720');
INSERT INTO schema_migrations (version) VALUES ('20150701074344');
INSERT INTO schema_migrations (version) VALUES ('20150703084206');
INSERT INTO schema_migrations (version) VALUES ('20150703084632');
INSERT INTO schema_migrations (version) VALUES ('20150706091724');

View file

@ -3,7 +3,7 @@ require 'rails_helper'
feature 'Invoice', type: :feature do
before :all do
@user = Fabricate(:admin_user)
Fabricate(:invoice)
@invoice = Fabricate(:invoice)
end
before do
@ -12,15 +12,13 @@ feature 'Invoice', type: :feature do
it 'should show index of invoices' do
visit admin_invoices_url
i = Invoice.first
page.should have_link("Invoice no. #{i.id}")
page.should have_link("Invoice no. #{@invoice.id}")
end
it 'should show invoice' do
visit admin_invoices_url
i = Invoice.first
click_link("Invoice no. #{i.id}")
click_link("Invoice no. #{@invoice.id}")
page.should have_content("Seller")
page.should have_content("Details")
page.should have_content("Paldiski mnt. 123")
@ -42,4 +40,23 @@ feature 'Invoice', type: :feature do
page.should have_content('120.0')
page.should have_content(r.name)
end
it 'should forward invoice' do
visit '/admin/invoices'
click_link @invoice.to_s
click_link 'Forward'
click_button 'Forward'
page.should have_text('Failed to forward invoice')
fill_in 'Billing email', with: 'test@test.ee'
click_button 'Forward'
page.should have_text('Invoice forwarded')
end
it 'should download invoice' do
visit '/admin/invoices'
click_link @invoice.to_s
click_link 'Download'
response_headers['Content-Type'].should == 'application/pdf'
response_headers['Content-Disposition'].should == "attachment; filename=\"#{@invoice.pdf_name}\""
end
end