From ca589c1df7ab3905731918fb702095b7f6b9ef7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joonas=20Saraj=C3=A4rvi?= Date: Mon, 6 Nov 2023 17:08:11 +0100 Subject: [PATCH 1/3] AE-1836 Add LaskuPvm when invoicing for December --- etp-backend/src/main/clj/solita/etp/service/laskutus.clj | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/etp-backend/src/main/clj/solita/etp/service/laskutus.clj b/etp-backend/src/main/clj/solita/etp/service/laskutus.clj index 95350f703..292ef34da 100644 --- a/etp-backend/src/main/clj/solita/etp/service/laskutus.clj +++ b/etp-backend/src/main/clj/solita/etp/service/laskutus.clj @@ -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))) @@ -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))] @@ -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]] @@ -238,6 +240,8 @@ ["NimikeNro" "RA0001"]] (mapcat #(tilausrivit-for-laatija % laskutuskieli) (->> laatijat vals (sort-by :nimi)))))] + (filter #(not (nil? %))) + vec xml/simple-elements (apply (fn [& elements] (xml/element (xml/qname laskutustieto-ns "Myyntitilaus") From 4b05e95deb52b8fa27c7f73965e194f1ded35227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joonas=20Saraj=C3=A4rvi?= Date: Fri, 10 Nov 2023 11:15:57 +0100 Subject: [PATCH 2/3] AE-1836 Tests and cleanup - Use filterv instead of filter and vec - Test that LaskuPvm is set only in the new-year laskutus --- .../main/clj/solita/etp/service/laskutus.clj | 3 +- .../clj/solita/etp/service/laskutus_test.clj | 62 +++++++++++-------- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/etp-backend/src/main/clj/solita/etp/service/laskutus.clj b/etp-backend/src/main/clj/solita/etp/service/laskutus.clj index 292ef34da..9e1387648 100644 --- a/etp-backend/src/main/clj/solita/etp/service/laskutus.clj +++ b/etp-backend/src/main/clj/solita/etp/service/laskutus.clj @@ -240,8 +240,7 @@ ["NimikeNro" "RA0001"]] (mapcat #(tilausrivit-for-laatija % laskutuskieli) (->> laatijat vals (sort-by :nimi)))))] - (filter #(not (nil? %))) - vec + (filterv #(not (nil? %))) xml/simple-elements (apply (fn [& elements] (xml/element (xml/qname laskutustieto-ns "Myyntitilaus") diff --git a/etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj b/etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj index e942cbbaa..3e2045510 100644 --- a/etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj +++ b/etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj @@ -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) @@ -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*) @@ -254,31 +261,34 @@ :laatijat vals first - :energiatodistukset) - xml-str (->> laskutustieto - (laskutus-service/laskutustieto-xml (Instant/now)) - xml/emit-str)] - (t/is (str/includes? xml-str (str "" - laskutus-asiakastunnus - "4")) - (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 "ETP")))) + :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 "" + laskutus-asiakastunnus + "4")) + (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 (= laskupvm-expected? (str/includes? xml-str ""))) + (t/is (str/includes? xml-str "ETP")))) + laskupvm-cases))) (t/deftest tasmaytysraportti-test (let [{:keys [yritykset laatijat]} (test-data-set 0) From a4a965db2e73ea1a82283bb635d32becaa26562b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joonas=20Saraj=C3=A4rvi?= Date: Fri, 10 Nov 2023 12:50:02 +0100 Subject: [PATCH 3/3] Add t/testing blocks for LaskuPvm tests --- .../src/test/clj/solita/etp/service/laskutus_test.clj | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj b/etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj index 3e2045510..c2f9d130b 100644 --- a/etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj +++ b/etp-backend/src/test/clj/solita/etp/service/laskutus_test.clj @@ -286,7 +286,12 @@ :allekirjoitusaika (.format laskutus-service/date-formatter-fi))) xml-str)) - (t/is (= laskupvm-expected? (str/includes? xml-str ""))) + (if laskupvm-expected? + (t/testing (str "Test that LaskuPvm is present, as expected on " now) + (t/is (str/includes? xml-str ""))) + (t/testing (str "Test that LaskuPvm is absent, as expected on " now) + (t/is (not (str/includes? xml-str ""))))) + (t/is (str/includes? xml-str "ETP")))) laskupvm-cases)))