PolishInvoicer
PolishInvoicer gem creates polish invoices and proforms as HTML or PDF files. Gem description will be in polish language because of specific case of this gem.
Gem jest zgodny z nową ustawą o podatku VAT, która weszła w życie z dniem 1 stycznia 2017.
Krótkie podsumowanie zmian w wystawianiu faktur.
Installation
Add this line to your application's Gemfile:
gem 'polish_invoicer'
And then execute:
$ bundle
Or install it yourself as:
$ gem install polish_invoicer
Przykład użycia
Generowanie proformy
require 'polish_invoicer'
invoice = PolishInvoicer::Invoice.new(
number: '1/2014', # numer faktury
create_date: Date.today, # data wystawienia
trade_date: Date.today, # data wykonania usługi
seller: ['Systemy Internetowe S.A.', # dane sprzedawcy
'ul. Jasna 10',
'12-345 Kraków'],
seller_nip: '123-456-78-90', # NIP sprzedawcy
buyer: ['Mała Firma sp. z o.o.', # dane nabywcy
'ul. Czerwona 20/4',
'10-043 Olsztyn'],
buyer_nip: '987-654-32-10', # NIP nabywcy
item_name: 'Usługi programistyczne', # nazwa usługi
price: 3500, # cena (domyślnie brutto)
payment_date: Date.today + 14, # data płatności
proforma: true, # znacznik proformy
paid: false, # znacznik opłacenia usługi
)
if invoice.valid?
invoice.save_to_html('/path/to/proforma.html')
invoice.save_to_pdf('/path/to/proforma.pdf')
else
puts invoice.errors.inspect
end
Generowanie faktury
invoice.proforma = false
invoice.paid = true
invoice.save_to_html('/path/to/invoice.html')
invoice.save_to_pdf('/path/to/invoice.pdf')
Opis wszystkich dostępnych parametrów
Parametry wymagane
:number, # numer faktury (string)
:create_date, # data wystawienia faktury (date)
:trade_date, # data sprzedaży (date)
:seller, # adres sprzedawcy (tablica stringów)
:seller_nip, # NIP sprzedawcy (string)
:buyer, # adres nabywcy (tablica stringów)
:item_name, # nazwa usługi (string)
:price, # cena w złotych (float)
:payment_date, # termin płatności (date)
Parametry wymagane z ustawionymi wartościami domyślnymi
:gross_price, # znacznik rodzaju ceny (netto/brutto) (boolean)
# wartość domyślna: true, czyli brutto
:vat, # stawka vat (integer ze zbioru [23, 8, 5, 0, -1]
# -1 oznacza zwolniony z VAT
# wartość domyślna: 23
:paid, # znacznik opłacenia usługi (boolean)
# wartość domyślna: true, czyli opłacona
:proforma, # znacznik faktury pro-forma (boolean)
# wartość domyślna: false
:payment_type, # rodzaj płatności (string)
# wartość domyślna: 'Przelew'
Parametry dodatkowe
:buyer_nip, # NIP nabywcy (string)
:recipient, # odbiorca faktury (tablica stringów)
:comments, # uwagi (string lub tablica stringów)
:pkwiu, # numer PKWiU (string)
:no_vat_reason, # podstawa prawna zwolnienia z VAT (string)
:footer, # treść umieszczana w stopce faktury (string)
Parametry systemowe
:template_path, # ścieżka do własnego szablonu faktury
:logger, # możliwość ustawienia loggera
# podczas użycia w aplikacji Rails
# logger ustawia się automatycznie
:wkhtmltopdf_path # ścieżka do polecenia wkhtmltopdf
:wkhtmltopdf_command # komenda wywołania polecenia wkhtmltopdf
# bez podawania plików html i pdf
Walidacja parametrów i obsługa błędów
Zmienna invoice
z poprzedniego przykładu.
invoice.create_date = Date.today
invoice.trade_date = Date.today - 60
invoice.vat = 1
invoice.valid?
puts invoice.errors.inspect
{
:vat=>"Stawka VAT spoza listy dopuszczalnych wartości",
:create_date=>"Data wystawienia nie może być późniejsza niż 15 dzień następnego miesiąca po wykonaniu usługi"
}
Dodatkowe metody
net_value # obliczona wartość netto
vat_value # obliczona kwota VAT
gross_value # obliczona wartość brutto
to_hash # hash przekazywany do szablonu faktury
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request