{"id":11377,"date":"2025-04-14T10:43:33","date_gmt":"2025-04-14T08:43:33","guid":{"rendered":"https:\/\/staging-estonia.invosy.com\/?page_id=11377"},"modified":"2026-08-27T14:43:19","modified_gmt":"2026-08-27T12:43:19","slug":"tulolaskuri","status":"publish","type":"page","link":"https:\/\/staging-estonia.invosy.com\/eng\/tulolaskuri\/","title":{"rendered":"Tulolaskuri"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"11377\" class=\"elementor elementor-11377\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-aeda22f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"98786\" data-id=\"aeda22f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-5a7d27d\" data-eae-slider=\"53111\" data-id=\"5a7d27d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2ad9b31 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"2ad9b31\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Tulolaskuri<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bcf3687 elementor-widget elementor-widget-spacer\" data-id=\"bcf3687\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d64829 elementor-widget elementor-widget-text-editor\" data-id=\"7d64829\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Laske helposti, paljonko palkkaa sinulle j\u00e4\u00e4 k\u00e4teen.\u2028<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a245d73 elementor-align-left elementor-mobile-align-center elementor-widget elementor-widget-button\" data-id=\"a245d73\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/accountfinland.invosy.com\/dashboard\/register\" id=\"header-desktop-btn\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Ensimm\u00e4inen lasku 0\u20ac<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-2cb856b\" data-eae-slider=\"37483\" data-id=\"2cb856b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d2ac7d4 elementor-widget elementor-widget-image\" data-id=\"d2ac7d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"577\" height=\"433\" src=\"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner.png\" class=\"attachment-large size-large wp-image-13515\" alt=\"\" srcset=\"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner.png 577w, https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner-300x225.png 300w, https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner-16x12.png 16w\" sizes=\"(max-width: 577px) 100vw, 577px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-32ebf4a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"94748\" data-id=\"32ebf4a\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-944039b\" data-eae-slider=\"9642\" data-id=\"944039b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ab08ed8 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"ab08ed8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Laske arvio palkastasi<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-301e28c elementor-widget elementor-widget-html\" data-id=\"301e28c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n\n\/* =========================================================\n   SALARY CALCULATOR\n   Elementor handles outer columns\n   ========================================================= *\/\n\n.custom-css,\n.custom-css *,\n.custom-css *::before,\n.custom-css *::after {\n    box-sizing: border-box;\n}\n\n\n\/* =========================================================\n   LEFT CALCULATOR\n   ========================================================= *\/\n\n.custom-css.calc-col-1 {\n    width: 100%;\n}\n\n\n\/* =========================================================\n   ROWS\n   ========================================================= *\/\n\n.custom-css .calcDiv {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    gap: 20px;\n\n    width: 100%;\n    min-height: 46px;\n\n    margin: 0;\n    padding: 0 0 10px;\n}\n\n\n\/* Project field hidden initially *\/\n.custom-css .calc-by-project {\n    display: none;\n}\n\n\n\/* Label side *\/\n.custom-css .calcDiv-col-1 {\n    flex: 1 1 auto;\n\n    width: auto;\n    min-width: 0;\n}\n\n\n\/* Field side *\/\n.custom-css .calcDiv-col-2 {\n    flex: 0 0 220px;\n\n    width: 220px;\n    min-width: 220px;\n}\n\n\n\/* =========================================================\n   LABELS\n   ========================================================= *\/\n\n.custom-css .calcDiv label {\n    display: block;\n\n    margin: 0;\n    padding: 0;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 20px;\n    line-height: 1.15;\n    font-weight: 500;\n\n    color: #292929;\n}\n\n\n\/* =========================================================\n   SELECTS\n   ========================================================= *\/\n\n.custom-css .calcDiv select {\n    display: block;\n\n    width: 100%;\n    height: 46px;\n\n    margin: 0;\n    padding: 0 46px 0 17px;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 16px;\n    line-height: 1;\n    font-weight: 400;\n\n    color: #292929 !important;\n    background-color: #ffffff !important;\n\n    border: 2px solid #20a9ad !important;\n    border-radius: 30px !important;\n\n    outline: none !important;\n    box-shadow: none !important;\n\n    appearance: none;\n    -webkit-appearance: none;\n    -moz-appearance: none;\n\n    background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='20' height='20' viewBox='0 0 24 24'%3E%3Cpath fill='%23000000' d='M7 10l5 5 5-5z'\/%3E%3C\/svg%3E\") !important;\n    background-repeat: no-repeat !important;\n    background-position: right 12px center !important;\n    background-size: 20px !important;\n\n    cursor: pointer;\n}\n\n\n.custom-css .calcDiv select:hover,\n.custom-css .calcDiv select:focus {\n    border: 2px solid #20a9ad !important;\n    outline: none !important;\n    box-shadow: none !important;\n}\n\n\n\/* =========================================================\n   INPUT GROUP\n   ========================================================= *\/\n\n.custom-css .input-group {\n    display: flex !important;\n    align-items: center;\n\n    gap: 8px;\n\n    width: 100%;\n    min-width: 0;\n\n    margin: 0;\n    padding: 0;\n\n    border: 0 !important;\n    background: transparent !important;\n    box-shadow: none !important;\n}\n\n\n\/* =========================================================\n   TEXT INPUTS\n   ========================================================= *\/\n\n.custom-css .input-group input[type=\"text\"] {\n    display: block;\n\n    flex: 1 1 auto;\n\n    width: 100%;\n    min-width: 0;\n    height: 46px;\n\n    margin: 0;\n    padding: 0 16px;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 16px;\n    line-height: 1;\n    font-weight: 400;\n\n    color: #292929 !important;\n    background-color: #ffffff !important;\n    background-image: none !important;\n\n    border: 2px solid #20a9ad !important;\n    border-radius: 30px !important;\n\n    outline: none !important;\n    box-shadow: none !important;\n\n    -webkit-appearance: none;\n    appearance: none;\n}\n\n\n.custom-css .input-group input[type=\"text\"]:hover,\n.custom-css .input-group input[type=\"text\"]:focus {\n    border: 2px solid #20a9ad !important;\n    outline: none !important;\n    box-shadow: none !important;\n}\n\n\n\/* Remove Bootstrap \/ theme grouping *\/\n.custom-css .input-group .form-control {\n    position: relative;\n\n    float: none !important;\n\n    z-index: auto;\n\n    margin: 0 !important;\n\n    border-radius: 30px !important;\n}\n\n\n\/* =========================================================\n   INPUT UNIT\n   ========================================================= *\/\n\n.custom-css .input-group-addon {\n    display: flex;\n    align-items: center;\n\n    flex: 0 0 auto;\n\n    width: auto;\n\n    margin: 0;\n    padding: 0;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 16px;\n    line-height: 1.2;\n    font-weight: 500;\n\n    color: #292929;\n    background: transparent !important;\n\n    border: 0 !important;\n    box-shadow: none !important;\n\n    white-space: nowrap;\n}\n\n\n\/* =========================================================\n   CHECKBOXES\n   ========================================================= *\/\n\n.custom-css .calc-checkbox-row {\n    display: flex;\n    align-items: flex-start;\n\n    gap: 10px;\n\n    width: 100%;\n\n    margin: 0 0 20px;\n    padding: 0;\n}\n\n\n.custom-css .calc-checkbox-row input[type=\"checkbox\"] {\n    flex: 0 0 14px;\n\n    width: 14px;\n    height: 14px;\n\n    margin: 4px 0 0;\n    padding: 0;\n\n    accent-color: #20a9ad;\n\n    cursor: pointer;\n}\n\n\n\/*\n   Checkbox labels are intentionally NORMAL,\n   not bold.\n*\/\n.custom-css .calc-checkbox-row label {\n    display: block;\n\n    margin: 0;\n    padding: 0;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 20px;\n    line-height: 1.3;\n\n    font-weight: 400 !important;\n\n    color: #292929;\n\n    cursor: pointer;\n}\n\n\n\/* =========================================================\n   BUTTON\n   ========================================================= *\/\n\n.custom-css #salary-calc-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 168px;\n    height: 45px;\n\n    margin: 30px 0 0;\n    padding: 0 24px;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 20px;\n    line-height: 1;\n    font-weight: 700;\n\n    color: #ffffff;\n    background-color: #ff7133;\n\n    border: 1px solid #ff7133;\n    border-radius: 32px;\n\n    outline: none;\n    box-shadow: none;\n\n    cursor: pointer;\n\n    transition:\n        color 0.25s ease,\n        background-color 0.25s ease,\n        border-color 0.25s ease;\n}\n\n\n.custom-css #salary-calc-btn:hover,\n.custom-css #salary-calc-btn:focus {\n    color: #ff7133;\n    background-color: #ffffff;\n\n    border-color: #20a9ad;\n\n    outline: none;\n    box-shadow: none;\n}\n\n\n\/* =========================================================\n   RIGHT COLUMN\n   ========================================================= *\/\n\n#calculatedSalaryOutput.custom-css {\n    width: 100%;\n\n    margin: 0;\n    padding: 0;\n}\n\n\n.custom-css .calc-col-2 {\n    width: 100%;\n}\n\n\n.custom-css .calc-col-2 p {\n    margin: 0;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 16px;\n    line-height: 1.55;\n    font-weight: 600;\n\n    color: #333333;\n\n    text-align: center;\n}\n\n\n\/* =========================================================\n   RESULT\n   ========================================================= *\/\n\n.custom-css .salary-result {\n    width: 100%;\n    max-width: 100%;\n\n    margin: 0;\n    padding: 0;\n\n    font-family: \"Poppins\", sans-serif;\n\n    color: #292929;\n}\n\n\n.custom-css .salary-table-panel {\n    width: 100%;\n\n    margin: 0;\n    padding: 0;\n\n    border: 0;\n    box-shadow: none;\n}\n\n\n.custom-css .salary-result-heading {\n    width: 100%;\n\n    margin: 0 0 20px;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 20px;\n    line-height: 1.3;\n    font-weight: 800;\n\n    color: #292929;\n\n    text-transform: uppercase;\n}\n\n\n\/* =========================================================\n   RESULT TABLE\n   ========================================================= *\/\n\n.custom-css table.table.salary-table {\n    width: 100% !important;\n    max-width: 100% !important;\n\n    margin: 0 0 15px !important;\n\n    border-collapse: collapse !important;\n    border-spacing: 0;\n\n    table-layout: fixed;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 16px;\n    line-height: 1.4;\n\n    background: transparent;\n}\n\n\n.custom-css .salary-table th,\n.custom-css .salary-table td {\n    padding: 9px 8px;\n\n    vertical-align: middle;\n\n    border: 0;\n    border-bottom: 1px solid #e5e5e5;\n\n    background: transparent;\n\n    color: #292929;\n}\n\n\n.custom-css .salary-table th {\n    font-weight: 700;\n\n    text-align: left;\n}\n\n\n.custom-css .salary-table td:first-child {\n    width: 68%;\n}\n\n\n.custom-css .salary-table td.payment-info {\n    width: 32%;\n\n    padding-left: 10px;\n\n    font-weight: 400;\n\n    text-align: right;\n\n    white-space: nowrap;\n}\n\n\n.custom-css .salary-table .bold td {\n    font-weight: 700;\n}\n\n\n\/* Final payment *\/\n.custom-css .salary-table .success {\n    padding-top: 12px;\n    padding-bottom: 12px;\n\n    border-bottom: 0;\n\n    font-weight: 700;\n}\n\n\n.custom-css .salary-table .success h5 {\n    margin: 0 !important;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 16px;\n    line-height: 1.4;\n}\n\n\n.custom-css .salary-result-note {\n    margin: 10px 0 0;\n\n    font-family: \"Poppins\", sans-serif;\n    font-size: 12px;\n    line-height: 1.5;\n    font-style: italic;\n\n    color: #333333;\n}\n\n\n\/* =========================================================\n   TABLET\n   ========================================================= *\/\n\n@media (max-width: 1024px) {\n\n    .custom-css .calcDiv {\n        gap: 15px;\n    }\n\n\n    .custom-css .calcDiv-col-2 {\n        flex: 0 0 190px;\n\n        width: 190px;\n        min-width: 190px;\n    }\n\n\n    .custom-css .calcDiv label {\n        font-size: 17px;\n    }\n\n\n    .custom-css .calc-checkbox-row label {\n        font-size: 17px;\n\n        font-weight: 400 !important;\n    }\n\n\n    .custom-css .calcDiv select,\n    .custom-css .input-group input[type=\"text\"] {\n        font-size: 15px;\n    }\n\n\n    .custom-css .input-group-addon {\n        font-size: 15px;\n    }\n\n\n    .custom-css .calc-col-2 p {\n        font-size: 15px;\n        line-height: 1.5;\n    }\n\n\n    .custom-css table.table.salary-table {\n        font-size: 15px;\n    }\n}\n\n\n\/* =========================================================\n   MOBILE\n   ========================================================= *\/\n\n@media (max-width: 767px) {\n\n    .custom-css .calcDiv {\n        flex-direction: column;\n        align-items: stretch;\n        justify-content: flex-start;\n\n        gap: 7px;\n\n        min-height: 0;\n\n        padding-bottom: 18px;\n    }\n\n\n    .custom-css .calcDiv-col-1,\n    .custom-css .calcDiv-col-2 {\n        flex: 0 0 auto;\n\n        width: 100%;\n        min-width: 0;\n    }\n\n\n    .custom-css .calcDiv label {\n        font-size: 16px;\n        line-height: 1.3;\n    }\n\n\n    .custom-css .calcDiv select {\n        width: 100%;\n        max-width: 100%;\n\n        height: 44px;\n\n        font-size: 15px;\n    }\n\n\n    .custom-css .input-group {\n        width: 100%;\n    }\n\n\n    .custom-css .input-group input[type=\"text\"] {\n        flex: 1 1 auto;\n\n        width: 100%;\n        min-width: 0;\n        max-width: none;\n\n        height: 44px;\n\n        font-size: 15px;\n    }\n\n\n    .custom-css .input-group-addon {\n        flex: 0 0 auto;\n\n        font-size: 15px;\n    }\n\n\n    .custom-css .calc-checkbox-row {\n        align-items: flex-start;\n\n        margin-bottom: 16px;\n    }\n\n\n    .custom-css .calc-checkbox-row label {\n        font-size: 16px;\n        line-height: 1.35;\n\n        font-weight: 400 !important;\n    }\n\n\n    .custom-css #salary-calc-btn {\n        width: 168px;\n        height: 56px;\n\n        margin-top: 10px;\n\n        font-size: 18px;\n    }\n\n\n    .custom-css .calc-col-2 p {\n        font-size: 14px;\n        line-height: 1.55;\n    }\n\n\n    .custom-css .salary-result-heading {\n        font-size: 18px;\n    }\n\n\n    .custom-css table.table.salary-table {\n        width: 100% !important;\n\n        font-size: 14px;\n    }\n\n\n    .custom-css .salary-table th,\n    .custom-css .salary-table td {\n        padding: 8px 5px;\n    }\n\n\n    .custom-css .salary-table td:first-child {\n        width: 63%;\n    }\n\n\n    .custom-css .salary-table td.payment-info {\n        width: 37%;\n\n        padding-left: 7px;\n    }\n\n\n    .custom-css .salary-table .success h5 {\n        font-size: 14px;\n    }\n}\n\n\n\/* =========================================================\n   SMALL MOBILE\n   ========================================================= *\/\n\n@media (max-width: 400px) {\n\n    .custom-css #salary-calc-btn {\n        width: 155px;\n        height: 52px;\n\n        font-size: 17px;\n    }\n\n\n    .custom-css table.table.salary-table {\n        table-layout: auto;\n    }\n\n\n    .custom-css .salary-table td:first-child,\n    .custom-css .salary-table td.payment-info {\n        width: auto;\n    }\n\n\n    .custom-css .salary-table td.payment-info {\n        white-space: nowrap;\n    }\n}\n\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4304d6c elementor-widget elementor-widget-html\" data-id=\"4304d6c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\n(function () {\n    \"use strict\";\n\n\n    \/* =====================================================\n       INITIALIZE\n       ===================================================== *\/\n\n    function initSalaryCalculator() {\n\n        const sumBasedOn =\n            document.getElementById(\"sumBasedOn\");\n\n        const amountPerHour =\n            document.getElementById(\"amountPerHour\");\n\n        const totalHours =\n            document.getElementById(\"totalHours\");\n\n        const totalSumByProject =\n            document.getElementById(\"totalSumByProject\");\n\n        const isVATIncluded =\n            document.getElementById(\"isVATIncluded\");\n\n        const taxPercent =\n            document.getElementById(\"taxPercent\");\n\n        const VATPercent =\n            document.getElementById(\"VATPercent\");\n\n        const pikapalkka =\n            document.getElementById(\"Pikapalkka\");\n\n        const YELPayment =\n            document.getElementById(\"YELPayment\");\n\n        const calculateButton =\n            document.getElementById(\"salary-calc-btn\");\n\n\n        \/*\n         * Prevent duplicate binding in Elementor.\n         *\/\n        if (\n            !calculateButton ||\n            calculateButton.dataset.salaryCalculatorBound === \"1\"\n        ) {\n            return;\n        }\n\n\n        calculateButton.dataset.salaryCalculatorBound = \"1\";\n\n\n        \/* =================================================\n           CONSTANTS\n\n           Existing calculator values kept.\n           ================================================= *\/\n\n        const SERVICE_FEE_PERCENT = 1.9;\n\n        const SOCIAL_SECURITY_RATE = 0.0153;\n\n        \/*\n         * Existing visible label retained.\n         *\/\n        const SOCIAL_SECURITY_DISPLAY = \"1,87\";\n\n        \/*\n         * New optional Pikapalkka.\n         *\/\n        const QUICK_PAY_PERCENT = 3.5;\n\n\n        \/* =================================================\n           HELPERS\n           ================================================= *\/\n\n        function parseNumber(value) {\n\n            if (\n                value === null ||\n                value === undefined\n            ) {\n                return NaN;\n            }\n\n\n            let normalized =\n                String(value)\n                    .trim()\n                    .replace(\/\\u00a0\/g, \"\")\n                    .replace(\/\\s\/g, \"\")\n                    .replace(\/\u20ac\/g, \"\")\n                    .replace(\/%\/g, \"\")\n                    .replace(\/,\/g, \".\");\n\n\n            if (normalized === \"\") {\n                return NaN;\n            }\n\n\n            return Number.parseFloat(\n                normalized\n            );\n        }\n\n\n        function roundTwo(value) {\n\n            return Number(\n                (\n                    Math.round(\n                        (Number(value) + Number.EPSILON) *\n                        100\n                    ) \/ 100\n                ).toFixed(2)\n            );\n        }\n\n\n        function formatCurrency(value) {\n\n            return new Intl.NumberFormat(\n                \"fi-FI\",\n                {\n                    style: \"currency\",\n                    currency: \"EUR\"\n                }\n            ).format(\n                Number(value) || 0\n            );\n        }\n\n\n        function getLanguage() {\n\n            const path =\n                window.location.pathname.toLowerCase();\n\n\n            if (\n                path.includes(\"\/fi\/eng\/\") ||\n                path.includes(\"\/en\/\")\n            ) {\n                return \"en\";\n            }\n\n\n            if (\n                path.includes(\"\/est\/\") ||\n                path.includes(\"\/et\/\")\n            ) {\n                return \"et\";\n            }\n\n\n            return \"fi\";\n        }\n\n\n        \/* =================================================\n           TRANSLATIONS\n           ================================================= *\/\n\n        function getTranslations(language) {\n\n            const translations = {\n\n                fi: {\n\n                    heading:\n                        \"Tuloarvio\",\n\n                    invoices:\n                        \"Laskutus\",\n\n                    grossInvoice:\n                        \"Summa, alv {vat}% (brutto)\",\n\n                    netInvoice:\n                        \"Summa, alv 0% (netto)\",\n\n                    serviceFee:\n                        \"Palvelupalkkio {percent}%\",\n\n                    quickPayFee:\n                        \"Pikapalkka 3,5%\",\n\n                    quickPayVat:\n                        \"Pikapalkan ALV ({vat}%)\",\n\n                    quickPayTotal:\n                        \"Pikapalkka yhteens\u00e4\",\n\n                    socialFee:\n                        \"Sosiaaliturvamaksu ({percent}%)\",\n\n                    salary:\n                        \"Palkka\",\n\n                    grossSalary:\n                        \"Bruttopalkka\",\n\n                    withholding:\n                        \"Ennakonpid\u00e4tys ({percent}%)\",\n\n                    paid:\n                        \"Maksetaan tilille\",\n\n                    note:\n                        \"Huomaa, ett\u00e4 ennakonpid\u00e4tys on veroprosenttisi suuruinen. Jos j\u00e4t\u00e4t veroprosentin t\u00e4ytt\u00e4m\u00e4tt\u00e4, laskennassa k\u00e4ytet\u00e4\u00e4n automaattisesti 60 prosentin ennakonpid\u00e4tyst\u00e4.\",\n\n                    missingBoth:\n                        \"'Tuntihinta' ja 'Tuntien m\u00e4\u00e4r\u00e4' kent\u00e4t eiv\u00e4t saa olla tyhji\u00e4. Muutoin ne katsotaan virheellisiksi.\",\n\n                    missingHourly:\n                        \"'Tuntihinta' kentt\u00e4 ei saa olla tyhj\u00e4. Muutoin se katsotaan virheelliseksi.\",\n\n                    missingHours:\n                        \"'Tuntien m\u00e4\u00e4r\u00e4' kentt\u00e4 ei saa olla tyhj\u00e4. Muutoin se katsotaan virheelliseksi.\",\n\n                    missingProject:\n                        \"'Laskutettava summa' kentt\u00e4 ei saa olla tyhj\u00e4. Muutoin se katsotaan virheelliseksi.\",\n\n                    invalidNumber:\n                        \"Tarkista sy\u00f6tetyt arvot. Arvojen tulee olla numeroita.\",\n\n                    invalidTax:\n                        \"Sy\u00f6t\u00e4 veroprosentti numerona v\u00e4lilt\u00e4 0\u2013100 tai j\u00e4t\u00e4 kentt\u00e4 tyhj\u00e4ksi.\"\n                },\n\n\n                en: {\n\n                    heading:\n                        \"Estimated Income\",\n\n                    invoices:\n                        \"Invoices\",\n\n                    grossInvoice:\n                        \"Sum, VAT {vat}% (gross)\",\n\n                    netInvoice:\n                        \"Sum, VAT 0% (net)\",\n\n                    serviceFee:\n                        \"Service Fee {percent}%\",\n\n                    quickPayFee:\n                        \"Quick Pay 3.5%\",\n\n                    quickPayVat:\n                        \"Quick Pay VAT ({vat}%)\",\n\n                    quickPayTotal:\n                        \"Total Quick Pay Cost\",\n\n                    socialFee:\n                        \"Social Security Fee ({percent}%)\",\n\n                    salary:\n                        \"Salary\",\n\n                    grossSalary:\n                        \"Gross salary\",\n\n                    withholding:\n                        \"Withholding tax ({percent}%)\",\n\n                    paid:\n                        \"Paid to account\",\n\n                    note:\n                        \"Notice that if you leave the withholding tax empty, the calculator will use a 60% withholding tax automatically.\",\n\n                    missingBoth:\n                        \"The 'Hour price' and 'Amount of hours' fields should not be empty. Otherwise, it will be considered invalid.\",\n\n                    missingHourly:\n                        \"The 'Hour price' field should not be empty. Otherwise, it will be considered invalid.\",\n\n                    missingHours:\n                        \"The 'Amount of hours' field should not be empty. Otherwise, it will be considered invalid.\",\n\n                    missingProject:\n                        \"The 'Billable amount' field should not be empty. Otherwise, it will be considered invalid.\",\n\n                    invalidNumber:\n                        \"Please check the entered values. They must be valid numbers.\",\n\n                    invalidTax:\n                        \"Enter a tax percentage between 0 and 100, or leave it empty.\"\n                },\n\n\n                et: {\n\n                    heading:\n                        \"Hinnanguline t\u00f6\u00f6tulu\",\n\n                    invoices:\n                        \"Arved\",\n\n                    grossInvoice:\n                        \"Summa, vat {vat}% (bruto)\",\n\n                    netInvoice:\n                        \"Summa, vat 0% (neto)\",\n\n                    serviceFee:\n                        \"Teenustasu {percent}%\",\n\n                    quickPayFee:\n                        \"Pikapalkka 3,5%\",\n\n                    quickPayVat:\n                        \"Pikapalkka KM ({vat}%)\",\n\n                    quickPayTotal:\n                        \"Pikapalkka kokku\",\n\n                    socialFee:\n                        \"Sotsiaalkindlustustasu ({percent}%)\",\n\n                    salary:\n                        \"Palk\",\n\n                    grossSalary:\n                        \"Brutot\u00f6\u00f6tasu\",\n\n                    withholding:\n                        \"Kinnipeetav maks ({percent}%)\",\n\n                    paid:\n                        \"Makstakse kontole\",\n\n                    note:\n                        \"Pange t\u00e4hele, et kui j\u00e4tate maksu kinnipidamine % t\u00fchjaks, kasutab kalkulaator automaatselt 60% kinnipeetavat maksu.\",\n\n                    missingBoth:\n                        \"Sisestage tunnihind ja tundide arv.\",\n\n                    missingHourly:\n                        \"Sisestage tunnihind.\",\n\n                    missingHours:\n                        \"Sisestage tundide arv.\",\n\n                    missingProject:\n                        \"Sisestage arveldatav summa.\",\n\n                    invalidNumber:\n                        \"Kontrollige sisestatud v\u00e4\u00e4rtusi.\",\n\n                    invalidTax:\n                        \"Sisestage maksum\u00e4\u00e4r vahemikus 0\u2013100.\"\n                }\n            };\n\n\n            return translations[language] ||\n                translations.fi;\n        }\n\n\n        function replaceTokens(\n            text,\n            replacements\n        ) {\n\n            let result = text;\n\n\n            Object.keys(\n                replacements\n            ).forEach(\n                function (key) {\n\n                    result =\n                        result.replace(\n                            \"{\" + key + \"}\",\n                            replacements[key]\n                        );\n                }\n            );\n\n\n            return result;\n        }\n\n\n        \/* =================================================\n           HOURS \/ PROJECT VISIBILITY\n           ================================================= *\/\n\n        function updateCalculationType() {\n\n            const calculationType =\n                sumBasedOn\n                    ?\n                    sumBasedOn.value\n                    :\n                    \"hours\";\n\n\n            const hourRows =\n                document.querySelectorAll(\n                    \".custom-css .calc-by-hour\"\n                );\n\n\n            const projectRows =\n                document.querySelectorAll(\n                    \".custom-css .calc-by-project\"\n                );\n\n\n            hourRows.forEach(\n                function (row) {\n\n                    if (\n                        calculationType === \"hours\"\n                    ) {\n\n                        row.style.display =\n                            \"flex\";\n\n                    } else {\n\n                        row.style.display =\n                            \"none\";\n                    }\n                }\n            );\n\n\n            projectRows.forEach(\n                function (row) {\n\n                    if (\n                        calculationType === \"project\"\n                    ) {\n\n                        row.style.display =\n                            \"flex\";\n\n                    } else {\n\n                        row.style.display =\n                            \"none\";\n                    }\n                }\n            );\n        }\n\n\n        if (sumBasedOn) {\n\n            sumBasedOn.addEventListener(\n                \"change\",\n                updateCalculationType\n            );\n        }\n\n\n        \/*\n         * Correct initial state.\n         *\/\n        updateCalculationType();\n\n\n        \/* =================================================\n           CREATE RESULT HTML\n           ================================================= *\/\n\n        function createResultHTML(data) {\n\n            const language =\n                getLanguage();\n\n\n            const text =\n                getTranslations(\n                    language\n                );\n\n\n            const vatDisplay =\n                String(\n                    data.vatPercent\n                ).replace(\n                    \".\",\n                    \",\"\n                );\n\n\n            const taxDisplay =\n                String(\n                    data.taxPercent\n                ).replace(\n                    \".\",\n                    \",\"\n                );\n\n\n            const socialDisplay =\n                data.noYel\n                    ?\n                    \"0\"\n                    :\n                    SOCIAL_SECURITY_DISPLAY;\n\n\n            const grossInvoiceLabel =\n                replaceTokens(\n                    text.grossInvoice,\n                    {\n                        vat:\n                            vatDisplay\n                    }\n                );\n\n\n            const serviceFeeLabel =\n                replaceTokens(\n                    text.serviceFee,\n                    {\n                        percent:\n                            SERVICE_FEE_PERCENT\n                    }\n                );\n\n\n            const socialFeeLabel =\n                replaceTokens(\n                    text.socialFee,\n                    {\n                        percent:\n                            socialDisplay\n                    }\n                );\n\n\n            const withholdingLabel =\n                replaceTokens(\n                    text.withholding,\n                    {\n                        percent:\n                            taxDisplay\n                    }\n                );\n\n\n            const quickPayVatLabel =\n                replaceTokens(\n                    text.quickPayVat,\n                    {\n                        vat:\n                            vatDisplay\n                    }\n                );\n\n\n            \/*\n             * Pikapalkka rows only appear\n             * when checkbox is selected.\n             *\/\n            const quickPayRows =\n                data.quickPayEnabled\n                    ?\n                    `\n                    <tr>\n                        <td>\n                            ${text.quickPayFee}\n                        <\/td>\n\n                        <td class=\"payment-info\">\n                            - ${formatCurrency(\n                                data.quickPayFee\n                            )}\n                        <\/td>\n                    <\/tr>\n\n\n                    <tr>\n                        <td>\n                            ${quickPayVatLabel}\n                        <\/td>\n\n                        <td class=\"payment-info\">\n                            - ${formatCurrency(\n                                data.quickPayVat\n                            )}\n                        <\/td>\n                    <\/tr>\n\n\n                    <tr class=\"bold\">\n                        <td>\n                            ${text.quickPayTotal}\n                        <\/td>\n\n                        <td class=\"payment-info\">\n                            - ${formatCurrency(\n                                data.quickPayTotal\n                            )}\n                        <\/td>\n                    <\/tr>\n                    `\n                    :\n                    \"\";\n\n\n            return `\n                <div class=\"salary-result\">\n\n                    <div class=\"salary-table-panel\">\n\n                        <div class=\"salary-result-heading\">\n                            ${text.heading}\n                        <\/div>\n\n\n                        <table class=\"table salary-table\">\n\n                            <tbody>\n\n                                <tr>\n                                    <th colspan=\"2\">\n                                        ${text.invoices}\n                                    <\/th>\n                                <\/tr>\n\n\n                                <tr>\n\n                                    <td>\n                                        ${grossInvoiceLabel}\n                                    <\/td>\n\n                                    <td class=\"payment-info\">\n                                        ${formatCurrency(\n                                            data.sumWithVat\n                                        )}\n                                    <\/td>\n\n                                <\/tr>\n\n\n                                <tr>\n\n                                    <td>\n                                        ${text.netInvoice}\n                                    <\/td>\n\n                                    <td class=\"payment-info\">\n                                        ${formatCurrency(\n                                            data.sumWithoutVat\n                                        )}\n                                    <\/td>\n\n                                <\/tr>\n\n\n                                <tr>\n\n                                    <td>\n                                        ${serviceFeeLabel}\n                                    <\/td>\n\n                                    <td class=\"payment-info\">\n                                        - ${formatCurrency(\n                                            data.serviceFee\n                                        )}\n                                    <\/td>\n\n                                <\/tr>\n\n\n                                ${quickPayRows}\n\n\n                                <tr>\n\n                                    <td>\n                                        ${socialFeeLabel}\n                                    <\/td>\n\n                                    <td class=\"payment-info\">\n                                        - ${formatCurrency(\n                                            data.socialSecurityFee\n                                        )}\n                                    <\/td>\n\n                                <\/tr>\n\n\n                                <tr>\n                                    <th colspan=\"2\">\n                                        ${text.salary}\n                                    <\/th>\n                                <\/tr>\n\n\n                                <tr class=\"bold\">\n\n                                    <td>\n                                        ${text.grossSalary}\n                                    <\/td>\n\n                                    <td class=\"payment-info\">\n                                        ${formatCurrency(\n                                            data.grossAmount\n                                        )}\n                                    <\/td>\n\n                                <\/tr>\n\n\n                                <tr>\n\n                                    <td>\n                                        ${withholdingLabel}\n                                    <\/td>\n\n                                    <td class=\"payment-info\">\n                                        - ${formatCurrency(\n                                            data.taxAmount\n                                        )}\n                                    <\/td>\n\n                                <\/tr>\n\n                            <\/tbody>\n\n                        <\/table>\n\n\n                        <table class=\"table salary-table\">\n\n                            <tbody>\n\n                                <tr>\n\n                                    <td class=\"success\">\n\n                                        <h5>\n                                            <strong>\n                                                ${text.paid}\n                                            <\/strong>\n                                        <\/h5>\n\n                                    <\/td>\n\n\n                                    <td\n                                        class=\"\n                                            success\n                                            payment-info\n                                        \"\n                                    >\n\n                                        <h5>\n                                            <strong>\n                                                ${formatCurrency(\n                                                    data.finalAmount\n                                                )}\n                                            <\/strong>\n                                        <\/h5>\n\n                                    <\/td>\n\n                                <\/tr>\n\n                            <\/tbody>\n\n                        <\/table>\n\n\n                        <div class=\"salary-result-note\">\n                            ${text.note}\n                        <\/div>\n\n                    <\/div>\n\n                <\/div>\n            `;\n        }\n\n\n        \/* =================================================\n           CALCULATE\n           ================================================= *\/\n\n        function calculateSalary(event) {\n\n            if (event) {\n                event.preventDefault();\n            }\n\n\n            \/*\n             * Get right-side Elementor output\n             * fresh every click.\n             *\/\n            const output =\n                document.getElementById(\n                    \"calculatedSalaryOutput\"\n                );\n\n\n            if (!output) {\n\n                console.error(\n                    \"Calculator output #calculatedSalaryOutput was not found.\"\n                );\n\n                return;\n            }\n\n\n            const language =\n                getLanguage();\n\n\n            const text =\n                getTranslations(\n                    language\n                );\n\n\n            const calculationType =\n                sumBasedOn\n                    ?\n                    sumBasedOn.value\n                    :\n                    \"hours\";\n\n\n            \/* =================================================\n               VALIDATE HOURLY\n               ================================================= *\/\n\n            if (\n                calculationType ===\n                \"hours\"\n            ) {\n\n                const hourlyRaw =\n                    amountPerHour\n                        ?\n                        amountPerHour.value.trim()\n                        :\n                        \"\";\n\n\n                const hoursRaw =\n                    totalHours\n                        ?\n                        totalHours.value.trim()\n                        :\n                        \"\";\n\n\n                if (\n                    hourlyRaw === \"\" &&\n                    hoursRaw === \"\"\n                ) {\n\n                    alert(\n                        text.missingBoth\n                    );\n\n                    return;\n                }\n\n\n                if (\n                    hourlyRaw === \"\"\n                ) {\n\n                    alert(\n                        text.missingHourly\n                    );\n\n                    return;\n                }\n\n\n                if (\n                    hoursRaw === \"\"\n                ) {\n\n                    alert(\n                        text.missingHours\n                    );\n\n                    return;\n                }\n            }\n\n\n            \/* =================================================\n               VALIDATE PROJECT\n               ================================================= *\/\n\n            if (\n                calculationType ===\n                \"project\"\n            ) {\n\n                const projectRaw =\n                    totalSumByProject\n                        ?\n                        totalSumByProject.value.trim()\n                        :\n                        \"\";\n\n\n                if (\n                    projectRaw === \"\"\n                ) {\n\n                    alert(\n                        text.missingProject\n                    );\n\n                    return;\n                }\n            }\n\n\n            \/* =================================================\n               READ VALUES\n               ================================================= *\/\n\n            const hourlyRate =\n                parseNumber(\n                    amountPerHour\n                        ?\n                        amountPerHour.value\n                        :\n                        \"\"\n                );\n\n\n            const hours =\n                parseNumber(\n                    totalHours\n                        ?\n                        totalHours.value\n                        :\n                        \"\"\n                );\n\n\n            const projectTotal =\n                parseNumber(\n                    totalSumByProject\n                        ?\n                        totalSumByProject.value\n                        :\n                        \"\"\n                );\n\n\n            const taxRaw =\n                taxPercent\n                    ?\n                    taxPercent.value.trim()\n                    :\n                    \"\";\n\n\n            \/*\n             * Existing behavior:\n             * empty tax = 60%.\n             *\/\n            const taxRate =\n                taxRaw === \"\"\n                    ?\n                    60\n                    :\n                    parseNumber(\n                        taxRaw\n                    );\n\n\n            const vatRate =\n                parseNumber(\n                    VATPercent\n                        ?\n                        VATPercent.value\n                        :\n                        \"25.5\"\n                );\n\n\n            \/* =================================================\n               NUMBER VALIDATION\n               ================================================= *\/\n\n            if (\n                calculationType === \"hours\" &&\n                (\n                    !Number.isFinite(\n                        hourlyRate\n                    ) ||\n                    !Number.isFinite(\n                        hours\n                    )\n                )\n            ) {\n\n                alert(\n                    text.invalidNumber\n                );\n\n                return;\n            }\n\n\n            if (\n                calculationType === \"project\" &&\n                !Number.isFinite(\n                    projectTotal\n                )\n            ) {\n\n                alert(\n                    text.invalidNumber\n                );\n\n                return;\n            }\n\n\n            if (\n                !Number.isFinite(\n                    taxRate\n                ) ||\n                taxRate < 0 ||\n                taxRate > 100\n            ) {\n\n                alert(\n                    text.invalidTax\n                );\n\n                return;\n            }\n\n\n            if (\n                !Number.isFinite(\n                    vatRate\n                )\n            ) {\n\n                alert(\n                    text.invalidNumber\n                );\n\n                return;\n            }\n\n\n            \/* =================================================\n               INITIAL AMOUNT\n               ================================================= *\/\n\n            let initialSum;\n\n\n            if (\n                calculationType ===\n                \"hours\"\n            ) {\n\n                initialSum =\n                    hourlyRate *\n                    hours;\n\n            } else {\n\n                initialSum =\n                    projectTotal;\n            }\n\n\n            \/* =================================================\n               VAT\n\n               Existing calculation preserved.\n               ================================================= *\/\n\n            let sumWithVat;\n\n            let sumWithoutVat;\n\n\n            const vatIncluded =\n                !isVATIncluded ||\n                isVATIncluded.value ===\n                \"true\";\n\n\n            if (vatIncluded) {\n\n                sumWithVat =\n                    roundTwo(\n                        initialSum\n                    );\n\n\n                sumWithoutVat =\n                    roundTwo(\n                        initialSum \/\n                        (\n                            (\n                                vatRate +\n                                100\n                            ) \/\n                            100\n                        )\n                    );\n\n            } else {\n\n                sumWithoutVat =\n                    roundTwo(\n                        initialSum\n                    );\n\n\n                sumWithVat =\n                    roundTwo(\n                        initialSum *\n                        (\n                            (\n                                vatRate +\n                                100\n                            ) \/\n                            100\n                        )\n                    );\n            }\n\n\n            \/* =================================================\n               SERVICE FEE\n\n               Existing 1.9% calculation.\n               ================================================= *\/\n\n            const serviceFee =\n                roundTwo(\n                    (\n                        SERVICE_FEE_PERCENT \/\n                        100\n                    ) *\n                    sumWithoutVat\n                );\n\n\n            \/* =================================================\n               PIKAPALKKA\n\n               Optional.\n\n               Gross invoice amount x 3.5%\n\n               VAT is added separately.\n               ================================================= *\/\n\n            const quickPayEnabled =\n                Boolean(\n                    pikapalkka &&\n                    pikapalkka.checked\n                );\n\n\n            let quickPayFee = 0;\n\n            let quickPayVat = 0;\n\n            let quickPayTotal = 0;\n\n\n            if (\n                quickPayEnabled\n            ) {\n\n                \/*\n                 * Example:\n                 *\n                 * 100 x 3.5%\n                 * = 3.50\n                 *\/\n                quickPayFee =\n                    roundTwo(\n                        sumWithVat *\n                        (\n                            QUICK_PAY_PERCENT \/\n                            100\n                        )\n                    );\n\n\n                \/*\n                 * Example:\n                 *\n                 * 3.50 x 25.5%\n                 * = 0.89\n                 *\/\n                quickPayVat =\n                    roundTwo(\n                        quickPayFee *\n                        (\n                            vatRate \/\n                            100\n                        )\n                    );\n\n\n                \/*\n                 * 3.50 + 0.89\n                 * = 4.39\n                 *\/\n                quickPayTotal =\n                    roundTwo(\n                        quickPayFee +\n                        quickPayVat\n                    );\n            }\n\n\n            \/* =================================================\n               YEL\n               ================================================= *\/\n\n            const noYel =\n                Boolean(\n                    YELPayment &&\n                    YELPayment.checked\n                );\n\n\n            const activeSocialRate =\n                noYel\n                    ?\n                    0\n                    :\n                    SOCIAL_SECURITY_RATE;\n\n\n            \/* =================================================\n               AMOUNT AFTER FEES\n\n               If Pikapalkka is not checked,\n               quickPayTotal = 0 and this remains\n               the existing calculation.\n               ================================================= *\/\n\n            const amountAfterFees =\n                roundTwo(\n                    sumWithoutVat -\n                    serviceFee -\n                    quickPayTotal\n                );\n\n\n            \/* =================================================\n               SOCIAL SECURITY\n               ================================================= *\/\n\n            let socialSecurityFee =\n                0;\n\n\n            if (\n                activeSocialRate !==\n                0\n            ) {\n\n                socialSecurityFee =\n                    roundTwo(\n                        (\n                            amountAfterFees \/\n                            (\n                                1 +\n                                activeSocialRate\n                            )\n                        ) *\n                        activeSocialRate\n                    );\n            }\n\n\n            \/* =================================================\n               GROSS SALARY\n               ================================================= *\/\n\n            const grossAmount =\n                roundTwo(\n                    amountAfterFees -\n                    socialSecurityFee\n                );\n\n\n            \/* =================================================\n               TAX\n               ================================================= *\/\n\n            const taxAmount =\n                roundTwo(\n                    (\n                        taxRate \/\n                        100\n                    ) *\n                    grossAmount\n                );\n\n\n            \/* =================================================\n               FINAL PAYMENT\n               ================================================= *\/\n\n            const finalAmount =\n                roundTwo(\n                    grossAmount -\n                    taxAmount\n                );\n\n\n            \/* =================================================\n               WRITE TO RIGHT COLUMN\n               ================================================= *\/\n\n            output.innerHTML =\n                createResultHTML({\n                    vatPercent:\n                        vatRate,\n\n                    taxPercent:\n                        taxRate,\n\n                    noYel:\n                        noYel,\n\n                    sumWithVat:\n                        sumWithVat,\n\n                    sumWithoutVat:\n                        sumWithoutVat,\n\n                    serviceFee:\n                        serviceFee,\n\n                    quickPayEnabled:\n                        quickPayEnabled,\n\n                    quickPayFee:\n                        quickPayFee,\n\n                    quickPayVat:\n                        quickPayVat,\n\n                    quickPayTotal:\n                        quickPayTotal,\n\n                    socialSecurityFee:\n                        socialSecurityFee,\n\n                    grossAmount:\n                        grossAmount,\n\n                    taxAmount:\n                        taxAmount,\n\n                    finalAmount:\n                        finalAmount\n                });\n\n\n            \/*\n             * Helpful on mobile after calculation.\n             *\/\n            if (\n                window.innerWidth <=\n                767\n            ) {\n\n                output.scrollIntoView({\n                    behavior:\n                        \"smooth\",\n\n                    block:\n                        \"start\"\n                });\n            }\n        }\n\n\n        \/* =================================================\n           SINGLE BUTTON HANDLER\n           ================================================= *\/\n\n        calculateButton.addEventListener(\n            \"click\",\n            calculateSalary\n        );\n    }\n\n\n    \/* =====================================================\n       RUN\n       ===================================================== *\/\n\n    if (\n        document.readyState ===\n        \"loading\"\n    ) {\n\n        document.addEventListener(\n            \"DOMContentLoaded\",\n            initSalaryCalculator\n        );\n\n    } else {\n\n        initSalaryCalculator();\n    }\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-inner-section elementor-element elementor-element-3578af8 custom-css elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"54052\" data-id=\"3578af8\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-4e80729\" data-eae-slider=\"40854\" data-id=\"4e80729\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d7fffbc elementor-widget elementor-widget-html\" data-id=\"d7fffbc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"custom-css calc-col-1\">\n\n    <!-- Calculation type -->\n    <div class=\"calcDiv\">\n        <div class=\"calcDiv-col-1\">\n            <label class=\"calc-label\" for=\"sumBasedOn\">\n                Laskutettava summa on:\n            <\/label>\n        <\/div>\n\n        <div class=\"calcDiv-col-2\">\n            <select name=\"sumBasedOn\" id=\"sumBasedOn\">\n                <option value=\"hours\">tuntiperusteinen<\/option>\n                <option value=\"project\">projektiluonteinen<\/option>\n            <\/select>\n        <\/div>\n    <\/div>\n\n\n    <!-- Hourly amount -->\n    <div class=\"calcDiv calc-by-hour\">\n        <div class=\"calcDiv-col-1\">\n            <label class=\"calc-label\" for=\"amountPerHour\">\n                Laskutus per tunti:\n            <\/label>\n        <\/div>\n\n        <div class=\"calcDiv-col-2\">\n            <div class=\"input-group\">\n                <input\n                    id=\"amountPerHour\"\n                    class=\"form-control\"\n                    autocomplete=\"off\"\n                    name=\"amountPerHour\"\n                    type=\"text\"\n                \/>\n\n                <div class=\"input-group-addon\">\u20ac<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n\n    <!-- Total hours -->\n    <div class=\"calcDiv calc-by-hour\">\n        <div class=\"calcDiv-col-1\">\n            <label class=\"calc-label\" for=\"totalHours\">\n                Ty\u00f6tunnit yhteens\u00e4:\n            <\/label>\n        <\/div>\n\n        <div class=\"calcDiv-col-2\">\n            <div class=\"input-group\">\n                <input\n                    id=\"totalHours\"\n                    class=\"form-control\"\n                    autocomplete=\"off\"\n                    name=\"totalHours\"\n                    type=\"text\"\n                \/>\n\n                <div class=\"input-group-addon\">tuntia<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n\n    <!-- Project amount -->\n    <div class=\"calcDiv calc-by-project\">\n        <div class=\"calcDiv-col-1\">\n            <label class=\"calc-label\" for=\"totalSumByProject\">\n                Laskutettava summa:\n            <\/label>\n        <\/div>\n\n        <div class=\"calcDiv-col-2\">\n            <div class=\"input-group\">\n                <input\n                    id=\"totalSumByProject\"\n                    class=\"form-control\"\n                    autocomplete=\"off\"\n                    name=\"totalSumByProject\"\n                    type=\"text\"\n                \/>\n\n                <div class=\"input-group-addon\">\u20ac<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n\n    <!-- VAT included -->\n    <div class=\"calcDiv\">\n        <div class=\"calcDiv-col-1\">\n            <label class=\"calc-label\" for=\"isVATIncluded\">\n                Sis\u00e4lt\u00e4\u00e4k\u00f6 summa arvonlis\u00e4veron?\n            <\/label>\n        <\/div>\n\n        <div class=\"calcDiv-col-2\">\n            <select\n                name=\"isVATIncluded\"\n                id=\"isVATIncluded\"\n            >\n                <option value=\"true\">Kyll\u00e4<\/option>\n                <option value=\"false\">Ei<\/option>\n            <\/select>\n        <\/div>\n    <\/div>\n\n\n    <!-- Tax -->\n    <div class=\"calcDiv\">\n        <div class=\"calcDiv-col-1\">\n            <label\n                for=\"taxPercent\"\n                class=\"calc-label\"\n            >\n                Veroprosenttisi\n            <\/label>\n        <\/div>\n\n        <div class=\"calcDiv-col-2\">\n            <div class=\"input-group\">\n                <input\n                    id=\"taxPercent\"\n                    class=\"form-control\"\n                    autocomplete=\"off\"\n                    name=\"taxPercent\"\n                    type=\"text\"\n                \/>\n\n                <div class=\"input-group-addon\">%<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n\n    <!-- VAT percentage -->\n    <div class=\"calcDiv\">\n        <div class=\"calcDiv-col-1\">\n            <label\n                for=\"VATPercent\"\n                class=\"calc-label\"\n            >\n                ALV%\n            <\/label>\n        <\/div>\n\n        <div class=\"calcDiv-col-2\">\n            <select\n                id=\"VATPercent\"\n                name=\"VATPercent\"\n            >\n                <option value=\"25.5\">25.5%<\/option>\n                <option value=\"24\">24%<\/option>\n                <option value=\"14\">14%<\/option>\n                <option value=\"10\">10%<\/option>\n                <option value=\"0\">0%<\/option>\n            <\/select>\n        <\/div>\n    <\/div>\n\n\n    <!-- Pikapalkka -->\n    <div class=\"calc-checkbox-row\">\n        <input\n            type=\"checkbox\"\n            id=\"Pikapalkka\"\n            name=\"Pikapalkka\"\n        \/>\n\n        <label for=\"Pikapalkka\">\n            Pikapalkka (3,5 %)\n        <\/label>\n    <\/div>\n\n\n    <!-- YEL -->\n    <div class=\"calc-checkbox-row\">\n        <input\n            type=\"checkbox\"\n            id=\"YELPayment\"\n            name=\"YELPayment\"\n        \/>\n\n        <label for=\"YELPayment\">\n            En ole YEL-velvollinen\n        <\/label>\n    <\/div>\n\n\n    <!-- Calculate -->\n    <button\n        type=\"button\"\n        id=\"salary-calc-btn\"\n    >\n        Laske arvio\n    <\/button>\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-fa965cc\" data-eae-slider=\"92535\" data-id=\"fa965cc\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-253d90d elementor-position-inline-start elementor-view-default elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"253d90d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-info-circle\"><\/i>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\t<div id=\"calculatedSalaryOutput\" class=\"custom-css\">\n    <div class=\"calc-col-2\">\n        <p>\n            Huomaa, ett\u00e4 ennakonpid\u00e4tys on veroprosenttisi suuruinen.\n            Jos j\u00e4t\u00e4t veroprosentin t\u00e4ytt\u00e4m\u00e4tt\u00e4, laskennassa k\u00e4ytet\u00e4\u00e4n\n            automaattisesti 60 prosentin ennakonpid\u00e4tyst\u00e4.\n        <\/p>\n    <\/div>\n<\/div>\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-34819f3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"72081\" data-id=\"34819f3\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d2f0afa\" data-eae-slider=\"31278\" data-id=\"d2f0afa\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2d5ee7e elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"2d5ee7e\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">N\u00e4in palkkasi muodostuu<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b9086c6 elementor-widget elementor-widget-text-editor\" data-id=\"b9086c6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Esimerkkilaskelma 1 000 \u20ac laskutuksesta.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-inner-section elementor-element elementor-element-40c4622 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"14690\" data-id=\"40c4622\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-8f678d1\" data-eae-slider=\"75054\" data-id=\"8f678d1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-258f9dd elementor-widget elementor-widget-text-editor\" data-id=\"258f9dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ennakonpid\u00e4tys 20% (esimerkki)<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-9a7aaa6\" data-eae-slider=\"67459\" data-id=\"9a7aaa6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-66879db elementor-widget elementor-widget-text-editor\" data-id=\"66879db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>1000,00 x 0,20 =\u00a0<strong>200,00\u20ac<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-inner-section elementor-element elementor-element-63cecd3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"49959\" data-id=\"63cecd3\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-7d4276f\" data-eae-slider=\"20219\" data-id=\"7d4276f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f074ffd elementor-widget elementor-widget-text-editor\" data-id=\"f074ffd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ty\u00f6nantajan sairausvakuutusmaksun v\u00e4hennys 1,91 %\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-2301dd5\" data-eae-slider=\"12286\" data-id=\"2301dd5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2e1925f elementor-widget elementor-widget-text-editor\" data-id=\"2e1925f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>1000,00 x 0,0191 = <strong>19,10 \u20ac<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-inner-section elementor-element elementor-element-640e6ed elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"49679\" data-id=\"640e6ed\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-ef1ad34\" data-eae-slider=\"84276\" data-id=\"ef1ad34\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5b7005a elementor-widget elementor-widget-text-editor\" data-id=\"5b7005a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Palvelupalkkio 1,9 %<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-df517ed\" data-eae-slider=\"69274\" data-id=\"df517ed\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d10bb32 elementor-widget elementor-widget-text-editor\" data-id=\"d10bb32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>1000,00 x 0,019 =\u00a0<strong>19,00 \u20ac<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-inner-section elementor-element elementor-element-809ba15 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"19870\" data-id=\"809ba15\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-b401799\" data-eae-slider=\"90504\" data-id=\"b401799\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8660e56 elementor-widget elementor-widget-text-editor\" data-id=\"8660e56\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Nettopalkka<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-680700b\" data-eae-slider=\"57631\" data-id=\"680700b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c979ae4 elementor-widget elementor-widget-text-editor\" data-id=\"c979ae4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>1000,00 \u2013 200,00 \u2013 19,10 \u2013 19,00 =<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-11c66da elementor-widget elementor-widget-spacer\" data-id=\"11c66da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c040dae elementor-widget elementor-widget-html\" data-id=\"c040dae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div class=\"ss-net-salary\">\n    <span class=\"ss-net-salary__label\">Arvio nettopalkastasi:<\/span>\n    <strong class=\"ss-net-salary__amount\">761,90 \u20ac<\/strong>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-778868b elementor-align-center elementor-widget elementor-widget-button\" data-id=\"778868b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/accountfinland.invosy.com\/dashboard\/register\" id=\"header-desktop-btn\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Rekister\u00f6idy nyt<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-706af4c elementor-section-height-min-height elementor-section-boxed elementor-section-height-default elementor-section-items-middle\" data-eae-slider=\"20312\" data-id=\"706af4c\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-1ae701c\" data-eae-slider=\"90839\" data-id=\"1ae701c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0c58d52 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"0c58d52\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Tarvitsetko apua palkan laskemiseen?<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c333651 elementor-widget elementor-widget-spacer\" data-id=\"c333651\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c6612fd elementor-widget elementor-widget-text-editor\" data-id=\"c6612fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Jos veroprosentti, v\u00e4hennykset tai nettopalkka mietitytt\u00e4v\u00e4t, asiakaspalvelumme auttaa sinua.<\/p><p>Invosyn asiakaspalvelu auttaa arkisin klo 9\u201316.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2945588 elementor-align-left elementor-widget elementor-widget-button\" data-id=\"2945588\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/invosy.com\/fi\/yhteystiedot\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Ota yhteytt\u00e4<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-8d21149\" data-eae-slider=\"76972\" data-id=\"8d21149\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-aa96447 elementor-absolute elementor-widget elementor-widget-image\" data-id=\"aa96447\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"577\" height=\"433\" src=\"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulaskuri-section-image.png\" class=\"attachment-large size-large wp-image-13530\" alt=\"\" srcset=\"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulaskuri-section-image.png 577w, https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulaskuri-section-image-300x225.png 300w, https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulaskuri-section-image-16x12.png 16w\" sizes=\"(max-width: 577px) 100vw, 577px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tulolaskuri Laske helposti, paljonko palkkaa sinulle j\u00e4\u00e4 k\u00e4teen.\u2028 Ensimm\u00e4inen lasku 0\u20ac Laske arvio palkastasi Laskutettava summa on: tuntiperusteinenprojektiluonteinen Laskutus per tunti: \u20ac Ty\u00f6tunnit yhteens\u00e4: tuntia Laskutettava summa: \u20ac Sis\u00e4lt\u00e4\u00e4k\u00f6 summa arvonlis\u00e4veron? Kyll\u00e4Ei Veroprosenttisi % ALV% 25.5%24%14%10%0% Pikapalkka (3,5 %) En ole YEL-velvollinen Laske arvio Huomaa, ett\u00e4 ennakonpid\u00e4tys on veroprosenttisi suuruinen. Jos j\u00e4t\u00e4t veroprosentin t\u00e4ytt\u00e4m\u00e4tt\u00e4, laskennassa [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-11377","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tulolaskuri \u2013 Laskuta ilman omaa yrityst\u00e4 | Invosy<\/title>\n<meta name=\"description\" content=\"Laske helposti paljonko saat k\u00e4teen kevytyritt\u00e4j\u00e4n\u00e4. Tulolaskuri auttaa sinua hahmottamaan verojen ja palvelumaksujen vaikutuksen tuloihin.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/staging-estonia.invosy.com\/eng\/tulolaskuri\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tulolaskuri \u2013 Laskuta ilman omaa yrityst\u00e4 | Invosy\" \/>\n<meta property=\"og:description\" content=\"Laske helposti paljonko saat k\u00e4teen kevytyritt\u00e4j\u00e4n\u00e4. Tulolaskuri auttaa sinua hahmottamaan verojen ja palvelumaksujen vaikutuksen tuloihin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/staging-estonia.invosy.com\/eng\/tulolaskuri\/\" \/>\n<meta property=\"og:site_name\" content=\"Laskuta ilman omaa yrityst\u00e4 | Invosy\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/invosy\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-27T12:43:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"577\" \/>\n\t<meta property=\"og:image:height\" content=\"433\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/tulolaskuri\\\/\",\"url\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/tulolaskuri\\\/\",\"name\":\"Tulolaskuri \u2013 Laskuta ilman omaa yrityst\u00e4 | Invosy\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/tulolaskuri\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/tulolaskuri\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/taulolaskuri-banner.png\",\"datePublished\":\"2025-04-14T08:43:33+00:00\",\"dateModified\":\"2026-08-27T12:43:19+00:00\",\"description\":\"Laske helposti paljonko saat k\u00e4teen kevytyritt\u00e4j\u00e4n\u00e4. Tulolaskuri auttaa sinua hahmottamaan verojen ja palvelumaksujen vaikutuksen tuloihin.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/tulolaskuri\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/staging-estonia.invosy.com\\\/tulolaskuri\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/tulolaskuri\\\/#primaryimage\",\"url\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/taulolaskuri-banner.png\",\"contentUrl\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/taulolaskuri-banner.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/tulolaskuri\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tulolaskuri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/#website\",\"url\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/\",\"name\":\"Laskuta ilman omaa yrityst\u00e4 | Invosy\",\"description\":\"Enemm\u00e4n kassavirtaa\",\"publisher\":{\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/#organization\",\"name\":\"Invosy\",\"url\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/invosy-brand.png\",\"contentUrl\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/invosy-brand.png\",\"width\":179,\"height\":57,\"caption\":\"Invosy\"},\"image\":{\"@id\":\"https:\\\/\\\/staging-estonia.invosy.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/invosy\\\/\",\"https:\\\/\\\/www.instagram.com\\\/invosy\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tulolaskuri \u2013 Laskuta ilman omaa yrityst\u00e4 | Invosy","description":"Laske helposti paljonko saat k\u00e4teen kevytyritt\u00e4j\u00e4n\u00e4. Tulolaskuri auttaa sinua hahmottamaan verojen ja palvelumaksujen vaikutuksen tuloihin.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/staging-estonia.invosy.com\/eng\/tulolaskuri\/","og_locale":"en_GB","og_type":"article","og_title":"Tulolaskuri \u2013 Laskuta ilman omaa yrityst\u00e4 | Invosy","og_description":"Laske helposti paljonko saat k\u00e4teen kevytyritt\u00e4j\u00e4n\u00e4. Tulolaskuri auttaa sinua hahmottamaan verojen ja palvelumaksujen vaikutuksen tuloihin.","og_url":"https:\/\/staging-estonia.invosy.com\/eng\/tulolaskuri\/","og_site_name":"Laskuta ilman omaa yrityst\u00e4 | Invosy","article_publisher":"https:\/\/www.facebook.com\/invosy\/","article_modified_time":"2026-08-27T12:43:19+00:00","og_image":[{"width":577,"height":433,"url":"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/staging-estonia.invosy.com\/tulolaskuri\/","url":"https:\/\/staging-estonia.invosy.com\/tulolaskuri\/","name":"Tulolaskuri \u2013 Laskuta ilman omaa yrityst\u00e4 | Invosy","isPartOf":{"@id":"https:\/\/staging-estonia.invosy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/staging-estonia.invosy.com\/tulolaskuri\/#primaryimage"},"image":{"@id":"https:\/\/staging-estonia.invosy.com\/tulolaskuri\/#primaryimage"},"thumbnailUrl":"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner.png","datePublished":"2025-04-14T08:43:33+00:00","dateModified":"2026-08-27T12:43:19+00:00","description":"Laske helposti paljonko saat k\u00e4teen kevytyritt\u00e4j\u00e4n\u00e4. Tulolaskuri auttaa sinua hahmottamaan verojen ja palvelumaksujen vaikutuksen tuloihin.","breadcrumb":{"@id":"https:\/\/staging-estonia.invosy.com\/tulolaskuri\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/staging-estonia.invosy.com\/tulolaskuri\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/staging-estonia.invosy.com\/tulolaskuri\/#primaryimage","url":"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner.png","contentUrl":"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2026\/08\/taulolaskuri-banner.png"},{"@type":"BreadcrumbList","@id":"https:\/\/staging-estonia.invosy.com\/tulolaskuri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/staging-estonia.invosy.com\/"},{"@type":"ListItem","position":2,"name":"Tulolaskuri"}]},{"@type":"WebSite","@id":"https:\/\/staging-estonia.invosy.com\/#website","url":"https:\/\/staging-estonia.invosy.com\/","name":"Laskuta ilman omaa yrityst\u00e4 | Invosy","description":"Enemm\u00e4n kassavirtaa","publisher":{"@id":"https:\/\/staging-estonia.invosy.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/staging-estonia.invosy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/staging-estonia.invosy.com\/#organization","name":"Invosy","url":"https:\/\/staging-estonia.invosy.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/staging-estonia.invosy.com\/#\/schema\/logo\/image\/","url":"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2022\/09\/invosy-brand.png","contentUrl":"https:\/\/staging-estonia.invosy.com\/wp-content\/uploads\/2022\/09\/invosy-brand.png","width":179,"height":57,"caption":"Invosy"},"image":{"@id":"https:\/\/staging-estonia.invosy.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/invosy\/","https:\/\/www.instagram.com\/invosy\/"]}]}},"_links":{"self":[{"href":"https:\/\/staging-estonia.invosy.com\/eng\/wp-json\/wp\/v2\/pages\/11377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging-estonia.invosy.com\/eng\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/staging-estonia.invosy.com\/eng\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/staging-estonia.invosy.com\/eng\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/staging-estonia.invosy.com\/eng\/wp-json\/wp\/v2\/comments?post=11377"}],"version-history":[{"count":249,"href":"https:\/\/staging-estonia.invosy.com\/eng\/wp-json\/wp\/v2\/pages\/11377\/revisions"}],"predecessor-version":[{"id":14809,"href":"https:\/\/staging-estonia.invosy.com\/eng\/wp-json\/wp\/v2\/pages\/11377\/revisions\/14809"}],"wp:attachment":[{"href":"https:\/\/staging-estonia.invosy.com\/eng\/wp-json\/wp\/v2\/media?parent=11377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}