mirror of
https://github.com/internetee/registry.git
synced 2025-07-28 13:36:15 +02:00
52 lines
1.6 KiB
Ruby
52 lines
1.6 KiB
Ruby
module EisBilling
|
|
class SendEInvoice < EisBilling::Base
|
|
def self.send_request(invoice:, payable:)
|
|
send_info(invoice: invoice, payable: payable)
|
|
end
|
|
|
|
def self.send_info(invoice:, payable:)
|
|
prepared_data = prepare_data(invoice: invoice, payable: payable)
|
|
|
|
http = EisBilling::Base.base_request(url: e_invoice_url)
|
|
http.post(e_invoice_url, prepared_data.to_json, EisBilling::Base.headers)
|
|
end
|
|
|
|
def self.prepare_items(invoice)
|
|
if invoice.monthly_invoice
|
|
invoice.metadata['items']
|
|
else
|
|
invoice.items.map do |invoice_item|
|
|
{
|
|
description: invoice_item.description,
|
|
price: invoice_item.price,
|
|
quantity: invoice_item.quantity,
|
|
unit: invoice_item.unit,
|
|
subtotal: invoice_item.subtotal,
|
|
vat_rate: invoice_item.vat_rate,
|
|
vat_amount: invoice_item.vat_amount,
|
|
total: invoice_item.total,
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
def self.prepare_data(invoice:, payable:)
|
|
{
|
|
invoice: invoice.as_json,
|
|
vat_amount: invoice.vat_amount,
|
|
invoice_subtotal: invoice.subtotal,
|
|
buyer_billing_email: invoice.buyer.billing_email,
|
|
buyer_e_invoice_iban: invoice.buyer.e_invoice_iban,
|
|
seller_country_code: invoice.seller_country_code,
|
|
buyer_country_code: invoice.buyer_country_code,
|
|
payable: payable,
|
|
initiator: EisBilling::Base::INITIATOR,
|
|
items: prepare_items(invoice),
|
|
}
|
|
end
|
|
|
|
def self.e_invoice_url
|
|
"#{BASE_URL}/api/v1/e_invoice/e_invoice"
|
|
end
|
|
end
|
|
end
|