Signed-off-by: Adrian Hinz <ahinz@voicetelecom.pl>
This commit is contained in:
parent
65683128fb
commit
59f446271e
|
|
@ -8,7 +8,13 @@ class InvoicesController < ApplicationController
|
|||
end
|
||||
|
||||
def new
|
||||
@invoice = Invoice.new(date: Date.today)
|
||||
@invoice = Invoice.new(date: Date.today, date_of_payment: Date.today + 14.days)
|
||||
inv = Invoice.where('date > ?', Date.new(Date.today.year,1,1)).last
|
||||
if !inv.blank?
|
||||
nr = inv.number
|
||||
new_nr = (nr.split("/")[0].to_i + 1).to_s + "/" + nr.split("/")[1]
|
||||
@invoice.number = new_nr
|
||||
end
|
||||
@user_firms = current_user.user_firms
|
||||
@customers = current_user.customers
|
||||
end
|
||||
|
|
@ -28,7 +34,7 @@ class InvoicesController < ApplicationController
|
|||
def edit
|
||||
@invoice = Invoice.find(params[:id])
|
||||
@user_firms = current_user.user_firms
|
||||
@customers = current_user.customers
|
||||
@customers = current_user.customers
|
||||
end
|
||||
|
||||
def update
|
||||
|
|
|
|||
|
|
@ -25,13 +25,73 @@ module ApplicationHelper
|
|||
|
||||
def errors_to_html(errors)
|
||||
ret = '<div class="row"><div class="col-lg-12 col-md-12 panel-danger"><div class="content-box-header panel-heading"><div class="panel-title">'
|
||||
ret += I18n.t('activerecord.errors.messages.record_invalid', errors: errors.count)
|
||||
ret += I18n.t("activerecord.errors.messages.record_invalid", errors: errors.count)
|
||||
ret += '</div></div><div class="content-box-large box-with-header" style="background:#f9dddd"><ul>'
|
||||
errors.full_messages.each do |msg|
|
||||
ret += "<li>#{msg}</li>"
|
||||
end
|
||||
ret += '</ul></div></div></div>'
|
||||
ret += "</ul></div></div></div>"
|
||||
ret
|
||||
end
|
||||
|
||||
def decimal_to_word(dec)
|
||||
singles = ["", " #{I18n.t('numbers.one')}", " #{I18n.t('numbers.two')}", " #{I18n.t('numbers.three')}", " #{I18n.t('numbers.four')}",
|
||||
" #{I18n.t('numbers.five')}", " #{I18n.t('numbers.six')}", " #{I18n.t('numbers.seven')}", " #{I18n.t('numbers.eight')}", " #{I18n.t('numbers.nine')}"]
|
||||
teens = ["", " #{I18n.t('numbers.eleven')}", " #{I18n.t('numbers.twelve')}", " #{I18n.t('numbers.thirteen')}", " #{I18n.t('numbers.fourteen')}",
|
||||
" #{I18n.t('numbers.fifteen')}", " #{I18n.t('numbers.sixteen')}", " #{I18n.t('numbers.seventeen')}", " #{I18n.t('numbers.eighteen')}", " #{I18n.t('numbers.nineteen')}"]
|
||||
tens = ["", " #{I18n.t('numbers.ten')}", " #{I18n.t('numbers.twenty')}", " #{I18n.t('numbers.thirty')}", " #{I18n.t('numbers.fourty')}",
|
||||
" #{I18n.t('numbers.fifty')}", " #{I18n.t('numbers.sixty')}", " #{I18n.t('numbers.seventy')}", " #{I18n.t('numbers.eighty')}", " #{I18n.t('numbers.ninety')}"]
|
||||
hundreds = ["", " #{I18n.t('numbers.hundred')}", " #{I18n.t('numbers.two_hundred')}", " #{I18n.t('numbers.three_hundred')}", " #{I18n.t('numbers.four_hundred')}",
|
||||
" #{I18n.t('numbers.five_hundred')}", " #{I18n.t('numbers.six_hundred')}", " #{I18n.t('numbers.seven_hudred')}", " #{I18n.t('numbers.eight_hundred')}", " #{I18n.t('numbers.nine_hundred')}"]
|
||||
groups = Array.new
|
||||
groups << ["" ,"" ,""]
|
||||
groups << [" #{I18n.t('numbers.thousand')}" ," #{I18n.t('numbers.thousand1')}" ," #{I18n.t('numbers.thousand2')}"]
|
||||
groups << [" #{I18n.t('numbers.milion')}" ," #{I18n.t('numbers.milion1')}" ," #{I18n.t('numbers.milion2')}"]
|
||||
groups << [" #{I18n.t('numbers.miliard')}"," #{I18n.t('numbers.miliard1')}"," #{I18n.t('numbers.miliard2')}"]
|
||||
groups << [" #{I18n.t('numbers.bilion')}" ," #{I18n.t('numbers.bilion1')}" ," #{I18n.t('numbers.bilion2')}"]
|
||||
groups << [" #{I18n.t('numbers.biliard')}"," #{I18n.t('numbers.biliard1')}"," #{I18n.t('numbers.biliard2')}"]
|
||||
groups << [" #{I18n.t('numbers.trylion')}"," #{I18n.t('numbers.trylion1')}"," #{I18n.t('numbers.trylion2')}"]
|
||||
|
||||
ret = ""
|
||||
number = dec.to_i
|
||||
rest = (dec * 100) % 100
|
||||
if number == 0
|
||||
ret = "#{I18n.t('numbers.zero')}"
|
||||
else
|
||||
if number < 0
|
||||
sign = "#{I18n.t('numbers.minus')}"
|
||||
number = -number
|
||||
else
|
||||
sign = ""
|
||||
end
|
||||
g = 0
|
||||
while number != 0
|
||||
s = (number % 1000) / 100
|
||||
d = (number % 100) / 10
|
||||
j = (number % 10)
|
||||
if d == 1 && j > 0
|
||||
n = j
|
||||
d = 0
|
||||
j = 0
|
||||
else
|
||||
n = 0
|
||||
end
|
||||
if j == 1 && s+d+n == 0
|
||||
k = 0
|
||||
elsif j == 2 || j == 3 || j == 4
|
||||
k = 1
|
||||
else
|
||||
k = 2
|
||||
end
|
||||
ret = hundreds[s] + tens[d] + teens[n] + singles[j] + groups[g][k] + ret
|
||||
g = g + 1
|
||||
number = number / 1000
|
||||
end
|
||||
end
|
||||
ret = sign + ret
|
||||
ret += " PLN #{rest.to_i}/100"
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,26 +4,26 @@
|
|||
<%= raw errors_to_html(@invoice.errors) %>
|
||||
<% end %>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-3"></div>
|
||||
<%= f.label :number, class: "col-sm-2 control-label" %>
|
||||
<div class="col-sm-10">
|
||||
<div class="col-sm-4">
|
||||
<%= f.text_field :number, class: "form-control", placeholder: 'Numer faktury' %>
|
||||
</div>
|
||||
<div class="col-sm-3"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<%= f.label :user_firm, class: "col-sm-2 control-label" %>
|
||||
<div class="col-sm-10">
|
||||
<div class="col-sm-4">
|
||||
<%= f.select :user_firm_id, @user_firms.collect {|uf| [ uf.name, uf.id ] }, {}, {class: "form-control"} %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<%= f.label :customer, class: "col-sm-2 control-label" %>
|
||||
<div class="col-sm-10">
|
||||
<div class="col-sm-4">
|
||||
<%= f.select :customer_id, @customers.collect {|c| [ c.name, c.id ] }, {include_blank: true}, {class: "form-control"} %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<%= f.label :date, class: "col-sm-2 control-label" %>
|
||||
<div class="col-sm-10">
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group date">
|
||||
<%= f.text_field :date, class: "form-control datepicker", placeholder: 'Data wystawienia' %>
|
||||
<span class="input-group-addon">
|
||||
|
|
@ -32,6 +32,16 @@
|
|||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<%= f.label :date_of_payment, class: "col-sm-2 control-label" %>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group date">
|
||||
<%= f.text_field :date_of_payment, class: "form-control datepicker", placeholder: 'Data wystawienia' %>
|
||||
<span class="input-group-addon">
|
||||
<span class="glyphicon glyphicon-calendar">
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
|
|
@ -43,7 +53,6 @@
|
|||
$(function() {
|
||||
// Bootstrap DateTimePicker v4
|
||||
$('.datepicker').datetimepicker({
|
||||
useCurrent: true,
|
||||
locale: 'pl',
|
||||
format: 'YYYY-MM-DD'
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,15 +1,160 @@
|
|||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="content-box-large">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title">Faktura VAT</div>
|
||||
|
||||
</div>
|
||||
<div class="panel-heading"></div>
|
||||
<div class="panel-body">
|
||||
Ut tristique adipiscing mauris, sit amet suscipit metus porta quis. Donec dictum tincidunt erat, eu blandit ligula. Nam sit amet dolor sapien. Quisque velit erat, congue sed suscipit vel, feugiat sit amet enim. Suspendisse interdum enim at mi tempor commodo. Sed tincidunt sed tortor eu scelerisque. Donec luctus malesuada vulputate. Nunc vel auctor metus, vel adipiscing odio. Aliquam aliquet rhoncus libero, at varius nisi pulvinar nec. Aliquam erat volutpat. Donec ut neque mi. Praesent enim nisl, bibendum vitae ante et, placerat pharetra magna. Donec facilisis nisl turpis, eget facilisis turpis semper non. Maecenas luctus ligula tincidunt iasdsd vitae ante et,
|
||||
<br><br>
|
||||
Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque sed consectetur erat. Maecenas in elementum libero. Sed consequat pellentesque ultricies. Ut laoreet vehicula nisl sed placerat. Duis posuere lectus n, eros et hendrerit pellentesque, ante magna condimentum sapien, eget ultrices eros libero non orci. Etiam varius diam lectus.
|
||||
<br><br>
|
||||
<div class="row">
|
||||
<div class="col-md-8"></div>
|
||||
<div class="col-md-4">
|
||||
<div class="row">
|
||||
<div class="col-md-6">Miejsce wystawienia</div><div class="col-md-6"><b><%= 'Rumia' %></b></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">Data wystawienia</div><div class="col-md-6"><b><%= @invoice.date %></b></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">Data sprzedaży</div><div class="col-md-6"><b><%= @invoice.date %></b></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h1> </h1></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4"></div><div class="col-md-4"><h1>Faktura VAT nr <%= @invoice.number %></h1></div><div class="col-md-4"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h1> </h1></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h3><b>Sprzedawca:</b></h3></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h4><%= @invoice.user_firm.name %></h4></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h4><%= @invoice.user_firm.street %></h4></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h4><%= @invoice.user_firm.postcode %> <%= @invoice.user_firm.city %></h4></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h4>NIP: <%= @invoice.user_firm.nip %></h4></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h3><b>Nabywca:</b></h3></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h4><%= @invoice.customer.name %></h4></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h4><%= @invoice.customer.street %></h4></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h4><%= @invoice.customer.postcode %> <%= @invoice.user_firm.city %></h4></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h4>NIP: <%= @invoice.customer.nip %></h4></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12"><h1> </h1></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Lp</th>
|
||||
<th>Nazwa towaru/usługi</th>
|
||||
<th>PKWiU</th>
|
||||
<th>Ilość</th>
|
||||
<th>j.m.</th>
|
||||
<th>Cena netto</th>
|
||||
<th>%VAT</th>
|
||||
<th>Wartość netto</th>
|
||||
<th>Kwota VAT</th>
|
||||
<th>Wartość brutto</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>Usługa transportowa</td>
|
||||
<td></td>
|
||||
<td class="text-right">1</td>
|
||||
<td class="text-right">szt.</td>
|
||||
<td class="text-right">10 000,00</td>
|
||||
<td class="text-right">23%</td>
|
||||
<td class="text-right">10 000,00</td>
|
||||
<td class="text-right">2 300,00</td>
|
||||
<td class="text-right">12 300,00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>Usługa informatyczna</td>
|
||||
<td></td>
|
||||
<td class="text-right">1</td>
|
||||
<td class="text-right">szt.</td>
|
||||
<td class="text-right">10 000,00</td>
|
||||
<td class="text-right">23%</td>
|
||||
<td class="text-right">10 000,00</td>
|
||||
<td class="text-right">2 300,00</td>
|
||||
<td class="text-right">12 300,00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
<td>Usługa towarowa</td>
|
||||
<td></td>
|
||||
<td class="text-right">1</td>
|
||||
<td class="text-right">szt.</td>
|
||||
<td class="text-right">10 000,00</td>
|
||||
<td class="text-right">23%</td>
|
||||
<td class="text-right">10 000,00</td>
|
||||
<td class="text-right">2 300,00</td>
|
||||
<td class="text-right">12 300,00</td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6"></div>
|
||||
<div class="col-md-6">
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr class="info">
|
||||
<th>Podsumowanie wg stawki VAT</th>
|
||||
<th>Wartość netto</th>
|
||||
<th>Kwota VAT</th>
|
||||
<th>Wartość brutto</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Podatek VAT 23%</td>
|
||||
<td class="text-right">30 000,00</td>
|
||||
<td class="text-right">6 900,00</td>
|
||||
<td class="text-right">36 900,00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Razem:</b></td>
|
||||
<td class="text-right"><b>30 000,00<b></td>
|
||||
<td class="text-right"><b>6 900,00<b></td>
|
||||
<td class="text-right"><b>36 900,00<b></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
<% @invoices.each do |invoice| %>
|
||||
<tr>
|
||||
<td><%= invoice.number %></td>
|
||||
<td><%= link_to invoice.number, invoice_path(invoice) %></td>
|
||||
<td><%= invoice.customer.name %></td>
|
||||
<td><%= number_with_precision(invoice.netto_amount, precision: 2) %></td>
|
||||
<td><%= invoice.date %></td>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<div class="col-lg-8 col-md-12 panel-default">
|
||||
<div class="col-lg-12 col-md-12 panel-default">
|
||||
<div class="content-box-header panel-heading">
|
||||
<div class="panel-title">Nowa faktura</div>
|
||||
<div class="panel-options">
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="content-box-large box-with-header">
|
||||
<%= decimal_to_word(127786.9) %><br />
|
||||
<%= decimal_to_word(599.99) %><br />
|
||||
Pellentesque luctus quam quis consequat vulputate. Sed sit amet diam ipsum. <br>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -252,3 +252,60 @@ pl:
|
|||
long: "%B %d, %Y %H:%M"
|
||||
short: "%d %b %H:%M"
|
||||
pm: po południu
|
||||
numbers:
|
||||
minus: 'minus'
|
||||
zero: 'zero'
|
||||
one: 'jeden'
|
||||
two: 'dwa'
|
||||
three: 'trzy'
|
||||
four: 'cztery'
|
||||
five: 'pięć'
|
||||
six: 'sześć'
|
||||
seven: 'siedem'
|
||||
eight: 'osiem'
|
||||
nine: 'dziewięć'
|
||||
eleven: 'jedenaście'
|
||||
twelve: 'dwanaście'
|
||||
thirteen: 'trzynaście'
|
||||
fourteen: 'czternaście'
|
||||
fifteen: 'piętnaście'
|
||||
sixteen: 'szesnaście'
|
||||
seventeen: 'siedemnaście'
|
||||
eighteen: 'osiemnaście'
|
||||
nineteen: 'dziewiętnaście'
|
||||
ten: 'dziesięć'
|
||||
twenty: 'dwadzieścia'
|
||||
thirty: 'trzydzieści'
|
||||
fourty: 'czterdzieści'
|
||||
fifty: 'pięćdziesiąt'
|
||||
sixty: 'sześćdziesiąt'
|
||||
seventy: 'siedemdziesiąt'
|
||||
eighty: 'osiemdziesiąt'
|
||||
ninety: 'dziewięćdziesiąt'
|
||||
hundred: 'sto'
|
||||
two_hudred: 'dwieście'
|
||||
three_hundred: 'trzysta'
|
||||
four_hundred: 'czterysta'
|
||||
five_hundred: 'pięćset'
|
||||
six_hundred: 'sześćset'
|
||||
seven_hudred: 'siedemset'
|
||||
eight_hundred: 'osiemset'
|
||||
nine_hundred: 'dziewięćset'
|
||||
thousand: 'tysiąc'
|
||||
thousand1: 'tysiące'
|
||||
thousand2: 'tysięcy'
|
||||
milion: 'milion'
|
||||
milion1: 'miliony'
|
||||
milion2: 'milionów'
|
||||
miliard: 'miliard'
|
||||
miliard1: 'miliardy'
|
||||
miliard2: 'miliardów'
|
||||
bilion: 'bilion'
|
||||
bilion1: 'biliony'
|
||||
bilion2: 'bilionów'
|
||||
biliard: 'biliard'
|
||||
biliard1: 'biliardy'
|
||||
biliard2: 'biliardów'
|
||||
trylion: 'trylion'
|
||||
trylion1: 'tryliony'
|
||||
trylion2: 'tryliardów'
|
||||
|
|
|
|||
Loading…
Reference in New Issue