lib/polish_invoicer/validator.rb in polish_invoicer-0.0.17 vs lib/polish_invoicer/validator.rb in polish_invoicer-0.0.18

- old
+ new

@@ -15,10 +15,11 @@ check_arrays check_booleans check_price check_vat check_proforma + check_create_and_payment_date @errors.empty? end private @@ -69,30 +70,37 @@ @errors[:trade_date] = 'Data sprzedaży musi być typu Date' unless @invoice.trade_date.is_a?(Date) @errors[:payment_date] = 'Termin płatności musi być typu Date' unless @invoice.payment_date.is_a?(Date) end def check_price - unless @invoice.price.is_a?(Numeric) - @errors[:price] = 'Cena musi być liczbą' - else + if @invoice.price.is_a?(Numeric) @errors[:price] = 'Cena musi być liczbą dodatnią' unless @invoice.price > 0 + else + @errors[:price] = 'Cena musi być liczbą' end end def check_vat - unless Vat.valid?(@invoice.vat) - @errors[:vat] = 'Stawka VAT spoza listy dopuszczalnych wartości' - else + if Vat.valid?(@invoice.vat) if Vat.zw?(@invoice.vat) && blank?(@invoice.no_vat_reason) @errors[:no_vat_reason] = 'Konieczne jest podanie podstawy prawnej zwolnienia z podatku VAT' end + else + @errors[:vat] = 'Stawka VAT spoza listy dopuszczalnych wartości' end end def check_proforma return unless @invoice.proforma return unless @invoice.paid @errors[:paid] = 'Proforma nie może być opłacona' + end + + def check_create_and_payment_date + return if @errors[:create_date] + return if @errors[:payment_date] + return if @invoice.create_date <= @invoice.payment_date + @errors[:payment_date] = 'Termin płatności musi być wcześniejszy niż data wystawienia' end def blank?(value) value.to_s.strip == '' end