mirror of
https://github.com/internetee/registry.git
synced 2025-06-06 20:55:44 +02:00
Merge pull request #2011 from internetee/2009-mark-internal-invoice-as-paid
Mark internal invoices as paid prior to sending
This commit is contained in:
commit
e8c19d16e8
9 changed files with 60 additions and 16 deletions
|
@ -21,7 +21,7 @@ class SendEInvoiceJob < ApplicationJob
|
||||||
end
|
end
|
||||||
|
|
||||||
def process(invoice:, payable:)
|
def process(invoice:, payable:)
|
||||||
invoice.to_e_invoice(payable: payable).deliver
|
invoice.to_e_invoice(payable: payable).deliver unless Rails.env.development?
|
||||||
invoice.update(e_invoice_sent_at: Time.zone.now)
|
invoice.update(e_invoice_sent_at: Time.zone.now)
|
||||||
log_success(invoice)
|
log_success(invoice)
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
class InvoiceMailer < ApplicationMailer
|
class InvoiceMailer < ApplicationMailer
|
||||||
def invoice_email(invoice:, recipient:)
|
def invoice_email(invoice:, recipient:, paid: false)
|
||||||
@invoice = invoice
|
@invoice = invoice
|
||||||
|
|
||||||
subject = default_i18n_subject(invoice_number: invoice.number)
|
subject = default_i18n_subject(invoice_number: invoice.number)
|
||||||
|
subject << I18n.t('invoice.already_paid') if paid
|
||||||
attachments["invoice-#{invoice.number}.pdf"] = invoice.as_pdf
|
attachments["invoice-#{invoice.number}.pdf"] = invoice.as_pdf
|
||||||
mail(to: recipient, subject: subject)
|
mail(to: recipient, subject: subject)
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,7 +15,7 @@ module Invoice::Cancellable
|
||||||
end
|
end
|
||||||
|
|
||||||
def cancelled?
|
def cancelled?
|
||||||
cancelled_at
|
cancelled_at.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def not_cancelled?
|
def not_cancelled?
|
||||||
|
|
|
@ -105,7 +105,7 @@ class Invoice < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def do_not_send_e_invoice?
|
def do_not_send_e_invoice?
|
||||||
e_invoice_sent? || cancelled? || paid?
|
e_invoice_sent? || cancelled?
|
||||||
end
|
end
|
||||||
|
|
||||||
def e_invoice_sent?
|
def e_invoice_sent?
|
||||||
|
|
|
@ -101,10 +101,11 @@ class Registrar < ApplicationRecord
|
||||||
)
|
)
|
||||||
|
|
||||||
unless payable
|
unless payable
|
||||||
InvoiceMailer.invoice_email(invoice: invoice, recipient: billing_email).deliver_now
|
InvoiceMailer.invoice_email(invoice: invoice, recipient: billing_email, paid: !payable)
|
||||||
|
.deliver_later(wait: 1.minute)
|
||||||
end
|
end
|
||||||
|
|
||||||
SendEInvoiceJob.perform_later(invoice.id, payable)
|
SendEInvoiceJob.perform_now(invoice.id, payable)
|
||||||
|
|
||||||
invoice
|
invoice
|
||||||
end
|
end
|
||||||
|
|
|
@ -470,7 +470,8 @@ en:
|
||||||
price: 'Price'
|
price: 'Price'
|
||||||
total: 'Total'
|
total: 'Total'
|
||||||
paid_at: 'Paid at'
|
paid_at: 'Paid at'
|
||||||
invoice: 'Invoice'
|
invoice:
|
||||||
|
already_paid: " (already paid)"
|
||||||
bank_statements: 'Bank statements'
|
bank_statements: 'Bank statements'
|
||||||
back_to_bank_statements: 'Back to bank statements'
|
back_to_bank_statements: 'Back to bank statements'
|
||||||
back_to_bank_statement: 'Back to bank statement'
|
back_to_bank_statement: 'Back to bank statement'
|
||||||
|
|
|
@ -6,3 +6,5 @@ et:
|
||||||
# Don't forget the nil at the beginning; there's no such thing as a 0th month
|
# Don't forget the nil at the beginning; there's no such thing as a 0th month
|
||||||
month_names: [~, Jaanuar, Veebruar, Märts, Aprill, Mai, Juuni, Juuli, August, September, Oktoober, November, Detsember]
|
month_names: [~, Jaanuar, Veebruar, Märts, Aprill, Mai, Juuni, Juuli, August, September, Oktoober, November, Detsember]
|
||||||
emails: "Meillaadressid"
|
emails: "Meillaadressid"
|
||||||
|
invoice:
|
||||||
|
already_paid: " (juba makstud)"
|
||||||
|
|
|
@ -22,6 +22,30 @@ namespace :invoices do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
process_transactions(incoming_transactions)
|
||||||
|
|
||||||
|
puts "Transactions processed: #{incoming_transactions.size}"
|
||||||
|
end
|
||||||
|
|
||||||
|
task test_payments: :environment do
|
||||||
|
registrar = Invoice.last.buyer
|
||||||
|
transactions = [OpenStruct.new(amount: 0.1,
|
||||||
|
currency: 'EUR',
|
||||||
|
date: Time.zone.today,
|
||||||
|
payment_reference_number: registrar.reference_no,
|
||||||
|
payment_description: "description #{registrar.reference_no}")]
|
||||||
|
process_transactions(transactions)
|
||||||
|
puts 'Last registrar invoice is'
|
||||||
|
pp registrar.invoices.last
|
||||||
|
puts "Last invoice paid at #{registrar.invoices.last.receipt_date}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def log(msg)
|
||||||
|
@log ||= Logger.new(STDOUT)
|
||||||
|
@log.info(msg)
|
||||||
|
end
|
||||||
|
|
||||||
|
def process_transactions(incoming_transactions)
|
||||||
if incoming_transactions.any?
|
if incoming_transactions.any?
|
||||||
log 'Got incoming transactions'
|
log 'Got incoming transactions'
|
||||||
log incoming_transactions
|
log incoming_transactions
|
||||||
|
@ -51,12 +75,5 @@ namespace :invoices do
|
||||||
else
|
else
|
||||||
log 'Got no incoming transactions parsed, aborting'
|
log 'Got no incoming transactions parsed, aborting'
|
||||||
end
|
end
|
||||||
|
|
||||||
puts "Transactions processed: #{incoming_transactions.size}"
|
|
||||||
end
|
|
||||||
|
|
||||||
def log(msg)
|
|
||||||
@log ||= Logger.new(STDOUT)
|
|
||||||
@log.info(msg)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class ProcessPaymentsTaskTest < ActiveSupport::TestCase
|
class ProcessPaymentsTaskTest < ActiveJob::TestCase
|
||||||
setup do
|
setup do
|
||||||
@payment_amount = payment_amount = 0.1
|
@payment_amount = payment_amount = 0.1
|
||||||
@payment_currency = payment_currency = 'EUR'
|
@payment_currency = payment_currency = 'EUR'
|
||||||
|
@ -162,6 +162,28 @@ class ProcessPaymentsTaskTest < ActiveSupport::TestCase
|
||||||
assert_equal 0.1, registrar.invoices.last.total
|
assert_equal 0.1, registrar.invoices.last.total
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_topup_creates_invoice_and_send_it_as_paid
|
||||||
|
registrar = registrars(:bestnames)
|
||||||
|
@invoice.payment_orders.destroy_all
|
||||||
|
@invoice.destroy
|
||||||
|
|
||||||
|
perform_enqueued_jobs do
|
||||||
|
run_task
|
||||||
|
end
|
||||||
|
|
||||||
|
invoice = Invoice.last
|
||||||
|
assert invoice.paid?
|
||||||
|
assert_not invoice.e_invoice_sent_at.blank?
|
||||||
|
|
||||||
|
pdf_source = Invoice::PdfGenerator.new(invoice)
|
||||||
|
pdf_source.send(:invoice_html).include?('Receipt date')
|
||||||
|
|
||||||
|
email= ActionMailer::Base.deliveries.last
|
||||||
|
assert email.subject.include?('already paid')
|
||||||
|
|
||||||
|
assert_equal 0.1, registrar.invoices.last.total
|
||||||
|
end
|
||||||
|
|
||||||
def test_output
|
def test_output
|
||||||
assert_output "Transactions processed: 1\n" do
|
assert_output "Transactions processed: 1\n" do
|
||||||
run_task
|
run_task
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue