{"id":6152,"date":"2026-04-11T10:48:01","date_gmt":"2026-04-11T08:48:01","guid":{"rendered":"https:\/\/oacp.diamsmedia.ch\/?page_id=6152"},"modified":"2026-04-12T19:14:13","modified_gmt":"2026-04-12T17:14:13","slug":"mon-panier","status":"publish","type":"page","link":"https:\/\/oacp.diamsmedia.ch\/de\/mon-panier\/","title":{"rendered":"Mon panier"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6152\" class=\"elementor elementor-6152\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fbd8748 e-flex e-con-boxed e-con e-parent\" data-id=\"fbd8748\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-56d7b40 elementor-widget elementor-widget-shortcode\" data-id=\"56d7b40\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><style>\n#aco-panier-wrap *{box-sizing:border-box}\n#aco-panier-wrap{max-width:720px;margin:0 auto;font-family:inherit;color:#1a1a1a}\n.aco-p-card{background:#fff;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:18px;overflow:hidden}\n.aco-p-card-head{background:#fafafa;border-bottom:1px solid #e8e8e8;padding:12px 18px;font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px}\n.aco-p-card-body{padding:16px 18px}\n.aco-p-grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px 20px;font-size:13px}\n.aco-p-label{color:#777;font-size:12px}\n.aco-p-val{font-weight:600}\n.aco-p-prix-big{font-size:22px;font-weight:700;color:#0073aa;margin-top:4px}\n.aco-p-badge{display:inline-block;padding:3px 10px;border-radius:3px;font-size:11px;font-weight:700;color:#fff}\n.aco-p-stock{font-size:13px;font-weight:600;margin-top:8px;padding:6px 10px;border-radius:4px;display:inline-block}\n.aco-p-stock--ok{background:#e8f5e9;color:#1a6b3c}\n.aco-p-stock--low{background:#fff8e1;color:#cc6600}\n.aco-p-stock--zero{background:#fce8e8;color:#990000}\n.aco-p-chauf-list{display:flex;flex-direction:column;gap:10px;margin-bottom:14px;min-height:4px}\n.aco-p-chauf-item{border:1px solid #e0e0e0;border-radius:5px;padding:12px 14px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;background:#fdfdfd}\n.aco-p-chauf-name{font-weight:700;font-size:14px;margin-bottom:3px}\n.aco-p-chauf-meta{font-size:12px;color:#666;display:flex;gap:12px;flex-wrap:wrap;margin-top:4px}\n.aco-p-chauf-actions{display:flex;gap:6px;flex-shrink:0}\n.aco-p-permis-badge{font-family:monospace;background:#f0f0f0;padding:1px 6px;border-radius:3px;font-size:12px}\n.aco-p-chauf-form{border:1px solid #0073aa;border-radius:5px;padding:16px;background:#f0f7fc;margin-bottom:10px;display:none}\n.aco-p-chauf-form.is-open{display:block}\n.aco-p-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n.aco-p-form-group{display:flex;flex-direction:column;gap:4px}\n.aco-p-form-group label{font-size:12px;font-weight:600;color:#555}\n.aco-p-form-group input{border:1px solid #ccc;border-radius:4px;padding:8px 10px;font-size:13px;width:100%}\n.aco-p-form-group input:focus{border-color:#0073aa;outline:none;box-shadow:0 0 0 2px rgba(0,115,170,.15)}\n.aco-p-form-group input.is-error{border-color:#990000}\n.aco-p-form-error{font-size:11px;color:#990000;margin-top:2px}\n.aco-p-permis-hint{font-size:11px;color:#888;margin-top:2px}\n.aco-p-saved-wrap{margin-bottom:12px;display:none}\n.aco-p-saved-wrap.is-open{display:block}\n.aco-p-saved-item{padding:8px 12px;border:1px solid #e0e0e0;border-radius:4px;cursor:pointer;font-size:13px;margin-bottom:5px;background:#fff;display:flex;justify-content:space-between;align-items:center;transition:border-color .1s}\n.aco-p-saved-item:hover{border-color:#0073aa;background:#f0f7fc}\n.aco-p-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:4px;border:none;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;line-height:1.3;transition:opacity .15s;white-space:nowrap}\n.aco-p-btn--primary{background:#0073aa;color:#fff}\n.aco-p-btn--secondary{background:#e5e5e5;color:#1a1a1a}\n.aco-p-btn--ghost{background:transparent;color:#0073aa;border:1px solid #0073aa;padding:6px 12px;font-size:12px}\n.aco-p-btn--ghost-red{background:transparent;color:#990000;border:1px solid #ddd;padding:6px 12px;font-size:12px}\n.aco-p-btn--success{background:#1a6b3c;color:#fff;font-size:15px;padding:13px 28px}\n.aco-p-btn--zahls{background:#f59e0b;color:#fff;font-size:15px;padding:13px 28px}\n.aco-p-btn.is-loading{opacity:.5;pointer-events:none}\n.aco-p-btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}\n.aco-p-btn-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}\n.aco-p-total-bar{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-top:2px solid #e5e5e5;font-size:15px;font-weight:700}\n.aco-p-total-montant{font-size:24px;color:#0073aa}\n.aco-p-alert{padding:10px 14px;border-radius:4px;margin-bottom:14px;font-size:13px;display:none}\n.aco-p-alert.is-visible{display:block}\n.aco-p-alert--danger{background:#fce8e8;color:#990000;border:1px solid #f5c2c2}\n.aco-p-alert--success{background:#e8f5e9;color:#1a6b3c;border:1px solid #c3e6cb}\n.aco-p-alert--info{background:#e8f4fd;color:#0073aa;border:1px solid #b8daff}\n.aco-p-alert--warning{background:#fff8e1;color:#856404;border:1px solid #ffeeba}\n\/* \u00c9tapes *\/\n#aco-step2,#aco-step3{display:none}\n#aco-step2.is-visible,#aco-step3.is-visible{display:block}\n.aco-p-pmt-box{border-radius:5px;padding:16px 18px;margin:14px 0;font-size:14px;line-height:1.7}\n.aco-p-pmt-box--virement{background:#f3f0ff;border-left:4px solid #6650a4}\n.aco-p-pmt-box--sur_place{background:#fff8e1;border-left:4px solid #f59e0b}\n.aco-p-pmt-box--online{background:#e8f5e9;border-left:4px solid #1a6b3c}\n.aco-p-pmt-box--pre{background:#fef9e7;border-left:4px solid #b8a800}\n.aco-p-iban{font-family:monospace;font-size:16px;font-weight:700;background:#fff;border:1px solid #d0c8f0;border-radius:4px;padding:6px 12px;display:inline-block;letter-spacing:1px}\n.aco-p-recap-list{list-style:none;padding:0;margin:8px 0 0}\n.aco-p-recap-list li{padding:7px 0;border-bottom:1px solid #f0f0f0;font-size:13px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}\n.aco-p-recap-list li:last-child{border-bottom:none}\n\/* Step 3 \u2014 confirmation apr\u00e8s commande enregistr\u00e9e *\/\n.aco-p-confirm-icon{font-size:48px;text-align:center;display:block;margin:8px 0}\n.aco-p-confirm-titre{font-size:22px;font-weight:700;text-align:center;margin-bottom:6px}\n.aco-p-confirm-sous{font-size:14px;color:#555;text-align:center;margin-bottom:20px}\n\/* Bloc login non-connect\u00e9 *\/\n.aco-p-login-box{background:#fff3cd;border:2px solid #f0ad4e;border-radius:6px;padding:20px 22px;text-align:center;margin:16px 0}\n.aco-p-login-box h3{margin:0 0 10px;font-size:17px;color:#856404}\n.aco-p-login-box p{margin:0 0 14px;font-size:13px;color:#5a4200}\n@media(max-width:599px){\n    .aco-p-grid2,.aco-p-form-grid{grid-template-columns:1fr}\n    .aco-p-chauf-item{flex-direction:column}\n}\n<\/style>\n\n<div id=\"aco-panier-wrap\">\n<div id=\"aco-panier-alert\" class=\"aco-p-alert\"><\/div>\n\n    <div class=\"aco-p-alert aco-p-alert--warning is-visible\">\n        \u26a0\ufe0f Aucun cours s\u00e9lectionn\u00e9. Retournez sur la fiche cours et cliquez sur &quot;S&#039;inscrire&quot;.    <\/div>\n\n<\/div><!-- #aco-panier-wrap -->\n\n<script>\n(function($){\n    var nonce      = 'e001aeb36c';\n    var ajaxUrl    = 'https:\/\/oacp.diamsmedia.ch\/wp-admin\/admin-ajax.php';\n    var coursId    = 0;\n    var prixUnit      = 0;\n    var stockReel     = 0; \/\/ stock physique r\u00e9el en BD\n    var isPrecommande = false;\n    var pminRequired  = 0;\n    var modePm        = 'online';\n    var loginUrl      = 'https:\/\/oacp.diamsmedia.ch\/wp-login.php?redirect_to=https%3A%2F%2Foacp.diamsmedia.ch%2Fde%2Fmon-panier%2F%3Fcours_id%3D0';\n    var isLogged      = false;\n    var profil        = {};\n    var ibanCentre    = '';\n    var confirmBase   = 'https:\/\/oacp.diamsmedia.ch\/de\/confirmation-inscription\/';\n\n    var chauffeurs = [];\n    var saved      = [];\n    \/\/ En pr\u00e9commande en_attente, pas de limite de stock c\u00f4t\u00e9 panier.\n    var stockNow   = isPrecommande ? Number.MAX_SAFE_INTEGER : stockReel;\n\n    \/* \u2500\u2500 Charger chauffeurs enregistr\u00e9s \u2500\u2500 *\/\n    if(isLogged){\n        $.post(ajaxUrl,{action:'aco_panier_chauffeurs',nonce:nonce},function(r){\n            if(r.success) saved = r.data.chauffeurs;\n        });\n    }\n\n    \/* \u2500\u2500 Pr\u00e9-remplir avec le profil \u2500\u2500 *\/\n    if(isLogged && profil && profil.prenom){\n        chauffeurs.push({prenom:profil.prenom,nom:profil.nom,permis:profil.permis||'',ddn:toIsoDate(profil.ddn||''),saved_id:0,source:'profil'});\n        render();\n    }\n\n    \/* \u2550\u2550 RENDU LISTE CHAUFFEURS \u2550\u2550 *\/\n    function render(){\n        var $list = $('#aco-chauf-list');\n        $list.empty();\n        $.each(chauffeurs,function(i,c){\n            var pm = c.permis?c.permis.replace(\/(\\d{4})(\\d{4})(\\d{4})\/,'$1 $2 $3'):'\u2014';\n            var dd = c.ddn?fmtDate(c.ddn):'\u2014';\n            var src = c.source==='profil'?'<span style=\"font-size:11px;background:#e8f4fd;color:#0073aa;padding:1px 6px;border-radius:3px;font-weight:400;margin-left:4px\">Votre profil<\/span>':'';\n            $list.append(\n                '<div class=\"aco-p-chauf-item\">'+\n                '<div style=\"flex:1\">'+\n                    '<div class=\"aco-p-chauf-name\">'+esc(c.prenom)+' '+esc(c.nom)+src+'<\/div>'+\n                    '<div class=\"aco-p-chauf-meta\">'+\n                        '<span>\ud83e\udeaa <span class=\"aco-p-permis-badge\">'+esc(pm)+'<\/span><\/span>'+\n                        '<span>\ud83c\udf82 '+esc(dd)+'<\/span>'+\n                    '<\/div>'+\n                '<\/div>'+\n                '<div class=\"aco-p-chauf-actions\">'+\n                    '<button class=\"aco-p-btn aco-p-btn--ghost js-edit\" data-i=\"'+i+'\">Modifier<\/button>'+\n                    '<button class=\"aco-p-btn aco-p-btn--ghost-red js-del\" data-i=\"'+i+'\">Supprimer<\/button>'+\n                '<\/div>'+\n                '<\/div>'\n            );\n        });\n        updateUI();\n    }\n\n    function updateUI(){\n        var n = chauffeurs.length;\n        $('#aco-chauf-badge').text(n);\n        $('#aco-nb').text(n);\n        var total = n*prixUnit;\n        var fmt = fmtChf(total);\n        $('#aco-total').text(fmt);\n\n        \/* Stock display *\/\n        var $s = $('#aco-stock-display');\n        $s.removeClass('aco-p-stock--ok aco-p-stock--low aco-p-stock--zero');\n\n        if ( isPrecommande ) {\n            \/\/ Cours en pr\u00e9commande : afficher le compteur d'inscrits, sans notion de stock \u00e9puis\u00e9.\n            \/\/ Le texte HTML initial (rendu PHP) est d\u00e9j\u00e0 correct ; on ne l'\u00e9crase pas ici.\n            $s.addClass('aco-p-stock--ok');\n        } else {\n            var restant = stockNow - n;\n            if(restant>5) $s.addClass('aco-p-stock--ok').text('\u2705 '+restant+' places disponibles');\n            else if(restant>0) $s.addClass('aco-p-stock--low').text('\u26a1 '+restant+' places disponibles');\n            else $s.addClass('aco-p-stock--zero').text('\u274c Plus de places disponibles');\n        }\n\n        \/* Bouton valider *\/\n        var $btn = $('#aco-btn-valider'), $hint = $('#aco-valider-hint');\n        if(n===0){\n            $btn.prop('disabled',true);\n            $hint.text('Ajoutez au moins un chauffeur.');\n        } else if ( !isPrecommande && (stockNow - n) < 0 ) {\n            \/\/ Bloquer uniquement si cours normal ET stock r\u00e9el insuffisant\n            $btn.prop('disabled',true);\n            $hint.text('Stock insuffisant pour ce nombre de chauffeurs.');\n        } else {\n            $btn.prop('disabled',false);\n            $hint.text('');\n        }\n    }\n\n    \/* \u2550\u2550 FORMULAIRE CHAUFFEUR \u2550\u2550 *\/\n    function openForm(idx){\n        $('#aco-chauf-form').addClass('is-open');\n        $('#aco-form-title').text(idx>=0?'Modifier le chauffeur':'Nouveau chauffeur');\n        clearFormErrors();\n        if(idx>=0){\n            var c=chauffeurs[idx];\n            $('#aco-f-prenom').val(c.prenom); $('#aco-f-nom').val(c.nom);\n            $('#aco-f-permis').val(c.permis); $('#aco-f-ddn').val(toIsoDate(c.ddn));\n            $('#aco-edit-idx').val(idx); $('#aco-saved-id').val(c.saved_id||0); $('#aco-source').val(c.source||'new');\n        } else {\n            $('#aco-f-prenom,#aco-f-nom,#aco-f-permis,#aco-f-ddn').val('');\n            $('#aco-edit-idx').val(-1); $('#aco-saved-id').val(0); $('#aco-source').val('new');\n            if(saved.length){\n                var $items=$('#aco-saved-items').empty();\n                $.each(saved,function(i,c){\n                    $items.append('<div class=\"aco-p-saved-item\" data-i=\"'+i+'\"><span><strong>'+esc(c.prenom)+' '+esc(c.nom)+'<\/strong><\/span><span style=\"font-size:12px;color:#888\">'+esc(c.permis.replace(\/(\\d{4})(\\d{4})(\\d{4})\/,'$1 $2 $3'))+'<\/span><\/div>');\n                });\n                $('#aco-saved-wrap').addClass('is-open');\n            }\n        }\n        updPermis();\n        $('#aco-f-prenom').focus();\n    }\n\n    function closeForm(){\n        $('#aco-chauf-form').removeClass('is-open');\n        $('#aco-saved-wrap').removeClass('is-open');\n        clearFormErrors();\n    }\n\n    function clearFormErrors(){\n        $('#err-prenom,#err-nom,#err-permis,#err-ddn').text('');\n        $('#aco-f-prenom,#aco-f-nom,#aco-f-permis,#aco-f-ddn').removeClass('is-error');\n    }\n\n    function updPermis(){\n        var v=$('#aco-f-permis').val().replace(\/\\D\/g,'');\n        $('#aco-permis-counter').text(v.length+' \/ 12 chiffres').css('color',v.length===12?'#1a6b3c':v.length>12?'#990000':'#888');\n    }\n\n    \/* Validation formulaire chauffeur individuel *\/\n    function validateForm(){\n        clearFormErrors();\n        var ok=true;\n        if(!$.trim($('#aco-f-prenom').val())){ $('#err-prenom').text('Pr\u00e9nom obligatoire.'); $('#aco-f-prenom').addClass('is-error'); ok=false; }\n        if(!$.trim($('#aco-f-nom').val()))  { $('#err-nom').text('Nom obligatoire.'); $('#aco-f-nom').addClass('is-error'); ok=false; }\n        var p=$('#aco-f-permis').val().replace(\/\\D\/g,'');\n        if(p.length!==12){ $('#err-permis').text('12 chiffres requis (actuellement : %d saisi(s)).'.replace('%d',p.length)); $('#aco-f-permis').addClass('is-error'); ok=false; }\n        if(!$('#aco-f-ddn').val()){ $('#err-ddn').text('Date de naissance obligatoire.'); $('#aco-f-ddn').addClass('is-error'); ok=false; }\n        return ok;\n    }\n\n    \/* Validation globale de tous les chauffeurs avant passage \u00e0 l'\u00e9tape 2 *\/\n    function validateAllChauffeurs(){\n        var errors = [];\n        $.each(chauffeurs, function(i, c){\n            var permis = (c.permis||'').replace(\/\\D\/g,'');\n            if(!c.prenom || !c.nom){\n                errors.push('Chauffeur '+(i+1)+' : nom\/pr\u00e9nom manquant.');\n            }\n            if(permis.length !== 12){\n                errors.push('Chauffeur '+(i+1)+' : permis invalide ('+permis.length+'\/12).');\n            }\n            if(!c.ddn || !\/^\\d{4}-\\d{2}-\\d{2}$\/.test(c.ddn)){\n                errors.push('Chauffeur '+(i+1)+' : date de naissance manquante ou invalide.');\n            }\n        });\n        return errors;\n    }\n\n    \/* \u2550\u2550 \u00c9V\u00c9NEMENTS \u2550\u2550 *\/\n    $('#aco-f-permis').on('input',function(){ var v=$(this).val().replace(\/\\D\/g,''); if(v.length>12)v=v.slice(0,12); $(this).val(v); updPermis(); });\n\n    $('#aco-btn-add').on('click',function(){\n        \/\/ En pr\u00e9commande, le stock n'est pas un facteur limitant pour l'ajout.\n        if ( !isPrecommande && chauffeurs.length >= stockNow ) {\n            showAlert('danger','Plus de places disponibles.');\n            return;\n        }\n        openForm(-1);\n    });\n\n    $('#aco-btn-form-cancel').on('click',function(){ closeForm(); });\n\n    $(document).on('click','.aco-p-saved-item',function(){\n        var c=saved[parseInt($(this).data('i'),10)];\n        $('#aco-f-prenom').val(c.prenom); $('#aco-f-nom').val(c.nom);\n        $('#aco-f-permis').val(c.permis); $('#aco-f-ddn').val(toIsoDate(c.ddn));\n        $('#aco-saved-id').val(c.id); $('#aco-source').val('saved');\n        updPermis(); $('#aco-saved-wrap').removeClass('is-open');\n    });\n\n    $('#aco-btn-form-save').on('click',function(){\n        if(!validateForm()) return;\n        var idx=parseInt($('#aco-edit-idx').val(),10);\n        var obj={prenom:$.trim($('#aco-f-prenom').val()),nom:$.trim($('#aco-f-nom').val()),permis:$('#aco-f-permis').val().replace(\/\\D\/g,''),ddn:$('#aco-f-ddn').val(),saved_id:parseInt($('#aco-saved-id').val(),10)||0,source:$('#aco-source').val()};\n        if(idx>=0) chauffeurs[idx]=obj; else chauffeurs.push(obj);\n        closeForm();\n        render();\n        showAlert('success',idx>=0?'Chauffeur modifi\u00e9.':'Chauffeur ajout\u00e9.');\n    });\n\n    $(document).on('click','.js-edit',function(){ openForm(parseInt($(this).data('i'),10)); });\n    $(document).on('click','.js-del',function(){\n        chauffeurs.splice(parseInt($(this).data('i'),10),1);\n        if($('#aco-chauf-form').hasClass('is-open')) closeForm();\n        render();\n    });\n\n    \/* Rafra\u00eechir stock 30s *\/\n    setInterval(function(){\n        $.post(ajaxUrl,{action:'aco_panier_stock',nonce:nonce,cours_id:coursId},function(r){\n            if(r.success){\n                \/\/ En pr\u00e9commande, on ne touche pas \u00e0 stockNow (reste Number.MAX_SAFE_INTEGER)\n                \/\/ pour ne pas d\u00e9clencher de faux \"stock insuffisant\".\n                if ( !isPrecommande ) { stockNow = r.data.stock; }\n                updateUI();\n            }\n        });\n    },30000);\n\n    \/* \u2500\u2500 \u00c9tape 1 \u2192 2 : validation compl\u00e8te avant de passer au r\u00e9cap \u2500\u2500 *\/\n    $('#aco-btn-valider').on('click',function(){\n        if(!chauffeurs.length) return;\n\n        \/* Validation compl\u00e8te de tous les chauffeurs *\/\n        var errors = validateAllChauffeurs();\n        if(errors.length){\n            showAlert('danger', errors.join('<br>'));\n            return;\n        }\n\n        \/* Construire le r\u00e9cap *\/\n        var $ul=$('#aco-recap-list').empty();\n        $.each(chauffeurs,function(i,c){\n            var pm=c.permis?c.permis.replace(\/(\\d{4})(\\d{4})(\\d{4})\/,'$1 $2 $3'):'\u2014';\n            $ul.append('<li>\ud83d\udc64 <strong>'+esc(c.prenom)+' '+esc(c.nom)+'<\/strong> <span class=\"aco-p-permis-badge\">'+esc(pm)+'<\/span> \ud83c\udf82 '+esc(fmtDate(c.ddn))+'<\/li>');\n        });\n        var fmt=fmtChf(chauffeurs.length*prixUnit);\n        $('#aco-total2').text(fmt);\n        $('#aco-pmt-montant-2').text(fmt);\n\n        $('#aco-step1').hide();\n        $('#aco-step2').addClass('is-visible');\n        $('html,body').animate({scrollTop:$('#aco-panier-wrap').offset().top-60},250);\n    });\n\n    $('#aco-btn-retour').on('click',function(){\n        $('#aco-step2').removeClass('is-visible');\n        $('#aco-step1').show();\n    });\n\n    \/* \u2500\u2500 Confirmer \u2192 enregistre la commande \u2192 affiche \u00e9tape 3 \u2500\u2500 *\/\n    $('#aco-btn-confirmer').on('click',function(){\n        var $btn=$(this).addClass('is-loading');\n        $btn.text('Enregistrement\u2026');\n\n        $.post(ajaxUrl,{action:'aco_panier_confirmer',nonce:nonce,cours_id:coursId,chauffeurs:JSON.stringify(chauffeurs)},function(r){\n            $btn.removeClass('is-loading');\n\n            if(!r.success){\n                showAlert('danger',r.data.message||'Une erreur est survenue.');\n                if(modePm==='online'){\n                    $btn.text('\ud83d\udcb3 Confirmer et payer \u2192');\n                } else {\n                    $btn.text('\u2713 Confirmer l\\'inscription \u2192');\n                }\n                return;\n            }\n\n            \/* Zahls \u2192 redirect *\/\n            if(r.data.mode==='zahls' && r.data.zahls_url){\n                window.location.href = r.data.zahls_url;\n                return;\n            }\n\n            \/* Virement ou sur place \u2192 afficher \u00e9tape 3 *\/\n            var html = '';\n            var montant = fmtChf(chauffeurs.length * prixUnit);\n\n            if(r.data.mode==='virement'){\n                var ibanHtml = ibanCentre\n                    ? '<div style=\"margin:10px 0\"><strong>IBAN du centre :<\/strong><br><span class=\"aco-p-iban\">'+esc(ibanCentre)+'<\/span><\/div>'\n                    + '<div style=\"font-size:12px;color:#666;margin-top:4px\">Indiquez votre num\u00e9ro d\\'inscription en r\u00e9f\u00e9rence du virement.<\/div>'\n                    : '<div style=\"font-size:13px;color:#666\">Le centre vous communiquera ses coordonn\u00e9es bancaires par email.<\/div>';\n\n                html = '<span class=\"aco-p-confirm-icon\">\ud83c\udfe6<\/span>'\n                     + '<div class=\"aco-p-confirm-titre\" style=\"color:#6650a4\">Inscription enregistr\u00e9e !<\/div>'\n                     + '<div class=\"aco-p-confirm-sous\">Votre place est r\u00e9serv\u00e9e \u2014 en attente de votre virement.<\/div>'\n                     + '<div class=\"aco-p-pmt-box aco-p-pmt-box--virement\">'\n                     + '<strong>\ud83c\udfe6 Instructions de paiement<\/strong>'\n                     + ibanHtml\n                     + '<div style=\"margin-top:8px\">Montant exact : <strong>'+montant+'<\/strong><\/div>'\n                     + '<\/div>'\n                     + '<div style=\"text-align:center;margin-top:16px;font-size:13px;color:#555\">\ud83d\udce7 Un email r\u00e9capitulatif vous a \u00e9t\u00e9 envoy\u00e9.<\/div>';\n\n            } else if(r.data.mode==='sur_place'){\n                html = '<span class=\"aco-p-confirm-icon\">\u2705<\/span>'\n                     + '<div class=\"aco-p-confirm-titre\" style=\"color:#1a6b3c\">Inscription confirm\u00e9e !<\/div>'\n                     + '<div class=\"aco-p-confirm-sous\">Votre place est r\u00e9serv\u00e9e.<\/div>'\n                     + '<div class=\"aco-p-pmt-box aco-p-pmt-box--sur_place\">'\n                     + '<strong>\ud83d\udccd Paiement sur place<\/strong>'\n                     + '<div style=\"margin-top:8px\">Montant \u00e0 apporter le jour du cours : <strong>'+montant+'<\/strong><\/div>'\n                     + '<\/div>'\n                     + '<div style=\"text-align:center;margin-top:16px;font-size:13px;color:#555\">\ud83d\udce7 Un email de confirmation vous a \u00e9t\u00e9 envoy\u00e9.<\/div>';\n\n            } else if(r.data.mode==='offline'){\n                \/* Fallback redirect *\/\n                window.location.href = r.data.redirect;\n                return;\n            }\n\n            $('#aco-step3-content').html(html);\n            $('#aco-step2').removeClass('is-visible');\n            $('#aco-step3').addClass('is-visible');\n            $('html,body').animate({scrollTop:$('#aco-panier-wrap').offset().top-60},250);\n\n        }).fail(function(){\n            showAlert('danger','Erreur r\u00e9seau. Veuillez r\u00e9essayer.');\n            if(modePm==='online'){\n                $btn.removeClass('is-loading').text('\ud83d\udcb3 Confirmer et payer \u2192');\n            } else {\n                $btn.removeClass('is-loading').text('\u2713 Confirmer l\\'inscription \u2192');\n            }\n        });\n    });\n\n    \/* \u2550\u2550 HELPERS \u2550\u2550 *\/\n    function showAlert(t,m){\n        var $a=$('#aco-panier-alert');\n        $a.removeClass('aco-p-alert--danger aco-p-alert--success aco-p-alert--info aco-p-alert--warning is-visible');\n        $a.addClass('aco-p-alert--'+t+' is-visible').html(m);\n        $('html,body').animate({scrollTop:$a.offset().top-60},200);\n    }\n    function esc(s){ return $('<div>').text(s||'').html(); }\n    function fmtChf(n){ return 'CHF '+parseFloat(n).toLocaleString('fr-CH',{minimumFractionDigits:2,maximumFractionDigits:2}); }\n    function fmtDate(s){ if(!s) return '\u2014'; var p=s.split('-'); return p.length===3?p[2]+'.'+p[1]+'.'+p[0]:s; }\n    function toIsoDate(s){\n        if(!s) return '';\n        s = $.trim(s);\n        if(\/^\\d{4}-\\d{2}-\\d{2}$\/.test(s)) return s;\n        var m=s.match(\/^(\\d{2})[.\\\/-](\\d{2})[.\\\/-](\\d{4})$\/);\n        if(m) return m[3]+'-'+m[2]+'-'+m[1];\n        var m2=s.match(\/^(\\d{2})[.\\\/-](\\d{2})[.\\\/-](\\d{2})$\/);\n        if(m2){ var y=parseInt(m2[3],10); return (y<50?'20':'19')+m2[3]+'-'+m2[2]+'-'+m2[1]; }\n        return '';\n    }\n})(jQuery);\n<\/script>\n\n    <\/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\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","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-6152","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/oacp.diamsmedia.ch\/de\/wp-json\/wp\/v2\/pages\/6152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oacp.diamsmedia.ch\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/oacp.diamsmedia.ch\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/oacp.diamsmedia.ch\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oacp.diamsmedia.ch\/de\/wp-json\/wp\/v2\/comments?post=6152"}],"version-history":[{"count":9,"href":"https:\/\/oacp.diamsmedia.ch\/de\/wp-json\/wp\/v2\/pages\/6152\/revisions"}],"predecessor-version":[{"id":6256,"href":"https:\/\/oacp.diamsmedia.ch\/de\/wp-json\/wp\/v2\/pages\/6152\/revisions\/6256"}],"wp:attachment":[{"href":"https:\/\/oacp.diamsmedia.ch\/de\/wp-json\/wp\/v2\/media?parent=6152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}