mirror of
https://github.com/internetee/registry.git
synced 2025-06-12 07:34:45 +02:00
Merge pull request #1520 from internetee/344-store-request-for-directo-credit-invoices
Save request data to the directo object
This commit is contained in:
commit
fdd427a467
2 changed files with 15 additions and 4 deletions
|
@ -48,16 +48,18 @@ class Directo < ApplicationRecord
|
||||||
Rails.logger.info("[Directo] XML request: #{data}")
|
Rails.logger.info("[Directo] XML request: #{data}")
|
||||||
response = RestClient::Request.execute(url: ENV['directo_invoice_url'], method: :post, payload: {put: "1", what: "invoice", xmldata: data}, verify_ssl: false)
|
response = RestClient::Request.execute(url: ENV['directo_invoice_url'], method: :post, payload: {put: "1", what: "invoice", xmldata: data}, verify_ssl: false)
|
||||||
Rails.logger.info("[Directo] Directo responded with code: #{response.code}, body: #{response.body}")
|
Rails.logger.info("[Directo] Directo responded with code: #{response.code}, body: #{response.body}")
|
||||||
dump_result_to_db(mappers, response.to_s)
|
dump_result_to_db(mappers: mappers, xml: response.to_s, data: data)
|
||||||
end
|
end
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} - Directo receipts sending finished. #{counter} of #{total} are sent\n"
|
STDOUT << "#{Time.zone.now.utc} - Directo receipts sending finished. #{counter} of #{total} are sent\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.dump_result_to_db mappers, xml
|
def self.dump_result_to_db(mappers:, xml:, data:)
|
||||||
Nokogiri::XML(xml).css("Result").each do |res|
|
Nokogiri::XML(xml).css("Result").each do |res|
|
||||||
obj = mappers[res.attributes["docid"].value.to_i]
|
obj = mappers[res.attributes["docid"].value.to_i]
|
||||||
obj.directo_records.create!(response: res.as_json.to_h, invoice_number: obj.number)
|
obj.directo_records.create!(request: data,
|
||||||
|
response: res.as_json.to_h,
|
||||||
|
invoice_number: obj.number)
|
||||||
obj.update_columns(in_directo: true)
|
obj.update_columns(in_directo: true)
|
||||||
Rails.logger.info("[DIRECTO] Invoice #{res.attributes["docid"].value} was pushed and return is #{res.as_json.to_h.inspect}")
|
Rails.logger.info("[DIRECTO] Invoice #{res.attributes["docid"].value} was pushed and return is #{res.as_json.to_h.inspect}")
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,12 +9,21 @@ class DirectoTest < ActiveSupport::TestCase
|
||||||
@invoice.update(total: @invoice.account_activity.bank_transaction.sum)
|
@invoice.update(total: @invoice.account_activity.bank_transaction.sum)
|
||||||
@invoice.account_activity.bank_transaction.update(paid_at: Time.zone.now)
|
@invoice.account_activity.bank_transaction.update(paid_at: Time.zone.now)
|
||||||
|
|
||||||
|
response = <<-XML
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<results>
|
||||||
|
<Result Type="0" Desc="OK" docid="1" doctype="ARVE" submit="Invoices"/>
|
||||||
|
</results>
|
||||||
|
XML
|
||||||
|
|
||||||
stub_request(:post, ENV['directo_invoice_url']).with do |request|
|
stub_request(:post, ENV['directo_invoice_url']).with do |request|
|
||||||
request.body.include? 'TransactionDate'
|
request.body.include? 'TransactionDate'
|
||||||
end
|
end.to_return(status: 200, body: response)
|
||||||
|
|
||||||
assert_nothing_raised do
|
assert_nothing_raised do
|
||||||
Directo.send_receipts
|
Directo.send_receipts
|
||||||
end
|
end
|
||||||
|
|
||||||
|
assert_not_empty @invoice.directo_records.first.request
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue