{"id":21570,"date":"2026-10-01T19:15:31","date_gmt":"2026-10-01T17:15:31","guid":{"rendered":"https:\/\/sipb-group.nl\/?page_id=21570"},"modified":"2026-10-01T20:03:33","modified_gmt":"2026-10-01T18:03:33","slug":"rekenmachine","status":"publish","type":"page","link":"https:\/\/sipb-group.nl\/fr\/rekenmachine\/","title":{"rendered":"Calculatrice"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|desktop&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||||false|false&#8221; custom_margin_tablet=&#8221;||||false|false&#8221; custom_margin_phone=&#8221;||||false|false&#8221; custom_margin_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;150px||5px||false|false&#8221; custom_padding_tablet=&#8221;150px||||false|false&#8221; custom_padding_phone=&#8221;120px||||false|false&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][et_pb_row _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_css_free_form=&#8221;.pac-container {||  display: none !important;||}&#8221; global_colors_info=&#8221;{}&#8221;]    <style>\n        .tc-container { \n            max-width: 640px; \n            margin: 0 auto; \n            padding: 32px 28px; \n            background: #ffffff; \n            border: 1px solid #e2e8f0; \n            border-radius: 16px; \n            box-shadow: 0 10px 30px -5px rgba(0, 0, 0, 0.08); \n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; \n            color: #0f172a; \n            box-sizing: border-box;\n        }\n        \n        .tc-header { \n            text-align: center; \n            margin-bottom: 24px; \n            padding-bottom: 16px; \n            border-bottom: 3px solid #80d018; \n        }\n        .tc-header h2 { \n            margin: 0; \n            font-size: 24px; \n            font-weight: 800; \n            color: #80d018; \n            text-transform: uppercase;\n            letter-spacing: -0.01em;\n        }\n\n        .tc-form-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 16px;\n        }\n        @media (max-width: 580px) {\n            .tc-form-grid { grid-template-columns: 1fr; }\n        }\n\n        .tc-form-group { margin-bottom: 16px; }\n        .tc-form-group.tc-full { grid-column: 1 \/ -1; }\n\n        .tc-form-group label { \n            display: block; \n            font-weight: 700; \n            margin-bottom: 6px; \n            font-size: 14px; \n            color: #1e293b; \n        }\n        \n        .tc-form-group input[type=\"text\"], \n        .tc-form-group input[type=\"number\"], \n        .tc-form-group select { \n            width: 100%; \n            padding: 12px 14px; \n            border: 1.5px solid #cbd5e1; \n            border-radius: 8px; \n            font-size: 14px; \n            box-sizing: border-box; \n            background-color: #f8fafc; \n            color: #0f172a;\n            transition: all 0.2s ease-in-out; \n        }\n        \n        .tc-form-group input:focus, \n        .tc-form-group select:focus { \n            border-color: #80d018; \n            background-color: #ffffff;\n            box-shadow: 0 0 0 3px rgba(128, 208, 24, 0.25); \n            outline: none; \n        }\n\n        .tc-checkbox-card {\n            background: #f8fafc;\n            border: 1.5px solid #e2e8f0;\n            padding: 12px 16px;\n            border-radius: 8px;\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            margin-bottom: 12px;\n            transition: border-color 0.2s ease;\n        }\n        .tc-checkbox-card:hover {\n            border-color: #80d018;\n        }\n        .tc-checkbox-card label {\n            font-weight: 700;\n            margin: 0;\n            font-size: 14px;\n            cursor: pointer;\n            color: #1e293b;\n        }\n        .tc-checkbox-card input[type=\"checkbox\"] {\n            width: 18px;\n            height: 18px;\n            accent-color: #80d018;\n            cursor: pointer;\n        }\n\n        .tc-btn, .tc-offerte-btn { \n            background: #80d018; \n            color: #0f172a; \n            border: none; \n            padding: 16px 24px; \n            font-size: 16px; \n            font-weight: 800; \n            border-radius: 8px; \n            cursor: pointer; \n            width: 100%; \n            transition: all 0.2s ease; \n            box-shadow: 0 4px 14px rgba(128, 208, 24, 0.35);\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n            margin-top: 10px;\n            display: inline-block;\n            text-decoration: none;\n            box-sizing: border-box;\n        }\n        .tc-btn:hover, .tc-offerte-btn:hover { \n            background: #72ba14; \n            transform: translateY(-1px);\n            box-shadow: 0 6px 18px rgba(128, 208, 24, 0.45);\n            color: #0f172a;\n        }\n        .tc-btn:active, .tc-offerte-btn:active {\n            transform: translateY(0);\n        }\n\n        .tc-result { \n            margin-top: 24px; \n            padding: 24px; \n            background: #0f172a; \n            border: 2px solid #80d018; \n            border-radius: 12px; \n            text-align: center; \n            color: #ffffff;\n            box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.3);\n        }\n        .tc-result h3 { \n            margin: 10px 0 0; \n            font-size: 22px; \n            font-weight: 800;\n            color: #ffffff; \n        }\n        .tc-result h3 span#tc-price-text {\n            color: #80d018;\n            font-size: 28px;\n            font-weight: 900;\n            display: block;\n            margin-top: 6px;\n        }\n        .tc-breakdown { \n            font-size: 15px; \n            color: #cbd5e1; \n            text-align: center; \n            margin-bottom: 8px; \n            line-height: 1.5; \n        }\n        .tc-breakdown strong {\n            color: #80d018;\n            font-weight: 800;\n        }\n        .tc-small { \n            font-size: 12px; \n            color: #64748b; \n            display: block; \n            margin-top: 4px; \n        }\n\n        \/* UKRYCIE B\u0141\u0118D\u00d3W GOOGLE MAPS DLA KLIENTA *\/\n        .gm-err-container, \n        .gm-err-content, \n        .gm-err-icon, \n        .gm-err-title, \n        .gm-err-message,\n        .gm-style-moc,\n        .gm-style iframe + div,\n        div[style*=\"z-index: 1000001\"],\n        div[style*=\"z-index: 1000000\"] {\n            display: none !important;\n            opacity: 0 !important;\n            visibility: hidden !important;\n            pointer-events: none !important;\n        }\n    <\/style>\n\n    <script>\n        (function() {\n            var _originalAlert = window.alert;\n            window.alert = function(msg) {\n                if (msg && typeof msg === 'string' && (msg.indexOf('Google') !== -1 || msg.indexOf('Map') !== -1 || msg.indexOf('key') !== -1)) {\n                    console.warn('Google Maps melding onderdrukt:', msg);\n                    return true;\n                }\n                return _originalAlert.apply(this, arguments);\n            };\n        })();\n\n        window.gm_authFailure = function() {\n            console.warn('gm_authFailure onderdrukt.');\n        };\n    <\/script>\n\n    <div class=\"tc-container\">\n        <div class=\"tc-header\">\n            <h2>Prix indicatif du transport<\/h2>\n            <p>Ce calcul est donn\u00e9 \u00e0 titre indicatif uniquement. La disponibilit\u00e9, l&#039;ad\u00e9quation du v\u00e9hicule et les frais suppl\u00e9mentaires sont \u00e9valu\u00e9s s\u00e9par\u00e9ment. Le prix final vous sera communiqu\u00e9 dans une proposition de transport \u00e9crite.<\/p>\n        <\/div>\n\n        <div class=\"tc-form-grid\">\n            <div class=\"tc-form-group tc-full\">\n                <label>Adresse de prise en charge (Chargement)<\/label>\n                <input type=\"text\" id=\"tc-pickup\" placeholder=\"Par exemple, Amsterdam, Pays-Bas ou adresse exacte\">\n            <\/div>\n            \n            <div class=\"tc-form-group tc-full\">\n                <label>Adresse de livraison (D\u00e9chargement)<\/label>\n                <input type=\"text\" id=\"tc-delivery\" placeholder=\"Par exemple Rotterdam, Pays-Bas ou adresse exacte\">\n            <\/div>\n\n            <div class=\"tc-form-group\">\n                <label>Poids de la charge (kg)<\/label>\n                <input type=\"number\" id=\"tc-weight\" min=\"0\" value=\"0\">\n            <\/div>\n\n            <div class=\"tc-form-group\">\n                <label>D\u00e9lai de livraison<\/label>\n                <select id=\"tc-timing\">\n                    <option value=\"standard\">Standard (sans suppl\u00e9ment)<\/option>\n                    <option value=\"sameday\">M\u00eame jour (+15%)<\/option>\n                    <option value=\"express\">Express \/ direct (+25%)<\/option>\n                <\/select>\n            <\/div>\n\n            <div class=\"tc-form-group\">\n                <label>Jours ouvrables \/ Jours f\u00e9ri\u00e9s<\/label>\n                <select id=\"tc-day\">\n                    <option value=\"normal\">Jour ouvrable<\/option>\n                    <option value=\"saturday\">Samedi (+25%)<\/option>\n                    <option value=\"sunday\">Dimanche (+50%)<\/option>\n                    <option value=\"holiday\">Jour f\u00e9ri\u00e9 (+100%)<\/option>\n                <\/select>\n            <\/div>\n\n            <div class=\"tc-form-group\">\n                <label>Adresses de halte suppl\u00e9mentaires<\/label>\n                <input type=\"number\" id=\"tc-extra-addr\" min=\"0\" value=\"0\">\n                <span class=\"tc-small\">7,50 \u20ac net \/ par adresse de destination suppl\u00e9mentaire<\/span>\n            <\/div>\n\n            <div class=\"tc-form-group tc-full\">\n                <label>Temps d&#039;attente et de chargement (minutes)<\/label>\n                <input type=\"number\" id=\"tc-wait\" min=\"0\" value=\"15\">\n                <span class=\"tc-small\">Les 15 premi\u00e8res minutes sont gratuites, puis 9 \u20ac net par tranche de 15 minutes.<\/span>\n            <\/div>\n        <\/div>\n\n        <div class=\"tc-checkbox-card\">\n            <input type=\"checkbox\" id=\"tc-night\">\n            <label for=\"tc-night\">Transport de nuit (22:00 \u2013 06:00) [+25%]<\/label>\n        <\/div>\n\n        <div class=\"tc-checkbox-card\">\n            <input type=\"checkbox\" id=\"tc-special\">\n            <label for=\"tc-special\">transport conditionn\u00e9, sp\u00e9cial ou exceptionnel<\/label>\n        <\/div>\n\n        <button class=\"tc-btn\" onclick=\"calculateDirectTransport()\">Faire examiner cette demande<\/button>\n\n        <div id=\"tc-result-box\" class=\"tc-result\" style=\"display:none;\">\n            <div class=\"tc-breakdown\" id=\"tc-breakdown-details\"><\/div>\n            <h3><span id=\"tc-price-text\"><\/span><\/h3>\n        <\/div>\n    <\/div>\n\n    <!-- Google Maps API met autocomplete en afstandsberekening -->\n    <script src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyA-dRerGt5QStyc_0PwlSjXVybQCvjAVek&libraries=places\"><\/script>\n    \n    <script>\n        google.maps.event.addDomListener(window, 'load', function () {\n            new google.maps.places.Autocomplete(document.getElementById('tc-pickup'));\n            new google.maps.places.Autocomplete(document.getElementById('tc-delivery'));\n        });\n\n        function calculateDirectTransport() {\n            let pickup = document.getElementById('tc-pickup').value;\n            let delivery = document.getElementById('tc-delivery').value;\n            let isSpecial = document.getElementById('tc-special').checked;\n            let weightInput = document.getElementById('tc-weight').value;\n            let weight = parseFloat(weightInput) || 0;\n\n            let resultBox = document.getElementById('tc-result-box');\n            let priceText = document.getElementById('tc-price-text');\n            let breakdownDetails = document.getElementById('tc-breakdown-details');\n\n            resultBox.style.display = 'block';\n\n            \/\/ Walidacja masy pod k\u0105tem warto\u015bci ujemnych\n            if (weight < 0) {\n                breakdownDetails.innerHTML = \"Het gewicht kan niet negatief zijn. Voer een geldig gewicht in.\";\n                priceText.innerText = \"Ongeldig gewicht\";\n                return;\n            }\n\n            \/\/ Przycisk kieruj\u0105cy do \/offerte\n            let offerteButtonHtml = '<a href=\"\/offerte\" class=\"tc-offerte-btn\">Offerte op maat<\/a>';\n\n            if (isSpecial || weight > 500) {\n                breakdownDetails.innerHTML = \"Voor speciaal transport (geconditioneerd, uitzonderlijk) of gewicht boven 500 kg is een offerte op maat vereist.\";\n                priceText.innerHTML = offerteButtonHtml;\n                return;\n            }\n\n            if (!pickup || !delivery) {\n                breakdownDetails.innerHTML = \"Vul een geldig ophaal- en afleveradres in.\";\n                priceText.innerText = \"-\";\n                return;\n            }\n\n            priceText.innerText = \"Route berekenen...\";\n\n            let service = new google.maps.DistanceMatrixService();\n            service.getDistanceMatrix({\n                origins: [pickup],\n                destinations: [delivery],\n                travelMode: 'DRIVING',\n            }, function(response, status) {\n                if (status === 'OK' && response.rows[0].elements[0].status === 'OK') {\n                    let distanceMeters = response.rows[0].elements[0].distance.value;\n                    let distanceKm = distanceMeters \/ 1000;\n\n                    let calculatedDistPrice = distanceKm * 0.95;\n                    let basePrice = Math.max(45, calculatedDistPrice);\n\n                    let weightSurcharge = 0;\n                    if (weight > 100 && weight <= 250) weightSurcharge = 10;\n                    else if (weight > 250 && weight <= 500) weightSurcharge = 20;\n\n                    let extraAddr = parseInt(document.getElementById('tc-extra-addr').value) || 0;\n                    let addrSurcharge = extraAddr * 7.50;\n\n                    let waitTime = parseInt(document.getElementById('tc-wait').value) || 0;\n                    let waitSurcharge = 0;\n                    if (waitTime > 15) {\n                        let extraWaitTime = waitTime - 15;\n                        let extraBlocks = Math.ceil(extraWaitTime \/ 15);\n                        waitSurcharge = extraBlocks * 9;\n                    }\n\n                    let subtotal = basePrice + weightSurcharge + addrSurcharge + waitSurcharge;\n\n                    let multiplier = 1.0;\n                    \n                    let timing = document.getElementById('tc-timing').value;\n                    if (timing === 'sameday') multiplier += 0.15;\n                    else if (timing === 'express') multiplier += 0.25;\n\n                    let day = document.getElementById('tc-day').value;\n                    if (day === 'saturday') multiplier += 0.25;\n                    else if (day === 'sunday') multiplier += 0.50;\n                    else if (day === 'holiday') multiplier += 1.00;\n\n                    if (document.getElementById('tc-night').checked) {\n                        multiplier += 0.25;\n                    }\n\n                    let finalPrice = subtotal * multiplier;\n\n                    breakdownDetails.innerHTML = `Geschatte kosten:<br>Directe routeafstand: <strong>${distanceKm.toFixed(1)} km<\/strong>`;\n                    priceText.innerText = \"\u20ac \" + finalPrice.toFixed(2) + \" excl. btw\";\n\n                } else {\n                    breakdownDetails.innerHTML = \"Kon de route voor de opgegeven adressen niet automatisch berekenen.\";\n                    priceText.innerHTML = offerteButtonHtml;\n                }\n            });\n        }\n    <\/script>\n    [\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; theme_builder_area=&#8221;post_content&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;4px|||||&#8221;][et_pb_row _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; type=&#8221;4_4&#8243; theme_builder_area=&#8221;post_content&#8221;][et_pb_text _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; theme_builder_area=&#8221;post_content&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243; text_orientation=&#8221;center&#8221; width=&#8221;100%&#8221; max_width=&#8221;100%&#8221;]<\/p>\n<p><span>Le prix calcul\u00e9 est un prix net indicatif. Le prix final du transport sera confirm\u00e9 par SIPB-GROUP BV avant l&#039;acceptation de la commande.<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>","protected":false},"excerpt":{"rendered":"<p>    <style>\n        .tc-container { \n            max-width: 640px; \n            margin: 0 auto; \n            padding: 32px 28px; \n            background: #ffffff; \n            border: 1px solid #e2e8f0; \n            border-radius: 16px; \n            box-shadow: 0 10px 30px -5px rgba(0, 0, 0, 0.08); \n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; \n            color: #0f172a; \n            box-sizing: border-box;\n        }\n        \n        .tc-header { \n            text-align: center; \n            margin-bottom: 24px; \n            padding-bottom: 16px; \n            border-bottom: 3px solid #80d018; \n        }\n        .tc-header h2 { \n            margin: 0; \n            font-size: 24px; \n            font-weight: 800; \n            color: #80d018; \n            text-transform: uppercase;\n            letter-spacing: -0.01em;\n        }\n\n        .tc-form-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 16px;\n        }\n        @media (max-width: 580px) {\n            .tc-form-grid { grid-template-columns: 1fr; }\n        }\n\n        .tc-form-group { margin-bottom: 16px; }\n        .tc-form-group.tc-full { grid-column: 1 \/ -1; }\n\n        .tc-form-group label { \n            display: block; \n            font-weight: 700; \n            margin-bottom: 6px; \n            font-size: 14px; \n            color: #1e293b; \n        }\n        \n        .tc-form-group input[type=\"text\"], \n        .tc-form-group input[type=\"number\"], \n        .tc-form-group select { \n            width: 100%; \n            padding: 12px 14px; \n            border: 1.5px solid #cbd5e1; \n            border-radius: 8px; \n            font-size: 14px; \n            box-sizing: border-box; \n            background-color: #f8fafc; \n            color: #0f172a;\n            transition: all 0.2s ease-in-out; \n        }\n        \n        .tc-form-group input:focus, \n        .tc-form-group select:focus { \n            border-color: #80d018; \n            background-color: #ffffff;\n            box-shadow: 0 0 0 3px rgba(128, 208, 24, 0.25); \n            outline: none; \n        }\n\n        .tc-checkbox-card {\n            background: #f8fafc;\n            border: 1.5px solid #e2e8f0;\n            padding: 12px 16px;\n            border-radius: 8px;\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            margin-bottom: 12px;\n            transition: border-color 0.2s ease;\n        }\n        .tc-checkbox-card:hover {\n            border-color: #80d018;\n        }\n        .tc-checkbox-card label {\n            font-weight: 700;\n            margin: 0;\n            font-size: 14px;\n            cursor: pointer;\n            color: #1e293b;\n        }\n        .tc-checkbox-card input[type=\"checkbox\"] {\n            width: 18px;\n            height: 18px;\n            accent-color: #80d018;\n            cursor: pointer;\n        }\n\n        .tc-btn, .tc-offerte-btn { \n            background: #80d018; \n            color: #0f172a; \n            border: none; \n            padding: 16px 24px; \n            font-size: 16px; \n            font-weight: 800; \n            border-radius: 8px; \n            cursor: pointer; \n            width: 100%; \n            transition: all 0.2s ease; \n            box-shadow: 0 4px 14px rgba(128, 208, 24, 0.35);\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n            margin-top: 10px;\n            display: inline-block;\n            text-decoration: none;\n            box-sizing: border-box;\n        }\n        .tc-btn:hover, .tc-offerte-btn:hover { \n            background: #72ba14; \n            transform: translateY(-1px);\n            box-shadow: 0 6px 18px rgba(128, 208, 24, 0.45);\n            color: #0f172a;\n        }\n        .tc-btn:active, .tc-offerte-btn:active {\n            transform: translateY(0);\n        }\n\n        .tc-result { \n            margin-top: 24px; \n            padding: 24px; \n            background: #0f172a; \n            border: 2px solid #80d018; \n            border-radius: 12px; \n            text-align: center; \n            color: #ffffff;\n            box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.3);\n        }\n        .tc-result h3 { \n            margin: 10px 0 0; \n            font-size: 22px; \n            font-weight: 800;\n            color: #ffffff; \n        }\n        .tc-result h3 span#tc-price-text {\n            color: #80d018;\n            font-size: 28px;\n            font-weight: 900;\n            display: block;\n            margin-top: 6px;\n        }\n        .tc-breakdown { \n            font-size: 15px; \n            color: #cbd5e1; \n            text-align: center; \n            margin-bottom: 8px; \n            line-height: 1.5; \n        }\n        .tc-breakdown strong {\n            color: #80d018;\n            font-weight: 800;\n        }\n        .tc-small { \n            font-size: 12px; \n            color: #64748b; \n            display: block; \n            margin-top: 4px; \n        }\n\n        \/* UKRYCIE B\u0141\u0118D\u00d3W GOOGLE MAPS DLA KLIENTA *\/\n        .gm-err-container, \n        .gm-err-content, \n        .gm-err-icon, \n        .gm-err-title, \n        .gm-err-message,\n        .gm-style-moc,\n        .gm-style iframe + div,\n        div[style*=\"z-index: 1000001\"],\n        div[style*=\"z-index: 1000000\"] {\n            display: none !important;\n            opacity: 0 !important;\n            visibility: hidden !important;\n            pointer-events: none !important;\n        }\n    <\/style>\n\n    <script>\n        (function() {\n            var _originalAlert = window.alert;\n            window.alert = function(msg) {\n                if (msg && typeof msg === 'string' && (msg.indexOf('Google') !== -1 || msg.indexOf('Map') !== -1 || msg.indexOf('key') !== -1)) {\n                    console.warn('Google Maps melding onderdrukt:', msg);\n                    return true;\n                }\n                return _originalAlert.apply(this, arguments);\n            };\n        })();\n\n        window.gm_authFailure = function() {\n            console.warn('gm_authFailure onderdrukt.');\n        };\n    <\/script>\n\n    <div class=\"tc-container\">\n        <div class=\"tc-header\">\n            <h2>Prix indicatif du transport<\/h2>\n            <p>Ce calcul est donn\u00e9 \u00e0 titre indicatif uniquement. La disponibilit\u00e9, l&#039;ad\u00e9quation du v\u00e9hicule et les frais suppl\u00e9mentaires sont \u00e9valu\u00e9s s\u00e9par\u00e9ment. Le prix final vous sera communiqu\u00e9 dans une proposition de transport \u00e9crite.<\/p>\n        <\/div>\n\n        <div class=\"tc-form-grid\">\n            <div class=\"tc-form-group tc-full\">\n                <label>Adresse de prise en charge (Chargement)<\/label>\n                <input type=\"text\" id=\"tc-pickup\" placeholder=\"Par exemple, Amsterdam, Pays-Bas ou adresse exacte\">\n            <\/div>\n            \n            <div class=\"tc-form-group tc-full\">\n                <label>Adresse de livraison (D\u00e9chargement)<\/label>\n                <input type=\"text\" id=\"tc-delivery\" placeholder=\"Par exemple Rotterdam, Pays-Bas ou adresse exacte\">\n            <\/div>\n\n            <div class=\"tc-form-group\">\n                <label>Poids de la charge (kg)<\/label>\n                <input type=\"number\" id=\"tc-weight\" min=\"0\" value=\"0\">\n            <\/div>\n\n            <div class=\"tc-form-group\">\n                <label>D\u00e9lai de livraison<\/label>\n                <select id=\"tc-timing\">\n                    <option value=\"standard\">Standard (sans suppl\u00e9ment)<\/option>\n                    <option value=\"sameday\">M\u00eame jour (+15%)<\/option>\n                    <option value=\"express\">Express \/ direct (+25%)<\/option>\n                <\/select>\n            <\/div>\n\n            <div class=\"tc-form-group\">\n                <label>Jours ouvrables \/ Jours f\u00e9ri\u00e9s<\/label>\n                <select id=\"tc-day\">\n                    <option value=\"normal\">Jour ouvrable<\/option>\n                    <option value=\"saturday\">Samedi (+25%)<\/option>\n                    <option value=\"sunday\">Dimanche (+50%)<\/option>\n                    <option value=\"holiday\">Jour f\u00e9ri\u00e9 (+100%)<\/option>\n                <\/select>\n            <\/div>\n\n            <div class=\"tc-form-group\">\n                <label>Adresses de halte suppl\u00e9mentaires<\/label>\n                <input type=\"number\" id=\"tc-extra-addr\" min=\"0\" value=\"0\">\n                <span class=\"tc-small\">7,50 \u20ac net \/ par adresse de destination suppl\u00e9mentaire<\/span>\n            <\/div>\n\n            <div class=\"tc-form-group tc-full\">\n                <label>Temps d&#039;attente et de chargement (minutes)<\/label>\n                <input type=\"number\" id=\"tc-wait\" min=\"0\" value=\"15\">\n                <span class=\"tc-small\">Les 15 premi\u00e8res minutes sont gratuites, puis 9 \u20ac net par tranche de 15 minutes.<\/span>\n            <\/div>\n        <\/div>\n\n        <div class=\"tc-checkbox-card\">\n            <input type=\"checkbox\" id=\"tc-night\">\n            <label for=\"tc-night\">Transport de nuit (22:00 \u2013 06:00) [+25%]<\/label>\n        <\/div>\n\n        <div class=\"tc-checkbox-card\">\n            <input type=\"checkbox\" id=\"tc-special\">\n            <label for=\"tc-special\">transport conditionn\u00e9, sp\u00e9cial ou exceptionnel<\/label>\n        <\/div>\n\n        <button class=\"tc-btn\" onclick=\"calculateDirectTransport()\">Faire examiner cette demande<\/button>\n\n        <div id=\"tc-result-box\" class=\"tc-result\" style=\"display:none;\">\n            <div class=\"tc-breakdown\" id=\"tc-breakdown-details\"><\/div>\n            <h3><span id=\"tc-price-text\"><\/span><\/h3>\n        <\/div>\n    <\/div>\n\n    <!-- Google Maps API met autocomplete en afstandsberekening -->\n    <script src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyA-dRerGt5QStyc_0PwlSjXVybQCvjAVek&libraries=places\"><\/script>\n    \n    <script>\n        google.maps.event.addDomListener(window, 'load', function () {\n            new google.maps.places.Autocomplete(document.getElementById('tc-pickup'));\n            new google.maps.places.Autocomplete(document.getElementById('tc-delivery'));\n        });\n\n        function calculateDirectTransport() {\n            let pickup = document.getElementById('tc-pickup').value;\n            let delivery = document.getElementById('tc-delivery').value;\n            let isSpecial = document.getElementById('tc-special').checked;\n            let weightInput = document.getElementById('tc-weight').value;\n            let weight = parseFloat(weightInput) || 0;\n\n            let resultBox = document.getElementById('tc-result-box');\n            let priceText = document.getElementById('tc-price-text');\n            let breakdownDetails = document.getElementById('tc-breakdown-details');\n\n            resultBox.style.display = 'block';\n\n            \/\/ Walidacja masy pod k\u0105tem warto\u015bci ujemnych\n            if (weight < 0) {\n                breakdownDetails.innerHTML = \"Het gewicht kan niet negatief zijn. Voer een geldig gewicht in.\";\n                priceText.innerText = \"Ongeldig gewicht\";\n                return;\n            }\n\n            \/\/ Przycisk kieruj\u0105cy do \/offerte\n            let offerteButtonHtml = '<a href=\"\/offerte\" class=\"tc-offerte-btn\">Offerte op maat<\/a>';\n\n            if (isSpecial || weight > 500) {\n                breakdownDetails.innerHTML = \"Voor speciaal transport (geconditioneerd, uitzonderlijk) of gewicht boven 500 kg is een offerte op maat vereist.\";\n                priceText.innerHTML = offerteButtonHtml;\n                return;\n            }\n\n            if (!pickup || !delivery) {\n                breakdownDetails.innerHTML = \"Vul een geldig ophaal- en afleveradres in.\";\n                priceText.innerText = \"-\";\n                return;\n            }\n\n            priceText.innerText = \"Route berekenen...\";\n\n            let service = new google.maps.DistanceMatrixService();\n            service.getDistanceMatrix({\n                origins: [pickup],\n                destinations: [delivery],\n                travelMode: 'DRIVING',\n            }, function(response, status) {\n                if (status === 'OK' && response.rows[0].elements[0].status === 'OK') {\n                    let distanceMeters = response.rows[0].elements[0].distance.value;\n                    let distanceKm = distanceMeters \/ 1000;\n\n                    let calculatedDistPrice = distanceKm * 0.95;\n                    let basePrice = Math.max(45, calculatedDistPrice);\n\n                    let weightSurcharge = 0;\n                    if (weight > 100 && weight <= 250) weightSurcharge = 10;\n                    else if (weight > 250 && weight <= 500) weightSurcharge = 20;\n\n                    let extraAddr = parseInt(document.getElementById('tc-extra-addr').value) || 0;\n                    let addrSurcharge = extraAddr * 7.50;\n\n                    let waitTime = parseInt(document.getElementById('tc-wait').value) || 0;\n                    let waitSurcharge = 0;\n                    if (waitTime > 15) {\n                        let extraWaitTime = waitTime - 15;\n                        let extraBlocks = Math.ceil(extraWaitTime \/ 15);\n                        waitSurcharge = extraBlocks * 9;\n                    }\n\n                    let subtotal = basePrice + weightSurcharge + addrSurcharge + waitSurcharge;\n\n                    let multiplier = 1.0;\n                    \n                    let timing = document.getElementById('tc-timing').value;\n                    if (timing === 'sameday') multiplier += 0.15;\n                    else if (timing === 'express') multiplier += 0.25;\n\n                    let day = document.getElementById('tc-day').value;\n                    if (day === 'saturday') multiplier += 0.25;\n                    else if (day === 'sunday') multiplier += 0.50;\n                    else if (day === 'holiday') multiplier += 1.00;\n\n                    if (document.getElementById('tc-night').checked) {\n                        multiplier += 0.25;\n                    }\n\n                    let finalPrice = subtotal * multiplier;\n\n                    breakdownDetails.innerHTML = `Geschatte kosten:<br>Directe routeafstand: <strong>${distanceKm.toFixed(1)} km<\/strong>`;\n                    priceText.innerText = \"\u20ac \" + finalPrice.toFixed(2) + \" excl. btw\";\n\n                } else {\n                    breakdownDetails.innerHTML = \"Kon de route voor de opgegeven adressen niet automatisch berekenen.\";\n                    priceText.innerHTML = offerteButtonHtml;\n                }\n            });\n        }\n    <\/script>\n    Le prix calcul\u00e9 est un prix net indicatif. Le prix final du transport sera confirm\u00e9 par SIPB-GROUP BV avant l&#039;acceptation de la commande.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"<!-- wp:divi\/placeholder \/-->","_et_gb_content_width":"","footnotes":""},"class_list":["post-21570","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sipb-group.nl\/fr\/wp-json\/wp\/v2\/pages\/21570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sipb-group.nl\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sipb-group.nl\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sipb-group.nl\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sipb-group.nl\/fr\/wp-json\/wp\/v2\/comments?post=21570"}],"version-history":[{"count":8,"href":"https:\/\/sipb-group.nl\/fr\/wp-json\/wp\/v2\/pages\/21570\/revisions"}],"predecessor-version":[{"id":21583,"href":"https:\/\/sipb-group.nl\/fr\/wp-json\/wp\/v2\/pages\/21570\/revisions\/21583"}],"wp:attachment":[{"href":"https:\/\/sipb-group.nl\/fr\/wp-json\/wp\/v2\/media?parent=21570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}