diff --git a/.env b/.env index a31deb625..edac9f0f4 100644 --- a/.env +++ b/.env @@ -100,5 +100,18 @@ INVOICE_ENTRY_ACCOUNTS='{ # Otherwise, all issues will be added to a single invoice per client. INVOICE_ONE_INVOICE_PER_ISSUE=false -# If true, the invoice description is set based on issue name andinvoice entries. -SET_INVOICE_DESCRIPTION_FROM_ENTRIES=false +# If true, the invoice description is set based on issue description +SET_INVOICE_DESCRIPTION_FROM_ISSUE_DESCRIPTION=false +INVOICE_DESCRIPTION_ISSUE_HEADING=Opgavebeskrivelse + +# Replace elements in invoice descriptions (if `SET_INVOICE_DESCRIPTION_FROM_ISSUE_DESCRIPTION` is true) +# +# { +# elementName: [start, end] +# } +# +# INVOICE_DESCRIPTION_ELEMENT_REPLACEMENTS='{ +# "p": ["", "; "] +# "strong": [": ", ""] +# }' +INVOICE_DESCRIPTION_ELEMENT_REPLACEMENTS='{}' diff --git a/composer.json b/composer.json index 97ad9cdf8..0a8073757 100644 --- a/composer.json +++ b/composer.json @@ -6,6 +6,7 @@ "require": { "php": ">=8.1", "ext-ctype": "*", + "ext-dom": "*", "ext-iconv": "*", "doctrine/doctrine-bundle": "^2.7", "doctrine/doctrine-migrations-bundle": "^3.2", diff --git a/composer.lock b/composer.lock index 328398044..0cc093e7a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6271cc27ab9aee98952e86350fe6017c", + "content-hash": "b64ceba6fcd50267561d233ec42afcfd", "packages": [ { "name": "behat/transliterator", @@ -10298,12 +10298,12 @@ "version": "v5.2.13", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", + "url": "https://github.com/jsonrainbow/json-schema.git", "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, @@ -13220,6 +13220,7 @@ "platform": { "php": ">=8.1", "ext-ctype": "*", + "ext-dom": "*", "ext-iconv": "*" }, "platform-dev": [], diff --git a/config/services.yaml b/config/services.yaml index 8e59848b3..29f8d17d0 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -61,4 +61,6 @@ services: $options: accounts: '%env(json:INVOICE_ENTRY_ACCOUNTS)%' one_invoice_per_issue: '%env(bool:INVOICE_ONE_INVOICE_PER_ISSUE)%' - set_invoice_description_from_entries: '%env(bool:SET_INVOICE_DESCRIPTION_FROM_ENTRIES)%' + set_invoice_description_from_issue_description: '%env(bool:SET_INVOICE_DESCRIPTION_FROM_ISSUE_DESCRIPTION)%' + invoice_description_issue_heading: '%env(INVOICE_DESCRIPTION_ISSUE_HEADING)%' + invoice_description_element_replacements: '%env(json:INVOICE_DESCRIPTION_ELEMENT_REPLACEMENTS)%' diff --git a/src/Entity/Invoice.php b/src/Entity/Invoice.php index 8dc2f582a..be19de8cf 100644 --- a/src/Entity/Invoice.php +++ b/src/Entity/Invoice.php @@ -19,7 +19,6 @@ class Invoice extends AbstractBaseEntity #[ORM\Column(length: 255)] private ?string $name = null; - #[ORM\Column(length: self::DESCRIPTION_MAX_LENGTH, nullable: true)] private ?string $description = null; diff --git a/src/Service/HtmlHelper.php b/src/Service/HtmlHelper.php new file mode 100644 index 000000000..4d3e88f1c --- /dev/null +++ b/src/Service/HtmlHelper.php @@ -0,0 +1,79 @@ +loadHTML('
Titel: Tryk af viftekort LIV guide
Produkt
viftekort- som ledetrådene- lille lommeformat: 200 stk.
Kommentar til opgaven: Fil er uden skæremærker. Efter opsætning hos jer, send gerne retur til godkendelse.
Uploadede filer
ny-liv-viftekort-til-tryk-2.0.pdf (OK)
xxxxxx
xxx
xxx
xxx
xxx
xxxxxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxxxxx
xxx
xxx
xxx
xxx
xxxxxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxxxxx
xxx
xxx
xxx
xxx
xxxxxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx: xxx
xxx:
xxx
xxx
xxx
xxx: xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx:
xxx
xxx
xxx
xxxxxx
xxx
xxx
xxx
xxx
xxxxxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxxxxx; xxx; xxx; xxx; xxx; xxxxxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx
', + ]; + + yield [ + 'xxxxxx
xxx
xxx
xxx
xxx
xxxxxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxxxxx; xxx; xxx; xxx; xxx; xxxxxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx; xxx
', + ]; + } + + /** + * Provider for testGetSection. + * + * @return iterable + */ + public static function dataGetSection(): iterable + { + yield [ + 'Navn: Test Testersen
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+', + 'Opgavebeskrivelse', + null, + null, + null, + + ' +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +', + ]; + + yield [ + 'Navn: Test Testersen
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+', + 'Hest', + null, + null, + null, + + null, + ]; + + yield [ + 'Navn: Test Testersen
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+', + '/beskrivelse/', + null, + true, + null, + + ' +Titel: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ +', + ]; + } +}