mirror of
https://github.com/internetee/registry.git
synced 2025-07-25 20:18:22 +02:00
Story#105855968 - 1st scratch how to send monthly invoices
This commit is contained in:
parent
e8bf3f7e64
commit
e45915b9da
2 changed files with 78 additions and 0 deletions
20
app/models/counter.rb
Normal file
20
app/models/counter.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
class Counter
|
||||
def initialize value = 0
|
||||
@value = value
|
||||
end
|
||||
attr_accessor :value
|
||||
def method_missing *args, &blk
|
||||
@value.send(*args, &blk)
|
||||
end
|
||||
def to_s
|
||||
@value.to_s
|
||||
end
|
||||
|
||||
# pre-increment ".+" when x not present
|
||||
def next(x = 1)
|
||||
@value += x
|
||||
end
|
||||
def prev(x = 1)
|
||||
@value -= x
|
||||
end
|
||||
end
|
|
@ -46,4 +46,62 @@ class Directo < ActiveRecord::Base
|
|||
Rails.logger.info("[DIRECTO] Invoice #{res.attributes["docid"].value} was pushed and return is #{res.as_json.to_h.inspect}")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def self.send_monthly_invoices
|
||||
product_ids = {"ee" => "01EE", "com.ee" => "02COM", "pri.ee" => "03PRI", "fie.ee"=>"04FIE", "med.ee" => "05MED"}
|
||||
month = Time.now - 1.month
|
||||
invoices_until = month.end_of_month
|
||||
# pochemu registrar has_many :accounts
|
||||
|
||||
activity_scope = AccountActivity.where(activity_type: [CREATE, RENEW])
|
||||
Registrar.joins(:account).find_each do |registrar|
|
||||
next unless registrar.cash_account
|
||||
counter = Counter.new
|
||||
builder = Nokogiri::XML::Builder.new(encoding: "UTF-8") do |xml|
|
||||
activity_scope.where(account_id: registrar.cash_account)
|
||||
|
||||
xml.invoices{
|
||||
xml.invoice("Number"=>"13980",
|
||||
"InvoiceDate"=>invoices_until.strftime("%Y-%m-%d"),
|
||||
"PaymentTerm"=>"E",
|
||||
"CustomerCode"=>registrar.directo_handle,
|
||||
"Language"=>"",
|
||||
"Currency"=>"EUR",
|
||||
"SalesAgent"=>Setting.directo_sales_agent){
|
||||
xml.line("RN" => counter.next, "RR"=>1, "ProductName"=> "Domeenide registreerimine - Juuli 2015")
|
||||
activity_scope.where(account_id: registrar.account_ids).each do |activity|
|
||||
xml.line("RN"=>counter.next, "RR"=>"2", "ProductID"=>"01EE", "Quantity"=>"1911", "Unit"=>"tk", "ProductName"=>".ee registreerimine: 1 aasta", "UnitPriceWoVAT"=>"9.00")
|
||||
end
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
=begin
|
||||
RN - incremental
|
||||
RR - grouping of rows - is same for rows where sum is devided to more than one year eg. 7€ - 7€ - 7€ for 3 year 21€ domains
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<invoices>
|
||||
<!-- Period (UTC) : 2015-06-30 21:00:00 to 2015-07-31 21:00:00 -->
|
||||
<!-- Executed at : Thu Aug 13 09:32:51 2015 -->
|
||||
<invoice Number="13980" InvoiceDate="2015-07-31" PaymentTerm="E" CustomerCode="REGISTRAR2" Language="" Currency="EUR" SalesAgent="NIMI">
|
||||
<line RN="1" RR="1" ProductName="Domeenide registreerimine - Juuli 2015" />
|
||||
<line RN="2" RR="2" ProductID="01EE" Quantity="1911" Unit="tk" ProductName=".ee registreerimine: 1 aasta" UnitPriceWoVAT="9.00" />
|
||||
<line RN="3" RR="3" ProductID="01EE" Quantity="154" Unit="tk" ProductName=".ee registreerimine: 2 aastat" UnitPriceWoVAT="9.00" />
|
||||
<line RN="4" RR="3" ProductID="01EE" Quantity="154" Unit="tk" ProductName=".ee registreerimine: 2 aastat" UnitPriceWoVAT="8.00" StartDate="2016-07-31" EndDate="2016-07-31" />
|
||||
<line RN="5" RR="5" ProductID="01EE" Quantity="170" Unit="tk" ProductName=".ee registreerimine: 3 aastat" UnitPriceWoVAT="9.00" />
|
||||
<line RN="6" RR="5" ProductID="01EE" Quantity="170" Unit="tk" ProductName=".ee registreerimine: 3 aastat" UnitPriceWoVAT="8.00" StartDate="2016-07-31" EndDate="2016-07-31" />
|
||||
<line RN="7" RR="5" ProductID="01EE" Quantity="170" Unit="tk" ProductName=".ee registreerimine: 3 aastat" UnitPriceWoVAT="7.00" StartDate="2017-07-31" EndDate="2017-07-31" />
|
||||
<line RN="8" RR="8" ProductID="03PRI" Quantity="2" Unit="tk" ProductName=".pri.ee registreerimine: 1 aasta" UnitPriceWoVAT="9.00" />
|
||||
<line RN="9" RR="9" ProductID="04FIE" Quantity="1" Unit="tk" ProductName=".fie.ee registreerimine: 1 aasta" UnitPriceWoVAT="9.00" />
|
||||
<line RN="10" RR="10" ProductID="02COM" Quantity="11" Unit="tk" ProductName=".com.ee registreerimine: 1 aasta" UnitPriceWoVAT="9.00" />
|
||||
<line RN="11" RR="11" ProductID="ETTEM06" Quantity="-1" Unit="tk" ProductName="Domeenide ettemaks" UnitPriceWoVAT="1000.00" />
|
||||
</invoice>
|
||||
</invoices>
|
||||
=end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue