{"id":9,"date":"2026-05-22T05:01:45","date_gmt":"2026-05-22T05:01:45","guid":{"rendered":"https:\/\/meli.weblab.md\/?page_id=9"},"modified":"2026-05-22T05:01:45","modified_gmt":"2026-05-22T05:01:45","slug":"checkout","status":"publish","type":"page","link":"https:\/\/meli.weblab.md\/?page_id=9","title":{"rendered":"Checkout"},"content":{"rendered":"    <div class=\"veronai-checkout\" id=\"veronai-checkout\">\n        <h2>Finalizare Comand\u0103<\/h2>\n\n        <!-- Order Type -->\n        <div class=\"veronai-checkout-section\">\n            <h3>Tip comand\u0103<\/h3>\n            <div class=\"veronai-order-type-btns\">\n                                    <button class=\"veronai-order-type-btn \" data-type=\"dine_in\">La mas\u0103<\/button>\n                                    <button class=\"veronai-order-type-btn active\" data-type=\"takeaway\">Ridicare<\/button>\n                                    <button class=\"veronai-order-type-btn \" data-type=\"delivery\">Livrare<\/button>\n                            <\/div>\n            <input type=\"hidden\" id=\"vc-order-type\" value=\"takeaway\">\n            <div id=\"vc-delivery-fields\" style=\"display:none; margin-top:10px;\">\n                <label>Adres\u0103 livrare<\/label>\n                <input type=\"text\" id=\"vc-address\" placeholder=\"Strada, num\u0103rul, ora\u0219\" style=\"width:100%;\">\n                                <span id=\"vc-address-fee\"><\/span>\n            <\/div>\n        <\/div>\n\n        <!-- Table selection (dine_in) -->\n        <div id=\"vc-table-fields\" style=\"display:none;\">\n            <div class=\"veronai-checkout-section\">\n                <h3>Alege masa<\/h3>\n                <select id=\"vc-table-id\">\n                    <option value=\"\">Selecteaz\u0103 masa (op\u021bional)<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n\n        <!-- Guest fields (hidden if logged in) -->\n                <div class=\"veronai-checkout-section\">\n            <h3>Datele tale<\/h3>\n            <input type=\"text\"  id=\"vc-guest-name\"  placeholder=\"Nume complet\" style=\"width:100%; margin-bottom:8px;\">\n            <input type=\"email\" id=\"vc-guest-email\" placeholder=\"Email\" style=\"width:100%; margin-bottom:8px;\">\n            <input type=\"tel\"   id=\"vc-guest-phone\" placeholder=\"Telefon\" style=\"width:100%;\">\n        <\/div>\n        \n        <!-- Payment Method -->\n        <div class=\"veronai-checkout-section\">\n            <h3>Metod\u0103 plat\u0103<\/h3>\n            <label><input type=\"radio\" name=\"vc-payment\" value=\"card\" checked> Card<\/label>\n            <label><input type=\"radio\" name=\"vc-payment\" value=\"cash\"> Numerar<\/label>\n            <label><input type=\"radio\" name=\"vc-payment\" value=\"loyalty_points\"> Puncte loialitate<\/label>\n            <div id=\"vc-loyalty-fields\" style=\"display:none; margin-top:8px;\">\n                <label>Puncte de utilizat<\/label>\n                <input type=\"number\" id=\"vc-loyalty-points\" min=\"0\" value=\"0\">\n                <span id=\"vc-loyalty-balance\"><\/span>\n            <\/div>\n        <\/div>\n\n        <!-- Tip -->\n        <div class=\"veronai-checkout-section\">\n            <h3>Bac\u0219i\u0219<\/h3>\n            <div class=\"veronai-tip-btns\">\n                                    <button class=\"veronai-tip-btn active\" data-pct=\"0\">F\u0103r\u0103<\/button>\n                                    <button class=\"veronai-tip-btn \" data-pct=\"5\">5%<\/button>\n                                    <button class=\"veronai-tip-btn \" data-pct=\"10\">10%<\/button>\n                                    <button class=\"veronai-tip-btn \" data-pct=\"15\">15%<\/button>\n                                <input type=\"number\" id=\"vc-tip-custom\" placeholder=\"Sum\u0103 personalizat\u0103\" min=\"0\" step=\"0.5\" style=\"width:100px;\">\n            <\/div>\n        <\/div>\n\n        <!-- Schedule -->\n        <div class=\"veronai-checkout-section\">\n            <h3>Programare<\/h3>\n            <label><input type=\"checkbox\" id=\"vc-schedule-toggle\"> Comand\u0103 pentru mai t\u00e2rziu<\/label>\n            <input type=\"datetime-local\" id=\"vc-schedule-time\" style=\"display:none;margin-top:8px;\">\n        <\/div>\n\n        <!-- Coupon -->\n        <div class=\"veronai-checkout-section\">\n            <h3>Cupon reducere<\/h3>\n            <div class=\"veronai-coupon-field\">\n                <input type=\"text\" id=\"vc-coupon-code\" placeholder=\"Cod cupon\">\n                <button id=\"vc-apply-coupon\" class=\"button\">Aplic\u0103<\/button>\n            <\/div>\n            <span id=\"vc-coupon-message\"><\/span>\n        <\/div>\n\n        <!-- Order Summary -->\n        <div class=\"veronai-checkout-section veronai-order-summary\" id=\"vc-summary\">\n            <h3>Rezumat comand\u0103<\/h3>\n            <div id=\"vc-summary-items\"><\/div>\n            <div class=\"veronai-cart-row\"><span>Subtotal<\/span><span id=\"vc-summary-subtotal\"><\/span><\/div>\n            <div class=\"veronai-cart-row\"><span>TVA (0%)<\/span><span id=\"vc-summary-tax\"><\/span><\/div>\n            <div class=\"veronai-cart-row\" id=\"vc-summary-delivery-row\" style=\"display:none;\"><span>Livrare<\/span><span id=\"vc-summary-delivery\"><\/span><\/div>\n            <div class=\"veronai-cart-row veronai-cart-total\"><span>Total<\/span><strong id=\"vc-summary-total\"><\/strong><\/div>\n        <\/div>\n\n        <button id=\"vc-place-order\" class=\"veronai-btn\" style=\"background:#1E3A5F;width:100%;padding:16px;font-size:16px;margin-top:16px\">\n            Plaseaz\u0103 comanda        <\/button>\n        <p id=\"vc-place-msg\" style=\"color:red;margin-top:8px\"><\/p>\n\n        <!-- Tracking -->\n        <div id=\"vc-tracking\" style=\"display:none\" class=\"veronai-checkout-section\">\n            <h3>Comanda ta este plasat\u0103!<\/h3>\n            <div class=\"veronai-tracker\">\n                                    <div class=\"veronai-tracker-step\" data-step=\"pending\">\n                        <div class=\"veronai-tracker-dot\"><\/div>\n                        <span>Plasat\u0103<\/span>\n                    <\/div>\n                                    <div class=\"veronai-tracker-step\" data-step=\"confirmed\">\n                        <div class=\"veronai-tracker-dot\"><\/div>\n                        <span>Confirmat\u0103<\/span>\n                    <\/div>\n                                    <div class=\"veronai-tracker-step\" data-step=\"preparing\">\n                        <div class=\"veronai-tracker-dot\"><\/div>\n                        <span>Preparare<\/span>\n                    <\/div>\n                                    <div class=\"veronai-tracker-step\" data-step=\"ready\">\n                        <div class=\"veronai-tracker-dot\"><\/div>\n                        <span>Gata<\/span>\n                    <\/div>\n                                    <div class=\"veronai-tracker-step\" data-step=\"delivered\">\n                        <div class=\"veronai-tracker-dot\"><\/div>\n                        <span>Livrat\u0103<\/span>\n                    <\/div>\n                            <\/div>\n            <p id=\"vc-erp-order-id\"><\/p>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function($){\n        var nonce = '2f4f4ba87e';\n        var currency = 'RON';\n        var deliveryFeeDefault = 0;\n        var freeAbove = 0;\n        var orderType = 'takeaway';\n        var cartData = null;\n        var appliedCoupon = null; \/\/ { code, discount }\n        var loyaltyPointsToUse = 0;\n        var customerLoyaltyBalance = 0;\n\n        $(document).ready(function(){\n            loadCart();\n            bindEvents();\n            if ( '' ) {\n                $('#vc-validate-address').click(validateAddress);\n            }\n        });\n\n        function loadCart() {\n            $.post(ajaxurl, { action: 'veronai_cart_get', nonce: nonce }, function(res){\n                if (res.success) {\n                    cartData = res.data;\n                    renderSummary();\n                } else {\n                    $('#vc-summary-items').html('<p>Co\u0219ul este gol.<\/p>');\n                }\n            });\n        }\n\n        function renderSummary() {\n            if (!cartData) return;\n            var itemsHtml = '';\n            cartData.items.forEach(function(item){\n                itemsHtml += '<div>' + item.name + ' x' + item.quantity + '<\/div>';\n            });\n            $('#vc-summary-items').html(itemsHtml);\n            var deliveryFee = (orderType === 'delivery') ? cartData.delivery_fee : 0;\n            var discount = appliedCoupon ? appliedCoupon.discount : 0;\n            var total = cartData.subtotal + cartData.tax + deliveryFee - discount;\n            $('#vc-summary-subtotal').text(cartData.subtotal.toFixed(2) + ' ' + currency);\n            $('#vc-summary-tax').text(cartData.tax.toFixed(2) + ' ' + currency);\n            if (orderType === 'delivery') {\n                $('#vc-summary-delivery-row').show();\n                $('#vc-summary-delivery').text(deliveryFee.toFixed(2) + ' ' + currency);\n            } else {\n                $('#vc-summary-delivery-row').hide();\n            }\n            $('#vc-summary-total').text(total.toFixed(2) + ' ' + currency);\n        }\n\n        function bindEvents() {\n            \/\/ Order type\n            $('.veronai-order-type-btn').click(function(){\n                $('.veronai-order-type-btn').removeClass('active');\n                $(this).addClass('active');\n                orderType = $(this).data('type');\n                $('#vc-order-type').val(orderType);\n                $('#vc-delivery-fields').toggle(orderType === 'delivery');\n                $('#vc-table-fields').toggle(orderType === 'dine_in');\n                renderSummary();\n            });\n            \/\/ Schedule\n            $('#vc-schedule-toggle').change(function(){\n                $('#vc-schedule-time').toggle(this.checked);\n            });\n            \/\/ Payment method\n            $('input[name=\"vc-payment\"]').change(function(){\n                $('#vc-loyalty-fields').toggle($(this).val() === 'loyalty_points');\n                if ($(this).val() === 'loyalty_points') {\n                    loadLoyaltyBalance();\n                }\n            });\n            \/\/ Tip\n            $('.veronai-tip-btn').click(function(){\n                $('.veronai-tip-btn').removeClass('active');\n                $(this).addClass('active');\n                $('#vc-tip-custom').val('');\n            });\n            $('#vc-tip-custom').on('input', function(){\n                $('.veronai-tip-btn').removeClass('active');\n            });\n            \/\/ Coupon\n            $('#vc-apply-coupon').click(function(){\n                var code = $('#vc-coupon-code').val().trim();\n                if (!code) return;\n                $.post(ajaxurl, { action: 'veronai_validate_coupon', nonce: nonce, code: code, cart_total: cartData.subtotal }, function(res){\n                    if (res.success) {\n                        appliedCoupon = { code: code, discount: res.data.discount };\n                        $('#vc-coupon-message').html('<span style=\"color:green;\">\u2705 ' + res.data.message + '<\/span>');\n                        renderSummary();\n                    } else {\n                        $('#vc-coupon-message').html('<span style=\"color:red;\">\u274c ' + (res.data.message || 'Cod invalid') + '<\/span>');\n                    }\n                });\n            });\n            \/\/ Place order\n            $('#vc-place-order').click(placeOrder);\n        }\n\n        function loadLoyaltyBalance() {\n            $.post(ajaxurl, { action: 'veronai_get_loyalty', nonce: nonce }, function(res){\n                if (res.success && res.data.points !== undefined) {\n                    customerLoyaltyBalance = res.data.points;\n                    $('#vc-loyalty-balance').text('Sold: ' + customerLoyaltyBalance + ' puncte');\n                }\n            });\n        }\n\n        function validateAddress() {\n            var address = $('#vc-address').val();\n            if (!address) return;\n            $.post(ajaxurl, { action: 'veronai_delivery_calculate_fee', nonce: nonce, address: address, cart_total: cartData.subtotal }, function(res){\n                if (res.success) {\n                    $('#vc-address-fee').html('<span style=\"color:green;\">\u2705 Tax\u0103 livrare: ' + res.data.fee.toFixed(2) + ' ' + currency + '<\/span>');\n                    cartData.delivery_fee = res.data.fee;\n                    renderSummary();\n                } else {\n                    $('#vc-address-fee').html('<span style=\"color:red;\">\u274c ' + (res.data.message || 'Adres\u0103 invalid\u0103') + '<\/span>');\n                }\n            });\n        }\n\n        function placeOrder() {\n            var btn = $('#vc-place-order');\n            btn.prop('disabled', true);\n            \n            \/\/ Preluare \u0219i formatare dat\u0103 programat\u0103 (precomand\u0103)\n            var scheduleRaw = $('#vc-schedule-time').val();\n            var scheduleFormatted = '';\n            if (scheduleRaw) {\n                var parts = scheduleRaw.split('T');\n                if (parts.length === 2) {\n                    scheduleFormatted = parts[0] + ' ' + parts[1] + ':00';\n                }\n            }\n            \n            var data = {\n                action: 'veronai_place_order',\n                nonce: nonce,\n                order_type: $('#vc-order-type').val(),\n                payment_method: $('input[name=\"vc-payment\"]:checked').val(),\n                tip_amount: $('#vc-tip-custom').val() || $('.veronai-tip-btn.active').data('pct') || 0,\n                loyalty_points: $('#vc-loyalty-points').val() || 0,\n                table_id: $('#vc-table-id').val(),\n                address: $('#vc-address').val(),\n                schedule_time: scheduleFormatted,\n                coupon_code: appliedCoupon ? appliedCoupon.code : '',\n                coupon_discount: appliedCoupon ? appliedCoupon.discount : 0\n            };\n            \n                        data.guest_name = $('#vc-guest-name').val();\n            data.guest_email = $('#vc-guest-email').val();\n            data.guest_phone = $('#vc-guest-phone').val();\n                        \n            $.post(ajaxurl, data, function(res){\n                btn.prop('disabled', false);\n                if (res.success) {\n                    $('#vc-tracking').show();\n                    $('#vc-place-order').hide();\n                    $('#vc-erp-order-id').text('ID comand\u0103: ' + res.data.id);\n                    startTracking(res.data.id);\n                } else {\n                    $('#vc-place-msg').text(res.data.message || 'Eroare la plasarea comenzii.');\n                }\n            });\n        }\n\n        function startTracking(erpId) {\n            function updateStatus() {\n                $.post(ajaxurl, { action: 'veronai_get_order_status', nonce: nonce, erp_id: erpId }, function(res){\n                    if (res.success && res.data.status) {\n                        var steps = ['pending','confirmed','preparing','ready','delivered'];\n                        var idx = steps.indexOf(res.data.status);\n                        $('.veronai-tracker-step').each(function(i, step){\n                            $(step).removeClass('active done');\n                            if (i < idx) $(step).addClass('done');\n                            if (i === idx) $(step).addClass('active');\n                        });\n                    }\n                });\n            }\n            updateStatus();\n            setInterval(updateStatus, 15000);\n        }\n    })(jQuery);\n    <\/script>\n    <style>\n    .veronai-checkout-section { margin-bottom: 20px; padding: 15px; background: #f9f9f9; border-radius: 8px; }\n    .veronai-order-type-btns button, .veronai-tip-btns button { padding: 8px 16px; margin-right: 8px; border: 1px solid #ccc; background: #fff; cursor: pointer; border-radius: 4px; }\n    .veronai-order-type-btns button.active, .veronai-tip-btns button.active { background: #1E3A5F; color: #fff; border-color: #1E3A5F; }\n    .veronai-tracker { display: flex; justify-content: space-between; margin: 20px 0; }\n    .veronai-tracker-step { flex: 1; text-align: center; position: relative; }\n    .veronai-tracker-dot { width: 16px; height: 16px; background: #ccc; border-radius: 50%; margin: 0 auto 8px; }\n    .veronai-tracker-step.active .veronai-tracker-dot { background: #1E3A5F; }\n    .veronai-tracker-step.done .veronai-tracker-dot { background: #4CAF50; }\n    <\/style>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/meli.weblab.md\/index.php?rest_route=\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/meli.weblab.md\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/meli.weblab.md\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/meli.weblab.md\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/meli.weblab.md\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9"}],"version-history":[{"count":0,"href":"https:\/\/meli.weblab.md\/index.php?rest_route=\/wp\/v2\/pages\/9\/revisions"}],"wp:attachment":[{"href":"https:\/\/meli.weblab.md\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}