[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs:upgrading":3},{"versions":4,"version":30,"nav":32,"path":105,"kind":113,"page":114},[5,10,13,16,18,20,22,24,26,28],{"name":6,"label":7,"prefix":8,"channel":9},"1.0","1.0 (latest)","","latest",{"name":11,"label":12,"prefix":11,"channel":11},"next","next (unreleased)",{"name":14,"label":14,"prefix":14,"channel":15},"0.8","old",{"name":17,"label":17,"prefix":17,"channel":15},"0.7",{"name":19,"label":19,"prefix":19,"channel":15},"0.6",{"name":21,"label":21,"prefix":21,"channel":15},"0.5",{"name":23,"label":23,"prefix":23,"channel":15},"0.4",{"name":25,"label":25,"prefix":25,"channel":15},"0.3",{"name":27,"label":27,"prefix":27,"channel":15},"0.2",{"name":29,"label":29,"prefix":29,"channel":15},"0.1",{"name":6,"label":7,"prefix":8,"channel":9,"base":31},"\u002Fdocs",[33,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,95,98,101,104,107,110],{"slug":34,"title":35,"preview":36},"index","Home",false,{"slug":38,"title":39,"preview":36},"getting-started","Getting started",{"slug":41,"title":42,"preview":36},"concepts","E-invoicing basics",{"slug":44,"title":45,"preview":36},"examples","Examples",{"slug":47,"title":48,"preview":36},"building-invoices","Building invoices",{"slug":50,"title":51,"preview":36},"formats","Formats and profiles",{"slug":53,"title":54,"preview":36},"validation","Validation",{"slug":56,"title":57,"preview":36},"templates","Templates and design",{"slug":59,"title":60,"preview":36},"documents","Quotes and other documents",{"slug":62,"title":63,"preview":36},"reading","Reading incoming invoices",{"slug":65,"title":66,"preview":36},"laravel","Laravel integration",{"slug":68,"title":69,"preview":36},"configuration","Configuration",{"slug":71,"title":72,"preview":36},"commands","Artisan commands",{"slug":74,"title":75,"preview":36},"testing","Testing",{"slug":77,"title":78,"preview":36},"country-packs","Country packs",{"slug":80,"title":81,"parent":78,"preview":36},"country-at","Austria",{"slug":83,"title":84,"parent":78,"preview":36},"country-be","Belgium",{"slug":86,"title":87,"parent":78,"preview":36},"country-ch","Switzerland",{"slug":89,"title":90,"parent":78,"preview":36},"country-fr","France",{"slug":92,"title":93,"preview":94},"managed","Managed layer (preview)",true,{"slug":96,"title":97,"preview":36},"troubleshooting","Troubleshooting",{"slug":99,"title":100,"preview":36},"faq","FAQ",{"slug":102,"title":103,"preview":36},"compatibility","Versioning and compatibility",{"slug":105,"title":106,"preview":36},"upgrading","Upgrading to 1.0",{"slug":108,"title":109,"preview":36},"field-reference","Field reference",{"slug":111,"title":112,"preview":36},"ai","AI assistants","page",{"title":106,"description":115,"html":116,"headings":117,"editUrl":152,"markdownUrl":153,"prev":154,"next":155},"Quittio 1.0 removes what the 0.x releases deprecated and fixes the public API: from now on only a major release breaks it (Versioning and compatibility). This page lists every break and what to do.","\u003Ch1 id=\"upgrading-from-0x-to-10\">Upgrading from 0.x to 1.0\u003C\u002Fh1>\n\u003Cp>Quittio 1.0 removes what the 0.x releases deprecated and fixes the public API: from now on only a major release breaks it (\u003Ca href=\"\u002Fdocs\u002Fcompatibility\">Versioning and compatibility\u003C\u002Fa>). This page lists every break and what to do.\u003C\u002Fp>\n\u003Cp>If your application runs on 0.8 without deprecation notices, most of the steps below do not apply. Two ways to find the calls that are affected before you update:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Static analysis.\u003C\u002Fstrong> PHPStan with \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fphpstan\u002Fphpstan-deprecation-rules\">phpstan-deprecation-rules\u003C\u002Fa> reports every call of deprecated code.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Runtime notices.\u003C\u002Fstrong> The old builder macros and \u003Ccode>config\u002Fquittio-de.php\u003C\u002Fcode> report an \u003Ccode>E_USER_DEPRECATED\u003C\u002Fcode> in 0.8. Laravel writes them to the \u003Ccode>deprecations\u003C\u002Fcode> log channel when one is configured.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"composer\">Composer\u003Ca class=\"q-doc-anchor\" href=\"#composer\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>bash\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FFA657\">composer\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> require\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> quittio\u002Fquittio:^1.0\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\"># without Laravel\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FFA657\">composer\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> require\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> quittio\u002Fcore:^1.0\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> quittio\u002Fcountry-de:^1.0\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>All packages are released together and carry the same version. The country packs for Austria, Switzerland, Belgium and France are not covered by the compatibility promise until a tax adviser of their country has reviewed them (\u003Ca href=\"\u002Fdocs\u002Fcompatibility#country-packs-without-tax-review\">Country packs without tax review\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch2 id=\"methods-of-quittiocorequittio\">Methods of \u003Ccode>Quittio\\Core\\Quittio\u003C\u002Fcode>\u003Ca class=\"q-doc-anchor\" href=\"#methods-of-quittiocorequittio\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>The \u003Ccode>with…()\u003C\u002Fcode> methods that changed the instance are gone. Elsewhere in Quittio, \u003Ccode>with…()\u003C\u002Fcode> returns a changed copy; these methods never did, so they were renamed in 0.2:\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Removed\u003C\u002Fth>\n\u003Cth>Use instead\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>withSerializer()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>addSerializer()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>withValidator()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>addValidator()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>withoutValidators()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>clearValidators()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>withRenderer()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>setRenderer()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>withTemplateEngine()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>setTemplateEngine()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>withPaymentQrGenerator()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>setPaymentQrGenerator()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>withFormatResolver()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>setFormatResolver()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The new methods behave exactly like the old ones: they change the instance and return it.\u003C\u002Fp>\n\u003Ch2 id=\"formats\">Formats\u003Ca class=\"q-doc-anchor\" href=\"#formats\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Removed\u003C\u002Fth>\n\u003Cth>Use instead\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>FormatRegistry::XRECHNUNG_CII\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>Quittio\\Country\\DE\\Formats\\XRechnungFormats::CII\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>FormatRegistry::XRECHNUNG_UBL\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>Quittio\\Country\\DE\\Formats\\XRechnungFormats::UBL\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>DefaultFormatResolver::EU_COUNTRIES\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>Quittio\\Core\\Countries\\VatTerritory::EU_MEMBER_STATES\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The formats \u003Ccode>xrechnung-cii\u003C\u002Fcode> and \u003Ccode>xrechnung-ubl\u003C\u002Fcode> and the alias \u003Ccode>xrechnung\u003C\u002Fcode> come from the German country pack only. In Laravel nothing changes, because the pack is discovered automatically. Without Laravel, pass the pack to \u003Ccode>Quittio::create()\u003C\u002Fcode> if you render XRechnung:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\DE\\CountryDE\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$quittio \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">create\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">countryPacks\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: [\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> CountryDE\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Ch2 id=\"german-country-pack\">German country pack\u003Ca class=\"q-doc-anchor\" href=\"#german-country-pack\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"tax-presets\">Tax presets\u003Ca class=\"q-doc-anchor\" href=\"#tax-presets\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>\u003Ccode>VatPreset::Standard19\u003C\u002Fcode> and \u003Ccode>VatPreset::Reduced7\u003C\u002Fcode> are gone. \u003Ccode>VatPreset::Standard\u003C\u002Fcode> and \u003Ccode>VatPreset::Reduced\u003C\u002Fcode> replace them and take the rate of the supply date, e.g. 16 % and 5 % for supplies from July to December 2020 (\u003Ca href=\"\u002Fdocs\u002Fcountry-packs#tax-presets\">Tax presets\u003C\u002Fa>).\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\DE\\Tax\\VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F 0.x\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$line\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">vat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Standard19\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F 1.0\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$line\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">vat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Standard\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Invoices stored with 0.2 or earlier carry the preset keys \u003Ccode>de.standard_19\u003C\u002Fcode> and \u003Ccode>de.reduced_7\u003C\u002Fcode> on their lines. These keys stay readable: snapshots, \u003Ccode>quittio.defaults.vat\u003C\u002Fcode>, \u003Ccode>(new CountryDE)-&gt;taxPresets()-&gt;get()\u003C\u002Fcode> and \u003Ccode>VatPreset::fromKey()\u003C\u002Fcode> find \u003Ccode>Standard\u003C\u002Fcode> and \u003Ccode>Reduced\u003C\u002Fcode> for them. \u003Ccode>VatPreset::from()\u003C\u002Fcode> and \u003Ccode>tryFrom()\u003C\u002Fcode> no longer know them, though. If you keep preset keys in a column of your own and look them up with \u003Ccode>from()\u003C\u002Fcode>, switch to \u003Ccode>fromKey()\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\DE\\Tax\\VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> UnexpectedValueException\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F 0.x: throws a ValueError in 1.0 for \"de.standard_19\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$preset \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">from\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($item\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">tax_preset);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F 1.0\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$preset \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">fromKey\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($item\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">tax_preset) \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">??\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> throw\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> UnexpectedValueException\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Unknown preset '\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">.\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$item\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">tax_preset);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Or update the column once, e.g. \u003Ccode>UPDATE order_items SET tax_preset = 'de.standard' WHERE tax_preset = 'de.standard_19'\u003C\u002Fcode> (and \u003Ccode>de.reduced\u003C\u002Fcode> for \u003Ccode>de.reduced_7\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>\u003Ccode>VatPreset::canonical()\u003C\u002Fcode> is gone as well: it turned the removed cases into \u003Ccode>Standard\u003C\u002Fcode> and \u003Ccode>Reduced\u003C\u002Fcode>, which \u003Ccode>fromKey()\u003C\u002Fcode> now returns directly. The old keys are available as \u003Ccode>VatPreset::LEGACY_STANDARD_KEY\u003C\u002Fcode> and \u003Ccode>VatPreset::LEGACY_REDUCED_KEY\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3 id=\"builder-macros\">Builder macros\u003Ca class=\"q-doc-anchor\" href=\"#builder-macros\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The macros of 0.2 directly on the builder are gone. The German special cases are reached with \u003Ccode>-&gt;de()\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Removed\u003C\u002Fth>\n\u003Cth>Use instead\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>-&gt;smallAmount()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>-&gt;de()-&gt;smallAmount()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>-&gt;propertyRelatedService()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>-&gt;de()-&gt;propertyRelatedService()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>-&gt;newVehicle()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>-&gt;de()-&gt;newVehicle()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>-&gt;selfBilled()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>-&gt;de()-&gt;selfBilled()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>-&gt;deductAdvance($advance)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>-&gt;de()-&gt;deductAdvance($advance)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>-&gt;consumerDefaultNotice()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>-&gt;de()-&gt;consumerDefaultNotice()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Each method of \u003Ccode>-&gt;de()\u003C\u002Fcode> returns the builder, so the chain continues as before. The IDE stub \u003Ccode>stubs\u002FInvoiceBuilder.stub.php\u003C\u002Fcode> describes \u003Ccode>de()\u003C\u002Fcode> only.\u003C\u002Fp>\n\u003Ch3 id=\"constants\">Constants\u003Ca class=\"q-doc-anchor\" href=\"#constants\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Removed\u003C\u002Fth>\n\u003Cth>Use instead\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Flags::SMALL_AMOUNT_LIMIT\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>TaxTables::smallAmountLimitOn($date)\u003C\u002Fcode>: the limit depends on the date (150.00 EUR before 2017)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GermanInvoiceMacros::ADVANCE_TYPES\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>GermanInvoice::ADVANCE_TYPES\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"laravel-configuration\">Laravel configuration\u003Ca class=\"q-doc-anchor\" href=\"#laravel-configuration\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"environment-variables\">Environment variables\u003Ca class=\"q-doc-anchor\" href=\"#environment-variables\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The names of 0.1.0 are no longer read. Rename them in your \u003Ccode>.env\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Removed\u003C\u002Fth>\n\u003Cth>Use instead\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>QUITTIO_COUNTRY\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>QUITTIO_DEFAULT_COUNTRY\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>QUITTIO_VALIDATION\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>QUITTIO_VALIDATION_MODE\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>QUITTIO_GUARD\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>QUITTIO_MANDATORY_FIELD_GUARD\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>QUITTIO_DISK\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>QUITTIO_STORAGE_DISK\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>QUITTIO_PREVIEW\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use instead\">\u003Ccode>QUITTIO_PREVIEW_ENABLED\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>A published \u003Ccode>config\u002Fquittio.php\u003C\u002Fcode> of 0.1 still reads the old names. Compare it with the current file (\u003Ccode>php artisan vendor:publish --tag=quittio-config --force\u003C\u002Fcode> overwrites it) or rename the variables in both places.\u003C\u002Fp>\n\u003Ch3 id=\"configquittio-dephp\">\u003Ccode>config\u002Fquittio-de.php\u003C\u002Fcode>\u003Ca class=\"q-doc-anchor\" href=\"#configquittio-dephp\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The German settings of 0.3 and earlier are no longer read. So that settings such as \u003Ccode>prior_year_turnover_above_800k\u003C\u002Fcode> are not lost unnoticed, the application refuses to start with a \u003Ccode>RuntimeException\u003C\u002Fcode> while \u003Ccode>config\u002Fquittio-de.php\u003C\u002Fcode> exists. Move its keys to \u003Ccode>config\u002Fquittio\u002Fcountries\u002Fde.php\u003C\u002Fcode> and delete the old file:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>bash\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FFA657\">php\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> artisan\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> vendor:publish\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> --tag=quittio-de-config\u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">   # config\u002Fquittio\u002Fcountries\u002Fde.php\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FFA657\">rm\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> config\u002Fquittio-de.php\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FFA657\">rm\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -f\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> bootstrap\u002Fcache\u002Fconfig.php\u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">                      # if the configuration is cached\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>See \u003Ca href=\"\u002Fdocs\u002Fconfiguration#country-pack-germany-quittiocountriesde\">Country pack Germany\u003C\u002Fa> for the keys.\u003C\u002Fp>\n\u003Ch2 id=\"named-arguments\">Named arguments\u003Ca class=\"q-doc-anchor\" href=\"#named-arguments\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Ccode>DocumentBuilder::creditTransfer()\u003C\u002Fcode> names its first parameter \u003Ccode>$accountId\u003C\u002Fcode>, like \u003Ccode>InvoiceBuilder::creditTransfer()\u003C\u002Fcode>. Only calls with a named argument change:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F 0.x\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$document\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">creditTransfer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">iban\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'DE02120300000000202051'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F 1.0\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$document\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">creditTransfer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">accountId\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'DE02120300000000202051'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n",[118,122,125,127,130,134,137,140,143,146,149],{"id":119,"text":120,"level":121},"composer","Composer",2,{"id":123,"text":124,"level":121},"methods-of-quittiocorequittio","Methods of Quittio\\Core\\Quittio",{"id":50,"text":126,"level":121},"Formats",{"id":128,"text":129,"level":121},"german-country-pack","German country pack",{"id":131,"text":132,"level":133},"tax-presets","Tax presets",3,{"id":135,"text":136,"level":133},"builder-macros","Builder macros",{"id":138,"text":139,"level":133},"constants","Constants",{"id":141,"text":142,"level":121},"laravel-configuration","Laravel configuration",{"id":144,"text":145,"level":133},"environment-variables","Environment variables",{"id":147,"text":148,"level":133},"configquittio-dephp","config\u002Fquittio-de.php",{"id":150,"text":151,"level":121},"named-arguments","Named arguments","https:\u002F\u002Fgithub.com\u002FQuittio\u002Fquittio\u002Fedit\u002Fmaster\u002Fdocs\u002Fupgrading.md","\u002Fdocs\u002Fupgrading.md",{"slug":102,"title":103},{"slug":108,"title":109}]