Skip to content
This repository has been archived by the owner on Feb 7, 2024. It is now read-only.

AE-1836 Add LaskuPvm when invoicing for December #1039

Merged
merged 3 commits into from
Nov 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion etp-backend/src/main/clj/solita/etp/service/laskutus.clj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
[solita.etp.config :as config]
[solita.etp.db :as db]
[solita.etp.service.file :as file-service])
(:import (java.time Instant LocalDate ZoneId)
(:import (java.time Instant LocalDate Month ZoneId)
(java.time.temporal ChronoUnit)
(java.time.format DateTimeFormatter)))

Expand Down Expand Up @@ -209,6 +209,7 @@
laatijat]}]
(let [today (LocalDate/ofInstant now timezone)
last-month (.minusMonths today 1)
december-laskutus? (-> last-month .getMonth (= Month/DECEMBER))
formatted-last-day-of-last-month (->> (.lengthOfMonth last-month)
(.withDayOfMonth last-month)
(.format date-formatter-xml))]
Expand All @@ -217,6 +218,7 @@
["SektoriKoodi" "01"]
["TilausLajiKoodi" "Z001"]
["PalveluLuontiPvm" formatted-last-day-of-last-month]
(if december-laskutus? ["LaskuPvm" formatted-last-day-of-last-month] nil)
["HinnoitteluPvm" formatted-last-day-of-last-month]
["TilausAsiakasTyyppi"
["AsiakasNro" laskutus-asiakastunnus]]
Expand All @@ -238,6 +240,7 @@
["NimikeNro" "RA0001"]]
(mapcat #(tilausrivit-for-laatija % laskutuskieli)
(->> laatijat vals (sort-by :nimi)))))]
(filterv #(not (nil? %)))
xml/simple-elements
(apply (fn [& elements]
(xml/element (xml/qname laskutustieto-ns "Myyntitilaus")
Expand Down
67 changes: 41 additions & 26 deletions etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
[solita.etp.service.laskutus :as laskutus-service]
[solita.etp.service.file :as file-service]
[solita.common.smtp-test :as smtp-test])
(:import (java.time Instant)))
(:import (java.time Instant OffsetDateTime ZoneOffset)))

(t/use-fixtures :each ts/fixture)

Expand Down Expand Up @@ -240,6 +240,13 @@
".*"
allekirjoitusaika)))


(def laskupvm-cases
[{:now (Instant/from (OffsetDateTime/of 2023 12 1 4 0 0 0 (ZoneOffset/ofTotalSeconds 0)))
:laskupvm-expected? false}
{:now (Instant/from (OffsetDateTime/of 2024 1 1 4 0 0 0 (ZoneOffset/ofTotalSeconds 0)))
:laskupvm-expected? true}])

(t/deftest laskutustiedot-xml-test
(let [{:keys [yritykset]} (test-data-set 0)
Juholei marked this conversation as resolved.
Show resolved Hide resolved
laskutus (laskutus-service/find-kuukauden-laskutus ts/*db*)
Expand All @@ -254,31 +261,39 @@
:laatijat
vals
first
:energiatodistukset)
xml-str (->> laskutustieto
(laskutus-service/laskutustieto-xml (Instant/now))
xml/emit-str)]
(t/is (str/includes? xml-str (str "<AsiakasNro>"
laskutus-asiakastunnus
"</AsiakasNro")))
(t/is (str/includes? xml-str "<TilausMaaraArvo>4</TilausMaaraArvo>"))
(t/is (re-find (tilausrivi-pattern (-> laskutustieto-energiatodistukset
first
:id)
(->> laskutustieto-energiatodistukset
first
:allekirjoitusaika
(.format laskutus-service/date-formatter-fi)))
xml-str))
(t/is (re-find (tilausrivi-pattern (-> laskutustieto-energiatodistukset
second
:id)
(->> laskutustieto-energiatodistukset
second
:allekirjoitusaika
(.format laskutus-service/date-formatter-fi)))
xml-str))
(t/is (str/includes? xml-str "<KumppaniNro>ETP</KumppaniNro>"))))
:energiatodistukset)]
(run! (fn [{:keys [now laskupvm-expected?]}]
(let [xml-str (->> laskutustieto
(laskutus-service/laskutustieto-xml now)
xml/emit-str)]
(t/is (str/includes? xml-str (str "<AsiakasNro>"
laskutus-asiakastunnus
"</AsiakasNro")))
(t/is (str/includes? xml-str "<TilausMaaraArvo>4</TilausMaaraArvo>"))
(t/is (re-find (tilausrivi-pattern (-> laskutustieto-energiatodistukset
first
:id)
(->> laskutustieto-energiatodistukset
first
:allekirjoitusaika
(.format laskutus-service/date-formatter-fi)))
xml-str))
(t/is (re-find (tilausrivi-pattern (-> laskutustieto-energiatodistukset
second
:id)
(->> laskutustieto-energiatodistukset
second
:allekirjoitusaika
(.format laskutus-service/date-formatter-fi)))
xml-str))
(if laskupvm-expected?
(t/testing (str "Test that LaskuPvm is present, as expected on " now)
(t/is (str/includes? xml-str "<LaskuPvm>")))
(t/testing (str "Test that LaskuPvm is absent, as expected on " now)
(t/is (not (str/includes? xml-str "<LaskuPvm>")))))

(t/is (str/includes? xml-str "<KumppaniNro>ETP</KumppaniNro>"))))
laskupvm-cases)))

(t/deftest tasmaytysraportti-test
(let [{:keys [yritykset laatijat]} (test-data-set 0)
Expand Down