From: Julien Moutinho Date: Wed, 28 Jan 2026 00:22:36 +0000 (+0100) Subject: update(log): invoice #org3sale2 X-Git-Url: https://git.sourcephile.fr/tmp/julm/literate-invoice.git/commitdiff_plain update(log): invoice #org3sale2 --- diff --git a/tests/Tests/Invoice.hs b/tests/Tests/Invoice.hs index d97348e..86f27ac 100644 --- a/tests/Tests/Invoice.hs +++ b/tests/Tests/Invoice.hs @@ -489,7 +489,7 @@ ngipkgsLog = { invoiceLogDate = "2025-12-29" , invoiceLogDuration = 0.5 , invoiceLogAction = ["review"] - , invoiceLogScope = ["NGIpkgs", "Funkwhale"] + , invoiceLogScope = ["NGIpkgs", "Funkwhale"] -- goes into NGI Review , invoiceLogReferences = ["https://github.com/ngi-nix/ngipkgs/pull/1707#discussion_r2651644145"] , invoiceLogDescription = "" } @@ -545,7 +545,7 @@ ngipkgsLog = { invoiceLogDate = "2026-01-07" , invoiceLogDuration = 1 , invoiceLogAction = ["documentation"] - , invoiceLogScope = ["NGIpkgs", "Manuals"] + , invoiceLogScope = ["NGIpkgs", "Manuals"] -- goes into NGI Core , invoiceLogReferences = ["https://github.com/ngi-nix/ngipkgs/pull/1891"] , invoiceLogDescription = "address reviewer’s comment" } @@ -553,7 +553,7 @@ ngipkgsLog = { invoiceLogDate = "2026-01-09" , invoiceLogDuration = 2 , invoiceLogAction = ["documentation"] - , invoiceLogScope = ["NGIpkgs", "Manuals"] + , invoiceLogScope = ["NGIpkgs", "Manuals"] -- goes into NGI Core , invoiceLogReferences = [] , invoiceLogDescription = "address reviewer’s comments" } @@ -593,7 +593,7 @@ ngipkgsLog = { invoiceLogDate = "2026-01-12" , invoiceLogDuration = 6 , invoiceLogAction = ["documentation"] - , invoiceLogScope = ["NGIpkgs", "Manuals"] + , invoiceLogScope = ["NGIpkgs", "Manuals"] -- goes into NGI Core , invoiceLogReferences = [] , invoiceLogDescription = "render options" } @@ -601,7 +601,7 @@ ngipkgsLog = { invoiceLogDate = "2026-01-13" , invoiceLogDuration = 1 , invoiceLogAction = ["documentation"] - , invoiceLogScope = ["NGIpkgs", "Manuals"] + , invoiceLogScope = ["NGIpkgs", "Manuals"] -- goes into NGI Core , invoiceLogReferences = [] , invoiceLogDescription = "update" } @@ -617,7 +617,7 @@ ngipkgsLog = { invoiceLogDate = "2026-01-19" , invoiceLogDuration = 2 , invoiceLogAction = ["documentation"] - , invoiceLogScope = ["NGIpkgs", "Manuals"] + , invoiceLogScope = ["NGIpkgs", "Manuals"] -- goes into NGI Core , invoiceLogReferences = [] , invoiceLogDescription = "split into several PDF" } @@ -625,7 +625,7 @@ ngipkgsLog = { invoiceLogDate = "2026-01-22" , invoiceLogDuration = 4 , invoiceLogAction = ["development"] - , invoiceLogScope = ["NGIpkgs", "Manuals"] + , invoiceLogScope = ["NGIpkgs", "Manuals"] -- goes into NGI Core , invoiceLogReferences = ["https://github.com/ngi-nix/ngipkgs/pull/2010"] , invoiceLogDescription = "address reviewers’ concerns" } @@ -637,6 +637,30 @@ ngipkgsLog = , invoiceLogReferences = [] , invoiceLogDescription = "weekly meeting" } + , InvoiceLog + { invoiceLogDate = "2026-01-25" + , invoiceLogDuration = 4 + , invoiceLogAction = ["development"] + , invoiceLogScope = ["NGIpkgs", "Seppo"] + , invoiceLogReferences = [] + , invoiceLogDescription = "begin packaging" + } + , InvoiceLog + { invoiceLogDate = "2026-01-26" + , invoiceLogDuration = 5 + , invoiceLogAction = ["development"] + , invoiceLogScope = ["NGIpkgs", "Seppo"] + , invoiceLogReferences = [] + , invoiceLogDescription = "continue packaging" + } + , InvoiceLog + { invoiceLogDate = "2026-01-27" + , invoiceLogDuration = 5 + , invoiceLogAction = ["development"] + , invoiceLogScope = ["NGIpkgs", "Seppo"] + , invoiceLogReferences = [] + , invoiceLogDescription = "continue packaging" + } ] invoiceRateNGIpkgs = @@ -701,9 +725,58 @@ invoices = and $ [ inv & invoiceLogDate & (>= "2025-12-23") , inv & invoiceLogDate & (<= "2026-12-31") - , or $ + , inv & invoiceLogScope & (/= ["NGIpkgs", "Manuals"]) + , inv & invoiceLogScope & (/= ["NGIpkgs", "Funkwhale"]) + , not $ + and $ + [ inv & invoiceLogDate & (>= "2026-01-09") + , inv & invoiceLogDate & (<= "2026-01-28") + , inv & invoiceLogAction & (== ["organization"]) + , inv & invoiceLogScope & (== ["NGIpkgs"]) + ] + & list + ] + & list + } + , InvoiceId + { invoiceIdRecipient = Tests.Organization.nixosFoundationNGITeam + , invoiceIdType = InvoiceTypeSale + , invoiceIdCount = 3 + } + := let invoiceEmittedOn = "2026-01-28" + in invoice + { invoiceOrders = ["contract n°2026-FixMe"] + , invoiceEmittedOn + , invoicePaymentDueBefore = invoiceEmittedOn & Time.addLocalTime (31 * Time.nominalDay) + , invoiceIssuer = Tests.Organization.julmInfo + , invoiceRecipient = Tests.Organization.nixosFoundationNGITeam + , invoiceRates = invoiceRateNGIpkgs + , invoiceMentions = + [ InvoiceMentionTVANonApplicable + , InvoiceMentionIndemnitéForfaitaire + , InvoiceMentionIndemnitéTaux (12.15 :: Amount 100 (UnitName "%")) + ] + , invoiceLogs = + ngipkgsLog + & List.filter \inv -> + or $ + [ and $ [ inv & invoiceLogDate & (>= "2026-01-21") - , inv & invoiceLogScope & (/= ["NGIpkgs", "Manuals"]) + , inv & invoiceLogDate & (<= "2026-12-31") + , inv & invoiceLogScope & (== ["NGIpkgs", "Manuals"]) + ] + & list + , and $ + [ inv & invoiceLogDate & (>= "2025-12-29") + , inv & invoiceLogDate & (<= "2026-12-31") + , inv & invoiceLogScope & (== ["NGIpkgs", "Funkwhale"]) + ] + & list + , and $ + [ inv & invoiceLogDate & (>= "2026-01-09") + , inv & invoiceLogDate & (<= "2026-01-28") + , inv & invoiceLogAction & (== ["organization"]) + , inv & invoiceLogScope & (== ["NGIpkgs"]) ] & list ] diff --git a/tests/Tests/Invoice/org3sale2.html b/tests/Tests/Invoice/org3sale2.html index bea9fa2..1559851 100644 --- a/tests/Tests/Invoice/org3sale2.html +++ b/tests/Tests/Invoice/org3sale2.html @@ -1,2 +1,2 @@ -julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03

Invoice

InvoiceIdentifier:

org3sale2

InvoiceType:

sale

InvoiceOrders:
-

contract n°2026-03

InvoiceEmittedOn:

2026-01-27

InvoicePaymentDueBefore:

2026-02-27

Seller:
Name:

julminfo

Address:

3, place du Monument

Mairie - Bureau 1

23340 Gentioux-Pigerolles France

SIREN:

942798083

IBAN:

FR18 2004 1010 0820 3735 3D02 912

Admin:
Name:

Julien Moutinho

Email:
Buyer:
Name:

Stichting NixOS Foundation

Address:

Korte Lijnbaanssteeg 1-4318

1012 SL Amsterdam Netherlands

Admin:
Department:
Name:

Nix@NGI Team

Email:
Admin:
Name:

Daniel Ramirez

Email:

Grand totals

Time frame

Workload

To pay (excl. taxes)

2025-12-23

2026-01-23

60.00 h

1875.00 €

Mandatory legal notices

—

VAT not applicable, art. 293 B of the French General Tax Code.

—

Fixed compensation for recovery costs in case of late payment: 40.00 €

—

Late payment penalty rate (applicable from 2026-02-28): 12.15 % × unpaid amount × number of days late / 365.25

julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03

1/4

Summary

#

Type

Scope

Action

Time frame

Rate

(excl. taxes.)

Quantity

Total

(excl. taxes.)

1

service

NGIpkgs

organization

2026-01-09

2026-01-23

31.25 € / h

5.50 h

(9.17%)

171.88 €

2

service

NGIpkgs / BEAM

development

2025-12-30

2025-12-30

31.25 € / h

4.00 h

(6.67%)

125.00 €

3

service

NGIpkgs / Bonfire

development

2025-12-23

2026-01-09

31.25 € / h

36.00 h

(60.0%)

1125.00 €

4

service

NGIpkgs / Funkwhale

review

2025-12-29

2025-12-29

31.25 € / h

0.50 h

(0.83%)

15.62 €

5

service

NGIpkgs / Manuals

development

2026-01-22

2026-01-22

31.25 € / h

4.00 h

(6.67%)

125.00 €

6

service

NGIpkgs / dnsvizor

development

2026-01-11

2026-01-12

31.25 € / h

10.00 h

(16.67%)

312.50 €

2/4

julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03 — Summary

Details

#

Date

Duration

Scope

Action

References

Description

1

2025-12-23

2.00 h

NGIpkgs / Bonfire

development

address reviewers’ concerns

2

2025-12-24

4.00 h

NGIpkgs / Bonfire

development

update Bonfire and report issues upstream

3

2025-12-24

2.00 h

NGIpkgs / Bonfire

development

update Bonfire to fix bugs

4

2025-12-25

6.00 h

NGIpkgs / Bonfire

development

update and fix bugs

5

2025-12-26

1.00 h

NGIpkgs / Bonfire

development

update to fix bugs

6

2025-12-29

2.00 h

NGIpkgs / Bonfire

development

add more tests

7

2025-12-29

0.50 h

NGIpkgs / Funkwhale

review

8

2025-12-30

4.00 h

NGIpkgs / BEAM

development

improve buildMix & mixRelease for packaging Elixir software

9

2026-01-01

4.00 h

NGIpkgs / Bonfire

development

support other flavours

10

2026-01-03

4.00 h

NGIpkgs / Bonfire

development

support other flavours, and make update more resilient

11

2026-01-04

2.00 h

NGIpkgs / Bonfire

development

provide upstream with reproducers

12

2026-01-05

2.00 h

NGIpkgs / Bonfire

development

update to latest version

13

2026-01-07

5.00 h

NGIpkgs / Bonfire

development

fix updating

14

2026-01-09

2.00 h

NGIpkgs / Bonfire

development

answer upstream’s questions

15

2026-01-11

5.00 h

NGIpkgs / dnsvizor

development

replace hillingar to package MirageOS unikernels

julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03 — Details

3/4

#

Date

Duration

Scope

Action

References

Description

16

2026-01-09

2.00 h

NGIpkgs

organization

weekly meeting

17

2026-01-12

5.00 h

NGIpkgs / dnsvizor

development

remove the need for --allow-import-from-derivation

18

2026-01-16

2.00 h

NGIpkgs

organization

weekly meeting

19

2026-01-22

4.00 h

NGIpkgs / Manuals

development

address reviewers’ concerns

20

2026-01-23

1.50 h

NGIpkgs

organization

weekly meeting

4/4

julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03 — Details

\ No newline at end of file +julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03

Invoice

InvoiceIdentifier:

org3sale2

InvoiceType:

sale

InvoiceOrders:
-

contract n°2026-03

InvoiceEmittedOn:

2026-01-27

InvoicePaymentDueBefore:

2026-02-27

Seller:
Name:

julminfo

Address:

3, place du Monument

Mairie - Bureau 1

23340 Gentioux-Pigerolles France

SIREN:

942798083

IBAN:

FR18 2004 1010 0820 3735 3D02 912

Admin:
Name:

Julien Moutinho

Email:
Buyer:
Name:

Stichting NixOS Foundation

Address:

Korte Lijnbaanssteeg 1-4318

1012 SL Amsterdam Netherlands

Admin:
Department:
Name:

Nix@NGI Team

Email:
Admin:
Name:

Daniel Ramirez

Email:

Grand totals

Time frame

Workload

To pay (excl. taxes)

2025-12-23

2026-01-27

64.00 h

2000.00 €

Mandatory legal notices

—

VAT not applicable, art. 293 B of the French General Tax Code.

—

Fixed compensation for recovery costs in case of late payment: 40.00 €

—

Late payment penalty rate (applicable from 2026-02-28): 12.15 % × unpaid amount × number of days late / 365.25

julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03

1/4

Summary

#

Type

Scope

Action

Time frame

Rate

(excl. taxes.)

Quantity

Total

(excl. taxes.)

1

service

NGIpkgs / BEAM

development

2025-12-30

2025-12-30

31.25 € / h

4.00 h

(6.25%)

125.00 €

2

service

NGIpkgs / Bonfire

development

2025-12-23

2026-01-09

31.25 € / h

36.00 h

(56.25%)

1125.00 €

3

service

NGIpkgs / Seppo

development

2026-01-25

2026-01-27

31.25 € / h

14.00 h

(21.88%)

437.50 €

4

service

NGIpkgs / dnsvizor

development

2026-01-11

2026-01-12

31.25 € / h

10.00 h

(15.62%)

312.50 €

2/4

julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03 — Summary

Details

#

Date

Duration

Scope

Action

References

Description

1

2025-12-23

2.00 h

NGIpkgs / Bonfire

development

address reviewers’ concerns

2

2025-12-24

4.00 h

NGIpkgs / Bonfire

development

update Bonfire and report issues upstream

3

2025-12-24

2.00 h

NGIpkgs / Bonfire

development

update Bonfire to fix bugs

4

2025-12-25

6.00 h

NGIpkgs / Bonfire

development

update and fix bugs

5

2025-12-26

1.00 h

NGIpkgs / Bonfire

development

update to fix bugs

6

2025-12-29

2.00 h

NGIpkgs / Bonfire

development

add more tests

7

2025-12-30

4.00 h

NGIpkgs / BEAM

development

improve buildMix & mixRelease for packaging Elixir software

8

2026-01-01

4.00 h

NGIpkgs / Bonfire

development

support other flavours

9

2026-01-03

4.00 h

NGIpkgs / Bonfire

development

support other flavours, and make update more resilient

10

2026-01-04

2.00 h

NGIpkgs / Bonfire

development

provide upstream with reproducers

11

2026-01-05

2.00 h

NGIpkgs / Bonfire

development

update to latest version

12

2026-01-07

5.00 h

NGIpkgs / Bonfire

development

fix updating

13

2026-01-09

2.00 h

NGIpkgs / Bonfire

development

answer upstream’s questions

14

2026-01-11

5.00 h

NGIpkgs / dnsvizor

development

replace hillingar to package MirageOS unikernels

15

2026-01-12

5.00 h

NGIpkgs / dnsvizor

development

remove the need for --allow-import-from-derivation

julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03 — Details

3/4

#

Date

Duration

Scope

Action

References

Description

16

2026-01-25

4.00 h

NGIpkgs / Seppo

development

begin packaging

17

2026-01-26

5.00 h

NGIpkgs / Seppo

development

continue packaging

18

2026-01-27

5.00 h

NGIpkgs / Seppo

development

continue packaging

4/4

julminfo - 2026-01-27 - Invoice #org3sale2 - contract n°2026-03 — Details

\ No newline at end of file diff --git a/tests/Tests/Invoice/org3sale3.html b/tests/Tests/Invoice/org3sale3.html new file mode 100644 index 0000000..3337097 --- /dev/null +++ b/tests/Tests/Invoice/org3sale3.html @@ -0,0 +1,2 @@ + +julminfo - 2026-01-28 - Invoice #org3sale3 - contract n°2026-FixMe

Invoice

InvoiceIdentifier:

org3sale3

InvoiceType:

sale

InvoiceOrders:
-

contract n°2026-FixMe

InvoiceEmittedOn:

2026-01-28

InvoicePaymentDueBefore:

2026-02-28

Seller:
Name:

julminfo

Address:

3, place du Monument

Mairie - Bureau 1

23340 Gentioux-Pigerolles France

SIREN:

942798083

IBAN:

FR18 2004 1010 0820 3735 3D02 912

Admin:
Name:

Julien Moutinho

Email:
Buyer:
Name:

Stichting NixOS Foundation

Address:

Korte Lijnbaanssteeg 1-4318

1012 SL Amsterdam Netherlands

Admin:
Department:
Name:

Nix@NGI Team

Email:
Admin:
Name:

Daniel Ramirez

Email:

Grand totals

Time frame

Workload

To pay (excl. taxes)

2025-12-29

2026-01-23

10.00 h

312.50 €

Mandatory legal notices

—

VAT not applicable, art. 293 B of the French General Tax Code.

—

Fixed compensation for recovery costs in case of late payment: 40.00 €

—

Late payment penalty rate (applicable from 2026-03-01): 12.15 % × unpaid amount × number of days late / 365.25

julminfo - 2026-01-28 - Invoice #org3sale3 - contract n°2026-FixMe

1/3

Summary

#

Type

Scope

Action

Time frame

Rate

(excl. taxes.)

Quantity

Total

(excl. taxes.)

1

service

NGIpkgs

organization

2026-01-09

2026-01-23

31.25 € / h

5.50 h

(55.0%)

171.88 €

2

service

NGIpkgs / Funkwhale

review

2025-12-29

2025-12-29

31.25 € / h

0.50 h

(5.0%)

15.62 €

3

service

NGIpkgs / Manuals

development

2026-01-22

2026-01-22

31.25 € / h

4.00 h

(40.0%)

125.00 €

2/3

julminfo - 2026-01-28 - Invoice #org3sale3 - contract n°2026-FixMe — Summary

Details

#

Date

Duration

Scope

Action

References

Description

1

2025-12-29

0.50 h

NGIpkgs / Funkwhale

review

2

2026-01-09

2.00 h

NGIpkgs

organization

weekly meeting

3

2026-01-16

2.00 h

NGIpkgs

organization

weekly meeting

4

2026-01-22

4.00 h

NGIpkgs / Manuals

development

address reviewers’ concerns

5

2026-01-23

1.50 h

NGIpkgs

organization

weekly meeting

julminfo - 2026-01-28 - Invoice #org3sale3 - contract n°2026-FixMe — Details

3/3

\ No newline at end of file