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

Commit

Permalink
Merge pull request #1039 from solita/feature/ae-1836-laskupvm-in-january
Browse files Browse the repository at this point in the history
AE-1836 Add LaskuPvm when invoicing for December
  • Loading branch information
muep authored Nov 10, 2023
2 parents d861992 + a4a965d commit 2dfa4a1
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 27 deletions.
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)
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

0 comments on commit 2dfa4a1

Please sign in to comment.