[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs:api\u002FQuittio\u002FCore\u002FCalculation\u002FGrossPriceConverter":3},{"versions":4,"version":26,"nav":28,"path":106,"kind":107,"page":108},[5,10,13,16,18,20,22,24],{"name":6,"label":7,"prefix":8,"channel":9},"0.7","0.7 (latest)","","latest",{"name":11,"label":12,"prefix":11,"channel":11},"next","next (unreleased)",{"name":14,"label":14,"prefix":14,"channel":15},"0.6","old",{"name":17,"label":17,"prefix":17,"channel":15},"0.5",{"name":19,"label":19,"prefix":19,"channel":15},"0.4",{"name":21,"label":21,"prefix":21,"channel":15},"0.3",{"name":23,"label":23,"prefix":23,"channel":15},"0.2",{"name":25,"label":25,"prefix":25,"channel":15},"0.1",{"name":6,"label":7,"prefix":8,"channel":9,"base":27},"\u002Fdocs",[29,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,91,94,97,100,103],{"slug":30,"title":31,"preview":32},"index","Home",false,{"slug":34,"title":35,"preview":32},"getting-started","Getting started",{"slug":37,"title":38,"preview":32},"concepts","E-invoicing basics",{"slug":40,"title":41,"preview":32},"examples","Examples",{"slug":43,"title":44,"preview":32},"building-invoices","Building invoices",{"slug":46,"title":47,"preview":32},"formats","Formats and profiles",{"slug":49,"title":50,"preview":32},"validation","Validation",{"slug":52,"title":53,"preview":32},"templates","Templates and design",{"slug":55,"title":56,"preview":32},"documents","Quotes and other documents",{"slug":58,"title":59,"preview":32},"reading","Reading incoming invoices",{"slug":61,"title":62,"preview":32},"laravel","Laravel integration",{"slug":64,"title":65,"preview":32},"configuration","Configuration",{"slug":67,"title":68,"preview":32},"commands","Artisan commands",{"slug":70,"title":71,"preview":32},"testing","Testing",{"slug":73,"title":74,"preview":32},"country-packs","Country packs",{"slug":76,"title":77,"parent":74,"preview":32},"country-at","Austria",{"slug":79,"title":80,"parent":74,"preview":32},"country-be","Belgium",{"slug":82,"title":83,"parent":74,"preview":32},"country-ch","Switzerland",{"slug":85,"title":86,"parent":74,"preview":32},"country-fr","France",{"slug":88,"title":89,"preview":90},"managed","Managed layer (preview)",true,{"slug":92,"title":93,"preview":32},"troubleshooting","Troubleshooting",{"slug":95,"title":96,"preview":32},"faq","FAQ",{"slug":98,"title":99,"preview":32},"compatibility","Versioning and compatibility",{"slug":101,"title":102,"preview":32},"field-reference","Field reference",{"slug":104,"title":105,"preview":32},"ai","AI assistants","api\u002FQuittio\u002FCore\u002FCalculation\u002FGrossPriceConverter","api",{"title":109,"description":110,"html":111,"headings":112},"GrossPriceConverter","Gross price mode for B2C and shops.","\u003Cp class=\"q-api-crumbs\">\u003Ca href=\"\u002Fdocs\u002Fapi\">API reference\u003C\u002Fa> \u002F \u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\">Quittio\u003C\u002Fa> \\ \u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\">Core\u003C\u002Fa> \\ \u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FCalculation\">Calculation\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch1>GrossPriceConverter\u003C\u002Fh1>\n\u003Cp class=\"q-api-facts\">\u003Cspan class=\"q-api-badge q-api-badge-kind\">final class\u003C\u002Fspan> in \u003Cspan class=\"q-api-badge\">quittio\u002Fcore\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp class=\"q-api-name\">\u003Ccode>Quittio\\Core\\Calculation\\GrossPriceConverter\u003C\u002Fcode> · \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FQuittio\u002Fquittio\u002Fblob\u002Fv0.7.1\u002Fpackages\u002Fcore\u002Fsrc\u002FCalculation\u002FGrossPriceConverter.php#L35\">Source\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Cp class=\"q-doc-lead\">Gross price mode for B2C and shops.\u003C\u002Fp>\n\u003Cp>Shops calculate with prices including VAT, EN 16931 calculates net. Per VAT group:\u003C\u002Fp>\n\u003Col>\n\u003Cli>G = Σ g_i with g_i = round2(quantity × price incl. VAT)\u003C\u002Fli>\n\u003Cli>N = round2(G \u002F (1 + rate \u002F 100)); a partial cancellation aligned with the earlier ones\ndeclares its N (Corrections\\CancellationHistory), which is used within 0.01\u003C\u002Fli>\n\u003Cli>T = round2(N × rate \u002F 100)              (BR-CO-17)\u003C\u002Fli>\n\u003Cli>Every line gets n_i = round2(g_i \u002F (1 + rate \u002F 100)); the few cents N − Σ n_i\nare added to the lines with the largest rounding remainders. Each line keeps the\nsign of its gross amount (returns and vouchers stay negative). Net prices are\nderived with the precision needed so that the line formula yields the line amount.\u003C\u002Fli>\n\u003Cli>G − (N + T) is returned as rounding amount for BT-114, so that the amount\ndue equals the gross amount the customer saw. The calculator takes BT-114 from\nthe total G and the amounts it finally uses, so that it also holds when\ndeclared amounts are kept (e.g. the aligned VAT of a partial cancellation).\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Limits: all lines must use gross prices, and gross lines must not have line or\ndocument allowances or charges. Model shipping costs and discounts as lines; a\ndiscount line needs a negative quantity, because prices must not be negative (BR-27).\u003C\u002Fp>\n\n\u003Ch2 id=\"methods\">Methods\u003Ca class=\"q-doc-anchor\" href=\"#methods\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ctable class=\"q-doc-table q-stack-table q-api-summary\">\u003Cthead>\u003Ctr>\u003Cth>Method\u003C\u002Fth>\u003Cth>Description\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ca href=\"#method-appliesTo\">\u003Ccode>->appliesTo()\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd data-label=\"Description\">\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ca href=\"#method-convert\">\u003Ccode>->convert()\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd data-label=\"Description\">\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ca href=\"#method-netOf\">\u003Ccode>::netOf()\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\u003Ctd data-label=\"Description\">N = round2(G \u002F (1 + rate \u002F 100)), step 2.\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Csection class=\"q-api-member\" id=\"method-appliesTo\">\n\u003Ch3>\u003Ccode>appliesTo()\u003C\u002Fcode>\u003Ca class=\"q-doc-anchor\" href=\"#method-appliesTo\" aria-label=\"Link to this method\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cdiv class=\"q-doc-code q-doc-code-plain\">\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\">public\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> function\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\"> appliesTo\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">InvoiceData\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $invoice)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">:\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> bool\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\n\n\u003Ctable class=\"q-doc-table q-stack-table\">\u003Cthead>\u003Ctr>\u003Cth>Parameter\u003C\u002Fth>\u003Cth>Type\u003C\u002Fth>\u003Cth>Description\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>$invoice\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Type\">\u003Ccode>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FData\u002FInvoiceData\">InvoiceData\u003C\u002Fa>\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Description\">\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cdl class=\"q-api-dl\">\n\u003Cdt>Returns\u003C\u002Fdt>\u003Cdd>\u003Ccode>bool\u003C\u002Fcode>\u003C\u002Fdd>\n\u003C\u002Fdl>\n\u003C\u002Fsection>\n\u003Csection class=\"q-api-member\" id=\"method-convert\">\n\u003Ch3>\u003Ccode>convert()\u003C\u002Fcode>\u003Ca class=\"q-doc-anchor\" href=\"#method-convert\" aria-label=\"Link to this method\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cdiv class=\"q-doc-code q-doc-code-plain\">\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\">public\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> function\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\"> convert\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#79C0FF\">    InvoiceData\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $invoice,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#E6EDF3\">    array&#x3C;string, BigDecimal> $nets \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> [],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">:\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> array\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">{\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">lines\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">list\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">InvoiceLine\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">>\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">rounding\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">BigDecimal\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">gross\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">BigDecimal\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\n\n\u003Ctable class=\"q-doc-table q-stack-table\">\u003Cthead>\u003Ctr>\u003Cth>Parameter\u003C\u002Fth>\u003Cth>Type\u003C\u002Fth>\u003Cth>Description\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>$invoice\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Type\">\u003Ccode>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FData\u002FInvoiceData\">InvoiceData\u003C\u002Fa>\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Description\">\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>$nets\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Type\">\u003Ccode>array&lt;string, Brick\\Math\\BigDecimal&gt;\u003C\u002Fcode>\u003Cspan class=\"q-api-default\"> = \u003Ccode>[]\u003C\u002Fcode>\u003C\u002Fspan>\u003C\u002Ftd>\u003Ctd data-label=\"Description\">declared net amounts N per VAT group (key: DeclaredAmounts::breakdownKey()), e.g. of a partial cancellation aligned with the earlier ones (Corrections\\CancellationHistory); used instead of step 2 within 0.01\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cdl class=\"q-api-dl\">\n\u003Cdt>Returns\u003C\u002Fdt>\u003Cdd>\u003Ccode>array{lines: list&lt;\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FData\u002FLines\u002FInvoiceLine\">InvoiceLine\u003C\u002Fa>&gt;, rounding: Brick\\Math\\BigDecimal, gross: Brick\\Math\\BigDecimal}\u003C\u002Fcode> – gross: G of all groups\u003C\u002Fdd>\n\u003C\u002Fdl>\n\u003C\u002Fsection>\n\u003Csection class=\"q-api-member\" id=\"method-netOf\">\n\u003Ch3>\u003Ccode>netOf()\u003C\u002Fcode>\u003Ca class=\"q-doc-anchor\" href=\"#method-netOf\" aria-label=\"Link to this method\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cdiv class=\"q-doc-code q-doc-code-plain\">\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\">public\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> static\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> function\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\"> netOf\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">BigDecimal\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $gross, \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">BigDecimal\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $rate)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">:\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> BigDecimal\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp class=\"q-api-tags\">\u003Cspan class=\"q-api-badge\">static\u003C\u002Fspan>\u003C\u002Fp>\n\n\u003Cp>N = round2(G \u002F (1 + rate \u002F 100)), step 2.\u003C\u002Fp>\n\n\u003Ctable class=\"q-doc-table q-stack-table\">\u003Cthead>\u003Ctr>\u003Cth>Parameter\u003C\u002Fth>\u003Cth>Type\u003C\u002Fth>\u003Cth>Description\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>$gross\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Type\">\u003Ccode>Brick\\Math\\BigDecimal\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Description\">\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>$rate\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Type\">\u003Ccode>Brick\\Math\\BigDecimal\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd data-label=\"Description\">\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cdl class=\"q-api-dl\">\n\u003Cdt>Returns\u003C\u002Fdt>\u003Cdd>\u003Ccode>Brick\\Math\\BigDecimal\u003C\u002Fcode>\u003C\u002Fdd>\n\u003C\u002Fdl>\n\u003C\u002Fsection>",[113],{"id":114,"text":115,"level":116},"methods","Methods",2]