From 93e8e0f66130720bf3214b4e52355c120184fb45 Mon Sep 17 00:00:00 2001 From: Clemens Manert Date: Tue, 27 Oct 2020 17:17:15 +0100 Subject: [PATCH] Fix missing gross in invoice --- app/pdfs/01_messvertrag.rb | 2 +- app/pdfs/02_abwicklungsvertrag.rb | 2 +- app/pdfs/a0x_general.rb | 9 +++++---- app/pdfs/generator.rb | 2 +- lib/buzzn/transactions/admin/contract/document.rb | 5 ++++- spec/requests/admin/contract_shared.rb | 5 +++++ spec/requests/admin/contract_spec.rb | 2 +- spec/transactions/admin/contract/document_spec.rb | 5 +++++ spec/transactions/shared_nested_person.rb | 10 +++++----- 9 files changed, 28 insertions(+), 14 deletions(-) diff --git a/app/pdfs/01_messvertrag.rb b/app/pdfs/01_messvertrag.rb index 777af6b65..1ddf9bb80 100644 --- a/app/pdfs/01_messvertrag.rb +++ b/app/pdfs/01_messvertrag.rb @@ -8,7 +8,7 @@ class MeteringPointOperatorContract < Generator attr_reader :contract - def initialize(contract) + def initialize(contract, *) super @contract = contract end diff --git a/app/pdfs/02_abwicklungsvertrag.rb b/app/pdfs/02_abwicklungsvertrag.rb index 2a384403f..a5f29ce03 100644 --- a/app/pdfs/02_abwicklungsvertrag.rb +++ b/app/pdfs/02_abwicklungsvertrag.rb @@ -8,7 +8,7 @@ class LocalpoolProcessingContract < Generator attr_reader :contract - def initialize(contract) + def initialize(contract, *) super @contract = contract end diff --git a/app/pdfs/a0x_general.rb b/app/pdfs/a0x_general.rb index 3db0b34f7..ad6358762 100644 --- a/app/pdfs/a0x_general.rb +++ b/app/pdfs/a0x_general.rb @@ -9,9 +9,10 @@ class A0xGeneral < Generator attr_reader :contract - def initialize(contract) + def initialize(contract, vat) super @contract = contract + @vat = vat end protected @@ -73,10 +74,10 @@ def build_meters def build_tariff(tariff) { - baseprice_euro_netto: german_div(tariff.baseprice_cents_per_month_before_taxes), - baseprice_euro_brutto: german_div(tariff.baseprice_cents_per_month_after_taxes), + baseprice_euro_brutto: german_div(tariff.baseprice_cents_per_month_before_taxes * 100 * @vat.amount), + baseprice_euro_netto: german_div(tariff.baseprice_cents_per_month_before_taxes * 100 * @vat.amount), energyprice_cents_netto: german_div(tariff.energyprice_cents_per_kwh_before_taxes*100), - energyprice_cents_brutto: german_div(tariff.energyprice_cents_per_kwh_after_taxes*100), + energyprice_cents_brutto: german_div(tariff.energyprice_cents_per_kwh_before_taxes*100), } end diff --git a/app/pdfs/generator.rb b/app/pdfs/generator.rb index 97787b2b4..630c4fb66 100644 --- a/app/pdfs/generator.rb +++ b/app/pdfs/generator.rb @@ -43,7 +43,7 @@ def respond_to_missing?(*) include Import.reader['services.pdf_html_generator'] - def initialize(root_object, **) + def initialize(root_object, *) @logger = Buzzn::Logger.new(self) @root = root_object @builder = Builders::StructBuilder.new(PdfStruct) diff --git a/lib/buzzn/transactions/admin/contract/document.rb b/lib/buzzn/transactions/admin/contract/document.rb index d90ac5257..7bc850d4b 100644 --- a/lib/buzzn/transactions/admin/contract/document.rb +++ b/lib/buzzn/transactions/admin/contract/document.rb @@ -52,7 +52,10 @@ def check_generator_name(generator_names:, params:, **) end def generator(generator_names:, params:, resource:) - generator_names[params[:template]].new(resource.object) + # TODO replace by `Vat.current` there is a requirement to have here the previous, + # vat in the timespan between July and Dezember 2020 + # Dont ask why. + generator_names[params[:template]].new(resource.object, Vat.all[-2]) end def generate_document(resource:, params:, generator:, **) diff --git a/spec/requests/admin/contract_shared.rb b/spec/requests/admin/contract_shared.rb index b62a03e7f..86dcc8f39 100644 --- a/spec/requests/admin/contract_shared.rb +++ b/spec/requests/admin/contract_shared.rb @@ -4,6 +4,11 @@ let(:person2) { create(:person, :with_bank_account) } + before(:all) do + create(:vat, amount: 0.19, begin_date: Date.new(2000, 1, 1)) + create(:vat, amount: 0.16, begin_date: Date.new(2020, 7, 1)) + end + let(:organization) do org = create(:organization, :with_address, :with_legal_representation) org.contact = person diff --git a/spec/requests/admin/contract_spec.rb b/spec/requests/admin/contract_spec.rb index 41ea264a1..f4b4ad292 100644 --- a/spec/requests/admin/contract_spec.rb +++ b/spec/requests/admin/contract_spec.rb @@ -1063,7 +1063,7 @@ def app { template: send(contract).pdf_generators.first.name.split("::").last.underscore } end - it '201' do + it '201', :thisone => true do POST path, $admin, params expect(response).to have_http_status(201) end diff --git a/spec/transactions/admin/contract/document_spec.rb b/spec/transactions/admin/contract/document_spec.rb index e3cdbcec7..b7964ecdf 100644 --- a/spec/transactions/admin/contract/document_spec.rb +++ b/spec/transactions/admin/contract/document_spec.rb @@ -30,6 +30,11 @@ let!(:localpoolr) { Admin::LocalpoolResource.all(operator).retrieve(localpool.id) } let(:result) { Transactions::Admin::Contract::Document.new.(params: params, resource: resource) } + before(:all) do + create(:vat, amount: 0.19, begin_date: Date.new(2000, 1, 1)) + create(:vat, amount: 0.16, begin_date: Date.new(2020, 7, 1)) + end + context 'localpool power taker' do let(:contract) { create(:contract, :localpool_powertaker, :with_tariff, localpool: localpool) } diff --git a/spec/transactions/shared_nested_person.rb b/spec/transactions/shared_nested_person.rb index 8739b7d88..4cfb0c822 100644 --- a/spec/transactions/shared_nested_person.rb +++ b/spec/transactions/shared_nested_person.rb @@ -78,13 +78,13 @@ preferred_language: 'de' } }, - resource: resource}.merge(eextra_args)).value! + resource: resource}.merge(eextra_args)) end - it { expect(result2).to be_a resource.class } - it { expect(result2.send(method).first_name).to eq 'Elvis' } - it { expect(result2.send(method)).to be_a PersonResource } - + it { expect(result2.value!).to be_a resource.class } + it { expect(result2).to be_success } + it { expect(result2.value!.send(method)).to be_a PersonResource } + it { expect(result2.value!.send(method).first_name).to eq 'Elvis' } end end