mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
render date without time on invoices list
+ sort invoices in the reverse order of the creation time
This commit is contained in:
@@ -7,12 +7,12 @@
|
||||
%th= t(:status)
|
||||
%th= t(:invoice_file)
|
||||
%tbody
|
||||
- @order.invoices.each do |invoice|
|
||||
- @order.invoices.order('number desc').each do |invoice|
|
||||
- tr_class = cycle('odd', 'even')
|
||||
- tr_id = spree_dom_id(invoice)
|
||||
%tr{:class => tr_class, "data-hook" => "invoice_row", :id => tr_id}
|
||||
%td.align-center.created_at
|
||||
= pretty_time(invoice.date)
|
||||
= invoice.presenter.invoice_date
|
||||
%td.align-center.label
|
||||
= invoice.number
|
||||
%td.align-center.label
|
||||
|
||||
@@ -4,7 +4,7 @@ require 'system_helper'
|
||||
|
||||
describe '
|
||||
As an administrator
|
||||
I want to create an invoice for an order
|
||||
I want to list/create an invoice for an order
|
||||
' do
|
||||
include WebHelper
|
||||
include AuthenticationHelper
|
||||
@@ -31,74 +31,114 @@ describe '
|
||||
login_as_admin
|
||||
visit spree.edit_admin_order_path(order)
|
||||
end
|
||||
describe 'creating invoices' do
|
||||
context 'when the order has no invoices' do
|
||||
it 'creates an invoice for the order' do
|
||||
click_link 'Invoices'
|
||||
|
||||
context 'when the order has no invoices' do
|
||||
it 'creates an invoice for the order' do
|
||||
click_link 'Invoices'
|
||||
expect {
|
||||
click_link 'New Invoice'
|
||||
expect(page).to have_no_link "New Invoice"
|
||||
}.to change { order.invoices.count }.by(1)
|
||||
|
||||
expect {
|
||||
click_link 'New Invoice'
|
||||
expect(page).to have_no_link "New Invoice"
|
||||
}.to change { order.invoices.count }.by(1)
|
||||
invoice = order.invoices.first
|
||||
expect(invoice.cancelled).to eq false
|
||||
expect(invoice.number).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
invoice = order.invoices.first
|
||||
expect(invoice.cancelled).to eq false
|
||||
expect(invoice.number).to eq 1
|
||||
context 'when the order has an invoice' do
|
||||
let!(:latest_invoice){ create(:invoice, order:, number: 1, cancelled: false) }
|
||||
|
||||
context 'order not updated since latest invoice' do
|
||||
it 'should not render new invoice button' do
|
||||
click_link 'Invoices'
|
||||
expect(page).to_not have_link 'New Invoice'
|
||||
end
|
||||
end
|
||||
|
||||
# For reference check:
|
||||
# https://docs.google.com/spreadsheets/d/1hOM6UL4mWeRCFLcDQ3fTkbhbUQ2WvIUCCA1IerDBtUA/edit#gid=0
|
||||
context 'order updated since latest invoice' do
|
||||
context 'changes require regenerating' do
|
||||
let(:new_note){ 'new note' }
|
||||
before do
|
||||
order.update!(note: new_note)
|
||||
end
|
||||
|
||||
it 'updates the lastest invoice for the order' do
|
||||
click_link 'Invoices'
|
||||
expect {
|
||||
click_link 'New Invoice'
|
||||
expect(page).to have_no_link "New Invoice"
|
||||
}.to change { order.reload.invoices.count }.by(0)
|
||||
.and change { latest_invoice.reload.presenter.note }.from("").to(new_note)
|
||||
|
||||
expect(latest_invoice.reload.cancelled).to eq false
|
||||
end
|
||||
end
|
||||
|
||||
context 'changes require generating a new invoice' do
|
||||
before do
|
||||
order.line_items.first.update!(quantity: 2)
|
||||
end
|
||||
|
||||
it 'creates a new invoice for the order' do
|
||||
click_link 'Invoices'
|
||||
expect {
|
||||
click_link 'New Invoice'
|
||||
expect(page).to have_no_link "New Invoice"
|
||||
}.to change { order.reload.invoices.count }.by(1)
|
||||
|
||||
expect(latest_invoice.reload.cancelled).to eq true
|
||||
expect(latest_invoice.presenter.sorted_line_items.first.quantity).to eq 1
|
||||
|
||||
new_invoice = order.invoices.last
|
||||
expect(new_invoice.cancelled).to eq false
|
||||
expect(new_invoice.number).to eq 2
|
||||
expect(new_invoice.presenter.sorted_line_items.first.quantity).to eq 2
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the order has an invoice' do
|
||||
let!(:latest_invoice){ create(:invoice, order:, number: 1, cancelled: false) }
|
||||
|
||||
context 'order not updated since latest invoice' do
|
||||
it 'should not render new invoice button' do
|
||||
click_link 'Invoices'
|
||||
expect(page).to_not have_link 'New Invoice'
|
||||
end
|
||||
describe 'listing invoices' do
|
||||
before do
|
||||
create(:invoice, order:, number: 1, cancelled: true)
|
||||
create(:invoice, order:, number: 2, cancelled: false)
|
||||
end
|
||||
|
||||
# For reference check:
|
||||
# https://docs.google.com/spreadsheets/d/1hOM6UL4mWeRCFLcDQ3fTkbhbUQ2WvIUCCA1IerDBtUA/edit#gid=0
|
||||
context 'order updated since latest invoice' do
|
||||
context 'changes require regenerating' do
|
||||
let(:new_note){ 'new note' }
|
||||
before do
|
||||
order.update!(note: new_note)
|
||||
end
|
||||
let(:row1){
|
||||
[
|
||||
Time.current.to_date.to_s,
|
||||
"2",
|
||||
order.total,
|
||||
"Active",
|
||||
"Download"
|
||||
].join(" ")
|
||||
}
|
||||
|
||||
it 'updates the lastest invoice for the order' do
|
||||
click_link 'Invoices'
|
||||
expect {
|
||||
click_link 'New Invoice'
|
||||
expect(page).to have_no_link "New Invoice"
|
||||
}.to change { order.reload.invoices.count }.by(0)
|
||||
.and change { latest_invoice.reload.presenter.note }.from("").to(new_note)
|
||||
let(:row2){
|
||||
[
|
||||
Time.current.to_date.to_s,
|
||||
"1",
|
||||
order.total,
|
||||
"Cancelled",
|
||||
"Download"
|
||||
].join(" ")
|
||||
}
|
||||
|
||||
expect(latest_invoice.reload.cancelled).to eq false
|
||||
end
|
||||
end
|
||||
let(:table_content){
|
||||
[
|
||||
row1,
|
||||
row2
|
||||
].join(" ")
|
||||
}
|
||||
|
||||
context 'changes require generating a new invoice' do
|
||||
before do
|
||||
order.line_items.first.update!(quantity: 2)
|
||||
end
|
||||
|
||||
it 'creates a new invoice for the order' do
|
||||
click_link 'Invoices'
|
||||
expect {
|
||||
click_link 'New Invoice'
|
||||
expect(page).to have_no_link "New Invoice"
|
||||
}.to change { order.reload.invoices.count }.by(1)
|
||||
|
||||
expect(latest_invoice.reload.cancelled).to eq true
|
||||
expect(latest_invoice.presenter.sorted_line_items.first.quantity).to eq 1
|
||||
|
||||
new_invoice = order.invoices.last
|
||||
expect(new_invoice.cancelled).to eq false
|
||||
expect(new_invoice.number).to eq 2
|
||||
expect(new_invoice.presenter.sorted_line_items.first.quantity).to eq 2
|
||||
end
|
||||
end
|
||||
it 'should list the invoices on the reverse order of creation' do
|
||||
click_link 'Invoices'
|
||||
expect(page).to have_content table_content
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user