polish_invoicer 0.0.19 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.travis.yml +3 -4
- data/README.md +10 -4
- data/doc/invoice.rb +4 -1
- data/lib/polish_invoicer/invoice.rb +23 -1
- data/lib/polish_invoicer/presenter.rb +2 -2
- data/lib/polish_invoicer/validator.rb +20 -0
- data/lib/polish_invoicer/vat.rb +6 -14
- data/lib/polish_invoicer/version.rb +1 -1
- data/test/invoice_test.rb +83 -3
- data/test/validator_test.rb +36 -0
- data/test/vat_test.rb +17 -4
- data/tpl/invoice-en.slim +21 -13
- data/tpl/invoice.slim +15 -11
- data/tpl/proforma-en.slim +5 -13
- data/tpl/proforma.slim +5 -11
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 83d6168d0e9d3dee433a2d9a0e7b6444120ea67834543ea6faf56ba4bf97d573
|
4
|
+
data.tar.gz: 12ce7534dd021a52e3b78efd9cb07e2f8872fd2b97c731c672785e68560b03fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78c45cea18508cdabaef2d83a67b622135b1270b251f7ae9fa291ef31818ba0368784a28a1800ceaa811b6fdb470993dbf0815e41e443050a65146ffb7e5b6fb
|
7
|
+
data.tar.gz: 2ea922f4e34e5b20a27204ef7ca3a189a211cf1d8cb31da26c74310a6d8a468214ebf5902f0b5020783832397b4885c90ff181252440bbe39ee78b8289dced83
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -87,14 +87,20 @@ invoice.save_to_pdf('/path/to/invoice.pdf')
|
|
87
87
|
# wartość domyślna: 23
|
88
88
|
:paid, # znacznik opłacenia usługi (boolean)
|
89
89
|
# wartość domyślna: true, czyli opłacona
|
90
|
+
:price_paid, # kwota częściowego opłacenia faktury w złotych (float)
|
91
|
+
# wartość domyślna: 0.0
|
90
92
|
:proforma, # znacznik faktury pro-forma (boolean)
|
91
93
|
# wartość domyślna: false
|
92
94
|
:payment_type, # rodzaj płatności (string)
|
93
95
|
# wartość domyślna: 'Przelew'
|
94
|
-
:foreign_buyer, # nabywcą jest firma spoza Polski
|
95
|
-
# wartość domyślna: false
|
96
|
-
:reverse_charge # faktura z odwrotnym obciążeniem VAT
|
97
|
-
# wartość domyślna: false
|
96
|
+
:foreign_buyer, # nabywcą jest firma spoza Polski (boolean)
|
97
|
+
# wartość domyślna: false
|
98
|
+
:reverse_charge # faktura z odwrotnym obciążeniem VAT (boolean)
|
99
|
+
# wartość domyślna: false
|
100
|
+
:currency # waluta rozliczeniowa (string)
|
101
|
+
# wartość domyślna: PLN
|
102
|
+
:exchange_rate # kurs waluty rozliczeniowej (float)
|
103
|
+
# wartość domyślna: 1.0000
|
98
104
|
|
99
105
|
### Parametry dodatkowe
|
100
106
|
|
data/doc/invoice.rb
CHANGED
@@ -19,7 +19,10 @@ invoice = PolishInvoicer::Invoice.new(
|
|
19
19
|
# proforma: true,
|
20
20
|
# paid: false,
|
21
21
|
foreign_buyer: true,
|
22
|
-
reverse_charge: true
|
22
|
+
reverse_charge: true,
|
23
|
+
currency: 'EUR',
|
24
|
+
exchange_rate: 3.5432,
|
25
|
+
comments: 'To jest komentarz w ważnej sprawie do dokumentu'
|
23
26
|
)
|
24
27
|
invoice.save_to_html('/tmp/invoice.html')
|
25
28
|
invoice.save_to_pdf('/tmp/invoice.pdf')
|
@@ -11,6 +11,7 @@ module PolishInvoicer
|
|
11
11
|
:recipient, # odbiorca faktury (tablica stringów)
|
12
12
|
:item_name, # nazwa usługi (string)
|
13
13
|
:price, # cena w złotych (float)
|
14
|
+
:price_paid, # kwota częściowego opłacenia faktury w złotych, domyślnie: 0.0 (float)
|
14
15
|
:gross_price, # znacznik rodzaju ceny (netto/brutto), domyślnie: true (boolean)
|
15
16
|
:vat, # stawka vat, domyślnie: 23 (integer)
|
16
17
|
:pkwiu, # numer PKWiU (string)
|
@@ -22,7 +23,9 @@ module PolishInvoicer
|
|
22
23
|
:proforma, # znacznik faktury pro-forma, domyślnie: false (boolean)
|
23
24
|
:no_vat_reason, # podstawa prawna zwolnienia z VAT (string)
|
24
25
|
:foreign_buyer, # nabywcą jest firma spoza Polski, domyślnie: false (boolean)
|
25
|
-
:reverse_charge
|
26
|
+
:reverse_charge, # faktura z odwrotnym obciążeniem VAT
|
27
|
+
:currency, # waluta rozliczeniowa, domyślnie: PLN (string)
|
28
|
+
:exchange_rate # kurs waluty rozliczeniowej, domyślnie: 1.0000 (float)
|
26
29
|
].freeze
|
27
30
|
|
28
31
|
attr_accessor(*AVAILABLE_PARAMS)
|
@@ -78,6 +81,22 @@ module PolishInvoicer
|
|
78
81
|
Presenter.new(self).data
|
79
82
|
end
|
80
83
|
|
84
|
+
def exchanged_tax
|
85
|
+
(vat_value * exchange_rate)
|
86
|
+
end
|
87
|
+
|
88
|
+
def total_to_pay_value
|
89
|
+
reverse_charge ? net_value : gross_value
|
90
|
+
end
|
91
|
+
|
92
|
+
def paid_value
|
93
|
+
paid ? total_to_pay_value : price_paid
|
94
|
+
end
|
95
|
+
|
96
|
+
def to_pay_value
|
97
|
+
paid ? 0 : (total_to_pay_value - price_paid)
|
98
|
+
end
|
99
|
+
|
81
100
|
private
|
82
101
|
|
83
102
|
def set_defaults
|
@@ -85,9 +104,12 @@ module PolishInvoicer
|
|
85
104
|
@vat = 23
|
86
105
|
@payment_type = 'Przelew'
|
87
106
|
@paid = true
|
107
|
+
@price_paid = 0.0
|
88
108
|
@proforma = false
|
89
109
|
@foreign_buyer = false
|
90
110
|
@reverse_charge = false
|
111
|
+
@currency = 'PLN'
|
112
|
+
@exchange_rate = 1.0000
|
91
113
|
@recipient = []
|
92
114
|
end
|
93
115
|
|
@@ -31,7 +31,7 @@ module PolishInvoicer
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def copy_additional_params
|
34
|
-
%w[net_value vat_value gross_value].each do |field|
|
34
|
+
%w[net_value vat_value gross_value exchanged_tax].each do |field|
|
35
35
|
@out[field.to_sym] = @invoice.send(field)
|
36
36
|
end
|
37
37
|
end
|
@@ -45,7 +45,7 @@ module PolishInvoicer
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def format_prices
|
48
|
-
%w[net_value vat_value gross_value].each do |field|
|
48
|
+
%w[net_value vat_value gross_value exchanged_tax total_to_pay_value paid_value to_pay_value].each do |field|
|
49
49
|
v = @invoice.send(field)
|
50
50
|
next unless v
|
51
51
|
@out[field.to_sym] = sprintf('%02.2f', v).tr('.', ',')
|
@@ -15,9 +15,11 @@ module PolishInvoicer
|
|
15
15
|
check_arrays
|
16
16
|
check_booleans
|
17
17
|
check_price
|
18
|
+
check_price_paid
|
18
19
|
check_vat
|
19
20
|
check_proforma
|
20
21
|
check_create_and_payment_date
|
22
|
+
check_currency
|
21
23
|
@errors.empty?
|
22
24
|
end
|
23
25
|
|
@@ -40,6 +42,8 @@ module PolishInvoicer
|
|
40
42
|
def check_not_nil
|
41
43
|
@errors[:gross_price] = 'Konieczne jest ustawienie znacznika rodzaju ceny (netto/brutto)' if @invoice.gross_price.nil?
|
42
44
|
@errors[:paid] = 'Konieczne jest ustawienie znacznika opłacenia faktury' if @invoice.paid.nil?
|
45
|
+
@errors[:currency] = 'Konieczne jest ustawienie waluty rozliczeniowej' if @invoice.currency.nil?
|
46
|
+
@errors[:exchange_rate] = 'Konieczne jest podanie kursu waluty rozliczeniowej' if @invoice.exchange_rate.nil?
|
43
47
|
end
|
44
48
|
|
45
49
|
def check_arrays
|
@@ -79,6 +83,16 @@ module PolishInvoicer
|
|
79
83
|
end
|
80
84
|
end
|
81
85
|
|
86
|
+
def check_price_paid
|
87
|
+
return if @invoice.price.nil?
|
88
|
+
if @invoice.price_paid.is_a?(Numeric)
|
89
|
+
@errors[:price_paid] = 'Kwota zapłacona musi być liczbą dodatnią' unless @invoice.price_paid >= 0
|
90
|
+
@errors[:price_paid] = 'Kwota zapłacona musi być mniejsza lub równa cenie' unless @invoice.price_paid <= @invoice.price
|
91
|
+
else
|
92
|
+
@errors[:price_paid] = 'Kwota zapłacona musi być liczbą'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
82
96
|
def check_vat
|
83
97
|
if Vat.valid?(@invoice.vat)
|
84
98
|
if Vat.zw?(@invoice.vat) && blank?(@invoice.no_vat_reason)
|
@@ -102,6 +116,12 @@ module PolishInvoicer
|
|
102
116
|
@errors[:payment_date] = 'Termin płatności nie może być wcześniejszy niż data wystawienia'
|
103
117
|
end
|
104
118
|
|
119
|
+
def check_currency
|
120
|
+
return if @errors[:currency]
|
121
|
+
return if %w[PLN EUR USD GBP].include?(@invoice.currency)
|
122
|
+
@errors[:currency] = 'Nieznana waluta'
|
123
|
+
end
|
124
|
+
|
105
125
|
def blank?(value)
|
106
126
|
value.to_s.strip == ''
|
107
127
|
end
|
data/lib/polish_invoicer/vat.rb
CHANGED
@@ -1,35 +1,27 @@
|
|
1
1
|
module PolishInvoicer
|
2
2
|
class Vat
|
3
3
|
def self.rates
|
4
|
-
|
4
|
+
(0..27)
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.valid?(rate)
|
8
|
+
return true if zw?(rate)
|
8
9
|
rates.include?(rate)
|
9
10
|
end
|
10
11
|
|
11
12
|
# Czy stawka VAT to "zwolniony"?
|
12
13
|
def self.zw?(rate)
|
13
|
-
rate == -1
|
14
|
+
rate == -1 # -1 oznacza zwolniony z VAT
|
14
15
|
end
|
15
16
|
|
16
17
|
def self.to_s(rate)
|
17
|
-
|
18
|
+
return 'zw.' if zw?(rate)
|
19
|
+
"#{rate}%"
|
18
20
|
end
|
19
21
|
|
20
22
|
# Potrzebne do obliczeń netto/vat/brutto
|
21
23
|
def self.to_i(rate)
|
22
|
-
rate
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.hash
|
26
|
-
h = {}
|
27
|
-
rates.each do |r|
|
28
|
-
name = "#{r}%"
|
29
|
-
name = 'zw.' if r == -1
|
30
|
-
h[name] = r
|
31
|
-
end
|
32
|
-
h
|
24
|
+
zw?(rate) ? 0 : rate
|
33
25
|
end
|
34
26
|
end
|
35
27
|
end
|
data/test/invoice_test.rb
CHANGED
@@ -26,26 +26,41 @@ module PolishInvoicer
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_net_value
|
29
|
-
i = Invoice.new(price: 123.45, gross_price: false
|
29
|
+
i = Invoice.new(price: 123.45, gross_price: false)
|
30
|
+
i.vat = 23
|
30
31
|
assert_in_delta 123.45, i.net_value, 0.01
|
32
|
+
|
31
33
|
i.gross_price = true
|
34
|
+
i.vat = 23
|
32
35
|
assert_in_delta 100.37, i.net_value, 0.01
|
36
|
+
i.vat = 5.5
|
37
|
+
assert_in_delta 117.01, i.net_value, 0.01
|
33
38
|
i.vat = 0
|
34
39
|
assert_in_delta 123.45, i.net_value, 0.01
|
35
40
|
i.vat = -1
|
36
41
|
assert_in_delta 123.45, i.net_value, 0.01
|
42
|
+
|
37
43
|
i.gross_price = false
|
38
44
|
i.vat = 0
|
39
45
|
assert_in_delta 123.45, i.net_value, 0.01
|
40
46
|
i.vat = -1
|
41
47
|
assert_in_delta 123.45, i.net_value, 0.01
|
48
|
+
i.vat = 5.5
|
49
|
+
assert_in_delta 123.45, i.net_value, 0.01
|
42
50
|
end
|
43
51
|
|
44
52
|
def test_vat_value
|
45
|
-
i = Invoice.new(price: 123.45, gross_price: false
|
53
|
+
i = Invoice.new(price: 123.45, gross_price: false)
|
54
|
+
i.vat = 23
|
46
55
|
assert_in_delta 28.39, i.vat_value, 0.01
|
56
|
+
i.vat = 5.5
|
57
|
+
assert_in_delta 6.79, i.vat_value, 0.01
|
58
|
+
|
47
59
|
i.gross_price = true
|
60
|
+
i.vat = 23
|
48
61
|
assert_in_delta 23.08, i.vat_value, 0.01
|
62
|
+
i.vat = 5.5
|
63
|
+
assert_in_delta 6.44, i.vat_value, 0.01
|
49
64
|
i.vat = 0
|
50
65
|
assert_equal 0.00, i.vat_value
|
51
66
|
i.vat = -1
|
@@ -53,15 +68,23 @@ module PolishInvoicer
|
|
53
68
|
end
|
54
69
|
|
55
70
|
def test_gross_value
|
56
|
-
i = Invoice.new(price: 123.45, gross_price: false
|
71
|
+
i = Invoice.new(price: 123.45, gross_price: false)
|
72
|
+
i.vat = 23
|
57
73
|
assert_in_delta 151.84, i.gross_value, 0.01
|
74
|
+
|
58
75
|
i.gross_price = true
|
76
|
+
i.vat = 23
|
77
|
+
assert_in_delta 123.45, i.gross_value, 0.01
|
78
|
+
i.vat = 5.5
|
59
79
|
assert_in_delta 123.45, i.gross_value, 0.01
|
60
80
|
i.vat = 0
|
61
81
|
assert_in_delta 123.45, i.gross_value, 0.01
|
62
82
|
i.vat = -1
|
63
83
|
assert_in_delta 123.45, i.gross_value, 0.01
|
84
|
+
|
64
85
|
i.gross_price = false
|
86
|
+
i.vat = 5.5
|
87
|
+
assert_in_delta 130.24, i.gross_value, 0.01
|
65
88
|
i.vat = 0
|
66
89
|
assert_in_delta 123.45, i.gross_value, 0.01
|
67
90
|
i.vat = -1
|
@@ -110,5 +133,62 @@ module PolishInvoicer
|
|
110
133
|
assert_equal false, h[:gross_price] # params
|
111
134
|
assert_equal '123,45', h[:net_value] # presenter
|
112
135
|
end
|
136
|
+
|
137
|
+
def test_total_to_pay_value
|
138
|
+
assert_equal 123, Invoice.new(price: 123).paid_value
|
139
|
+
assert_equal 100, Invoice.new(price: 123, reverse_charge: true).paid_value
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_paid_value
|
143
|
+
assert_equal 123, Invoice.new(price: 123).paid_value
|
144
|
+
assert_equal 123, Invoice.new(price: 123, price_paid: 100).paid_value
|
145
|
+
assert_equal 100, Invoice.new(price: 123, paid: false, price_paid: 100).paid_value
|
146
|
+
assert_equal 100, Invoice.new(price: 123, gross_price: false, paid: false, price_paid: 100).paid_value
|
147
|
+
assert_equal 100, Invoice.new(price: 123, reverse_charge: true, paid: false, price_paid: 100).paid_value
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_to_pay_value
|
151
|
+
assert_equal 0, Invoice.new(price: 123).to_pay_value
|
152
|
+
assert_equal 0, Invoice.new(price: 123, price_paid: 100).to_pay_value
|
153
|
+
assert_equal 23, Invoice.new(price: 123, paid: false, price_paid: 100).to_pay_value
|
154
|
+
assert_equal 23, Invoice.new(price: 100, gross_price: false, paid: false, price_paid: 100).to_pay_value
|
155
|
+
assert_equal 50, Invoice.new(price: 123, reverse_charge: true, paid: false, price_paid: 50).to_pay_value
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_gross_and_net_price
|
159
|
+
gross_invoice = Invoice.new(price: 123, price_paid: 60, paid: false)
|
160
|
+
assert_equal 100, gross_invoice.net_value
|
161
|
+
assert_equal 23, gross_invoice.vat_value
|
162
|
+
assert_equal 123, gross_invoice.gross_value
|
163
|
+
assert_equal 123, gross_invoice.total_to_pay_value
|
164
|
+
assert_equal 60, gross_invoice.paid_value
|
165
|
+
assert_equal 63, gross_invoice.to_pay_value
|
166
|
+
|
167
|
+
net_invoice = Invoice.new(price: 100, price_paid: 60, paid: false, gross_price: false)
|
168
|
+
assert_equal 100, net_invoice.net_value
|
169
|
+
assert_equal 23, net_invoice.vat_value
|
170
|
+
assert_equal 123, net_invoice.gross_value
|
171
|
+
assert_equal 123, net_invoice.total_to_pay_value
|
172
|
+
assert_equal 60, net_invoice.paid_value
|
173
|
+
assert_equal 63, net_invoice.to_pay_value
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_reverse_charge
|
177
|
+
gross_invoice = Invoice.new(price: 123, price_paid: 60, paid: false, reverse_charge: true)
|
178
|
+
assert_equal 100, gross_invoice.net_value
|
179
|
+
assert_equal 23, gross_invoice.vat_value
|
180
|
+
assert_equal 123, gross_invoice.gross_value
|
181
|
+
assert_equal 100, gross_invoice.total_to_pay_value
|
182
|
+
assert_equal 60, gross_invoice.paid_value
|
183
|
+
assert_equal 40, gross_invoice.to_pay_value
|
184
|
+
|
185
|
+
net_invoice = Invoice.new(price: 100, price_paid: 60, paid: false, gross_price: false, reverse_charge: true)
|
186
|
+
assert_equal 100, net_invoice.net_value
|
187
|
+
assert_equal 23, net_invoice.vat_value
|
188
|
+
assert_equal 123, net_invoice.gross_value
|
189
|
+
assert_equal 100, net_invoice.total_to_pay_value
|
190
|
+
assert_equal 60, net_invoice.paid_value
|
191
|
+
assert_equal 40, net_invoice.to_pay_value
|
192
|
+
end
|
113
193
|
end
|
114
194
|
end
|
data/test/validator_test.rb
CHANGED
@@ -54,6 +54,16 @@ module PolishInvoicer
|
|
54
54
|
check_ok(:price, 19.99)
|
55
55
|
end
|
56
56
|
|
57
|
+
def test_price_paid_validation
|
58
|
+
@invoice.price = 200
|
59
|
+
check_error(:price_paid)
|
60
|
+
check_error(:price_paid, 'test')
|
61
|
+
check_error(:price_paid, '100')
|
62
|
+
check_error(:price_paid, -10)
|
63
|
+
check_error(:price_paid, 300)
|
64
|
+
check_ok(:price_paid, 19.99)
|
65
|
+
end
|
66
|
+
|
57
67
|
def test_gross_price_validation
|
58
68
|
check_error(:gross_price)
|
59
69
|
check_error(:gross_price, 'test')
|
@@ -142,6 +152,32 @@ module PolishInvoicer
|
|
142
152
|
assert_nil v.errors[:payment_date]
|
143
153
|
end
|
144
154
|
|
155
|
+
def test_currency
|
156
|
+
@invoice.currency = nil
|
157
|
+
v = Validator.new(@invoice)
|
158
|
+
v.valid?
|
159
|
+
assert v.errors[:currency]
|
160
|
+
@invoice.currency = 'XYZ'
|
161
|
+
v = Validator.new(@invoice)
|
162
|
+
v.valid?
|
163
|
+
assert v.errors[:currency]
|
164
|
+
@invoice.currency = 'EUR'
|
165
|
+
v = Validator.new(@invoice)
|
166
|
+
v.valid?
|
167
|
+
refute v.errors[:currency]
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_exchange_rate
|
171
|
+
@invoice.exchange_rate = nil
|
172
|
+
v = Validator.new(@invoice)
|
173
|
+
v.valid?
|
174
|
+
assert v.errors[:exchange_rate]
|
175
|
+
@invoice.exchange_rate = 4,1234
|
176
|
+
v = Validator.new(@invoice)
|
177
|
+
v.valid?
|
178
|
+
refute v.errors[:exchange_rate]
|
179
|
+
end
|
180
|
+
|
145
181
|
private
|
146
182
|
|
147
183
|
def check_error(field, value = nil)
|
data/test/vat_test.rb
CHANGED
@@ -4,22 +4,35 @@ module PolishInvoicer
|
|
4
4
|
class VatTest < Minitest::Test
|
5
5
|
def test_valid
|
6
6
|
assert Vat.valid?(23)
|
7
|
+
assert Vat.valid?(27)
|
8
|
+
assert Vat.valid?(2)
|
9
|
+
assert Vat.valid?(5.5)
|
10
|
+
assert Vat.valid?(4.8)
|
7
11
|
assert Vat.valid?(0)
|
8
12
|
assert Vat.valid?(-1)
|
9
|
-
|
10
|
-
|
11
|
-
|
13
|
+
refute Vat.valid?(123)
|
14
|
+
refute Vat.valid?(-10)
|
15
|
+
refute Vat.valid?('test')
|
16
|
+
refute Vat.valid?('2,1')
|
17
|
+
refute Vat.valid?('2.1')
|
12
18
|
end
|
13
19
|
|
14
20
|
def test_zw
|
15
21
|
assert Vat.zw?(-1)
|
16
|
-
|
22
|
+
refute Vat.zw?(23)
|
17
23
|
end
|
18
24
|
|
19
25
|
def test_to_s
|
20
26
|
assert_equal '23%', Vat.to_s(23)
|
27
|
+
assert_equal '5.5%', Vat.to_s(5.5)
|
21
28
|
assert_equal '0%', Vat.to_s(0)
|
22
29
|
assert_equal 'zw.', Vat.to_s(-1)
|
23
30
|
end
|
31
|
+
|
32
|
+
def test_to_i
|
33
|
+
assert_equal 0, Vat.to_i(-1)
|
34
|
+
assert_equal 5.5, Vat.to_i(5.5)
|
35
|
+
assert_equal 20, Vat.to_i(20)
|
36
|
+
end
|
24
37
|
end
|
25
38
|
end
|
data/tpl/invoice-en.slim
CHANGED
@@ -127,7 +127,7 @@ html
|
|
127
127
|
- unless reverse_charge
|
128
128
|
td.text-center = vat
|
129
129
|
td.text-center = vat_value
|
130
|
-
td.text-center =
|
130
|
+
td.text-center = total_to_pay_value
|
131
131
|
tr
|
132
132
|
td colspan="#{pkwiu ? 3 : 2}"
|
133
133
|
|
|
@@ -139,7 +139,7 @@ html
|
|
139
139
|
- unless reverse_charge
|
140
140
|
td.text-center = vat
|
141
141
|
td.text-center = vat_value
|
142
|
-
th.text-center =
|
142
|
+
th.text-center = total_to_pay_value
|
143
143
|
|
144
144
|
br
|
145
145
|
|
@@ -151,27 +151,35 @@ html
|
|
151
151
|
.small
|
152
152
|
em Total to pay:
|
153
153
|
.col-xs-6
|
154
|
-
b = "#{
|
154
|
+
b = "#{total_to_pay_value} #{currency}"
|
155
155
|
.row
|
156
156
|
.col-xs-6
|
157
157
|
| Zapłacono:
|
158
158
|
.small
|
159
159
|
em Amount paid:
|
160
|
-
.col-xs-6
|
161
|
-
- if paid
|
162
|
-
= "#{reverse_charge == true ? net_value : gross_value} PLN"
|
163
|
-
- else
|
164
|
-
| 0,00 PLN
|
160
|
+
.col-xs-6 = "#{paid_value} #{currency}"
|
165
161
|
.row
|
166
162
|
.col-xs-6
|
167
163
|
| Zostało do zapłaty:
|
168
164
|
.small
|
169
165
|
em Left to pay:
|
170
|
-
.col-xs-6
|
171
|
-
|
172
|
-
|
173
|
-
-
|
174
|
-
|
166
|
+
.col-xs-6 = "#{to_pay_value} #{currency}"
|
167
|
+
- if currency != 'PLN'
|
168
|
+
.row
|
169
|
+
.col-xs-6
|
170
|
+
| Kurs waluty:
|
171
|
+
.small
|
172
|
+
em Exchange rate:
|
173
|
+
.col-xs-6
|
174
|
+
= exchange_rate
|
175
|
+
- unless reverse_charge
|
176
|
+
.row
|
177
|
+
.col-xs-6
|
178
|
+
| Podatek w PLN:
|
179
|
+
.small
|
180
|
+
em Exchanged tax amount:
|
181
|
+
.col-xs-6
|
182
|
+
= "#{exchanged_tax} PLN"
|
175
183
|
|
176
184
|
.col-xs-6
|
177
185
|
- if comments.any?
|
data/tpl/invoice.slim
CHANGED
@@ -83,7 +83,7 @@ html
|
|
83
83
|
td.text-center = net_value
|
84
84
|
td.text-center = vat
|
85
85
|
td.text-center = vat_value
|
86
|
-
td.text-center =
|
86
|
+
td.text-center = total_to_pay_value
|
87
87
|
tr
|
88
88
|
td colspan="#{pkwiu ? 3 : 2}"
|
89
89
|
|
|
@@ -91,7 +91,7 @@ html
|
|
91
91
|
td.text-center = net_value
|
92
92
|
td.text-center = vat
|
93
93
|
td.text-center = vat_value
|
94
|
-
th.text-center =
|
94
|
+
th.text-center = total_to_pay_value
|
95
95
|
|
96
96
|
br
|
97
97
|
|
@@ -102,18 +102,22 @@ html
|
|
102
102
|
| Zapłacono:
|
103
103
|
br
|
104
104
|
| Zostało do zapłaty:
|
105
|
+
- if currency != 'PLN'
|
106
|
+
br
|
107
|
+
| Kurs waluty:
|
108
|
+
br
|
109
|
+
| Podatek w PLN:
|
105
110
|
.col-xs-3
|
106
|
-
b = "#{
|
111
|
+
b = "#{total_to_pay_value} #{currency}"
|
107
112
|
br
|
108
|
-
|
109
|
-
= "#{gross_value} PLN"
|
110
|
-
- else
|
111
|
-
| 0,00 PLN
|
113
|
+
= "#{paid_value} #{currency}"
|
112
114
|
br
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
=
|
115
|
+
= "#{to_pay_value} #{currency}"
|
116
|
+
- if currency != 'PLN'
|
117
|
+
br
|
118
|
+
= exchange_rate
|
119
|
+
br
|
120
|
+
= "#{exchanged_tax} PLN"
|
117
121
|
- if comments.any?
|
118
122
|
.col-xs-6
|
119
123
|
b Uwagi:
|
data/tpl/proforma-en.slim
CHANGED
@@ -115,7 +115,7 @@ html
|
|
115
115
|
em 1 service
|
116
116
|
td.text-center = net_value
|
117
117
|
td.text-center = net_value
|
118
|
-
td.text-center =
|
118
|
+
td.text-center = total_to_pay_value
|
119
119
|
tr
|
120
120
|
td colspan="#{pkwiu ? 3 : 2}"
|
121
121
|
|
|
@@ -124,7 +124,7 @@ html
|
|
124
124
|
.small
|
125
125
|
em Total
|
126
126
|
td.text-center = net_value
|
127
|
-
th.text-center =
|
127
|
+
th.text-center = total_to_pay_value
|
128
128
|
|
129
129
|
br
|
130
130
|
|
@@ -136,27 +136,19 @@ html
|
|
136
136
|
.small
|
137
137
|
em Total to pay:
|
138
138
|
.col-xs-6
|
139
|
-
b = "#{
|
139
|
+
b = "#{total_to_pay_value} #{currency}"
|
140
140
|
.row
|
141
141
|
.col-xs-6
|
142
142
|
| Zapłacono:
|
143
143
|
.small
|
144
144
|
em Amount paid:
|
145
|
-
.col-xs-6
|
146
|
-
- if paid
|
147
|
-
= "#{reverse_charge == true ? net_value : gross_value} PLN"
|
148
|
-
- else
|
149
|
-
| 0,00 PLN
|
145
|
+
.col-xs-6 = "#{paid_value} #{currency}"
|
150
146
|
.row
|
151
147
|
.col-xs-6
|
152
148
|
| Zostało do zapłaty:
|
153
149
|
.small
|
154
150
|
em Left to pay:
|
155
|
-
.col-xs-6
|
156
|
-
- if paid
|
157
|
-
| 0,00 PLN
|
158
|
-
- else
|
159
|
-
= "#{reverse_charge == true ? net_value : gross_value} PLN"
|
151
|
+
.col-xs-6 = "#{to_pay_value} #{currency}"
|
160
152
|
|
161
153
|
.col-xs-6
|
162
154
|
- if comments.any?
|
data/tpl/proforma.slim
CHANGED
@@ -77,13 +77,13 @@ html
|
|
77
77
|
| 1 usł.
|
78
78
|
td.text-center = net_value
|
79
79
|
td.text-center = net_value
|
80
|
-
td.text-center =
|
80
|
+
td.text-center = total_to_pay_value
|
81
81
|
tr
|
82
82
|
td colspan="#{pkwiu ? 3 : 2}"
|
83
83
|
|
|
84
84
|
th.text-center Razem
|
85
85
|
td.text-center = net_value
|
86
|
-
th.text-center =
|
86
|
+
th.text-center = total_to_pay_value
|
87
87
|
|
88
88
|
br
|
89
89
|
|
@@ -95,17 +95,11 @@ html
|
|
95
95
|
br
|
96
96
|
| Zostało do zapłaty:
|
97
97
|
.col-xs-3
|
98
|
-
b = "#{
|
98
|
+
b = "#{total_to_pay_value} #{currency}"
|
99
99
|
br
|
100
|
-
|
101
|
-
= "#{gross_value} PLN"
|
102
|
-
- else
|
103
|
-
| 0,00 PLN
|
100
|
+
= "#{paid_value} #{currency}"
|
104
101
|
br
|
105
|
-
|
106
|
-
| 0,00 PLN
|
107
|
-
- else
|
108
|
-
= "#{gross_value} PLN"
|
102
|
+
= "#{to_pay_value} #{currency}"
|
109
103
|
- if comments.any?
|
110
104
|
.col-xs-6
|
111
105
|
b Uwagi:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polish_invoicer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Macuk
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -137,7 +137,7 @@ homepage: ''
|
|
137
137
|
licenses:
|
138
138
|
- MIT
|
139
139
|
metadata: {}
|
140
|
-
post_install_message:
|
140
|
+
post_install_message:
|
141
141
|
rdoc_options: []
|
142
142
|
require_paths:
|
143
143
|
- lib
|
@@ -152,9 +152,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0'
|
154
154
|
requirements: []
|
155
|
-
|
156
|
-
|
157
|
-
signing_key:
|
155
|
+
rubygems_version: 3.0.8
|
156
|
+
signing_key:
|
158
157
|
specification_version: 4
|
159
158
|
summary: Creates polish invoices and proforms as HTML or PDF files
|
160
159
|
test_files:
|