// === Escena 05 — Aceptar (clímax): la píldora, el total, Aceptar → emitida con su número ===
// TPVValidationPillU: «aprobadas/total» en verde (check_circle) o en rojo (error). TPVFooterU: con errores que
// bloquean, «Aceptar» pasa a Danger con icono error y al pulsarlo abre «Validaciones». Una venta guardada ya
// no se edita (TPVBuilder.Utilities.cs:20; «Una factura emitida no se puede editar, como exige la normativa.»).
// «Imprimir» en una venta nueva pide confirmación: «Se guardará la factura» / «Guardar e imprimir» (TPVU.razor).
function EscenaFV05({ t }){
  const G = GUION[4];
  const T = {
    pildora:B(G,'la píldora'),            // "Primera: la píldora de arriba a la derecha"
    cuenta:B(G,'Cuenta las'),             // "Cuenta las comprobaciones que pasa la factura"
    verde:B(G,'En verde'),                // "En verde, todo cuadra"
    falta:B(G,'Si falta algo'),           // "Si falta algo"
    rojo:B(G,'se pone en rojo'),          // "Aceptar se pone en rojo"
    dice:B(G,'te dice qué falta'),        // "y al pulsarlo te dice qué falta"
    total:B(G,'el total, abajo'),         // "Segunda: el total, abajo en el resumen"
    pulsa:B(G,'pulsa Aceptar'),           // "Ahora sí: pulsa Aceptar"
    emitida:B(G,'queda emitida'),         // "La factura queda emitida"
    numero:B(G,'con su número'),          // "con su número"
    edita:B(G,'ya no se edita'),          // "Desde ese momento ya no se edita"
    imprimir:B(G,'Imprimir también'),     // "Ojo: Imprimir también la guarda, y te avisa antes"
    arriba:B(G,'Tres sitios'),            // "Tres sitios, y una factura lista para enviar"
    derecha:B(G,'y una factura'),         // (eco en pantalla: «A la derecha, qué»)
    abajo:B(G,'lista para enviar'),      // (eco en pantalla: «Abajo, Aceptar»)
    pague:B(G,'¿Y cuando te pague?'),     // "¿Y cuando te pague?"
  };
  const clic = T.pulsa + 0.65;
  const malo = t >= T.rojo - 0.3 && t < T.total - 0.4;
  const cierra = ap(t, clic + 0.35, 0.7);
  const nueva = t >= clic + 0.6 ? { n:'F2026-0043', f:'09/10/2026', c:'Talleres Ebro, S.L.', tot:'199,65 €' } : null;
  const velo = ap(t, T.arriba - 0.3, 0.7) * 0.97;
  const cursor = [{ t:0, x:900, y:480 }, { t:T.pulsa - 0.6, x:900, y:480 }, { t:clic, x:1052, y:576 }, { t:clic + 1.5, x:1000, y:470 }];

  const ventana = (
    <VentanaVenta cliente="Talleres Ebro, S.L." df="Talleres Ebro, S.L." envio="" fecha="" lineaDF={1} tab="Agregar"
      pill={malo ? '4/5' : '5/5'} pillEstado={malo ? 'err' : 'ok'} aceptar={malo ? 'err' : 'ok'}
      lineas={[{ nombre:'Hora de soporte', und:'3', precio:'45,00 €', total:'135,00 €' }, { nombre:'Desplazamiento', texto:true, und:'1', precio:'30,00 €', total:'30,00 €' }]}
      sub={165} iva={34.65} total={199.65}
      derecha={<PanelAgregar productos={[{ nombre:'Mantenimiento mensual', precio:'180,00 €' }, { nombre:'Hora de soporte', precio:'45,00 €' },
                                         { nombre:'Instalación', precio:'90,00 €' }, { nombre:'Revisión anual', precio:'120,00 €' }]}/>}
      encima={<>
        <Marca x={FV.pill.x} y={FV.pill.y} w={FV.pill.w} h={FV.pill.h} p={entre(t, T.pildora, T.falta, 0.3)} color={UI.ok} r={14}/>
        <Marca x={FV.aceptar.x} y={FV.aceptar.y} w={FV.aceptar.w} h={FV.aceptar.h} p={entre(t, T.rojo, T.total - 0.4, 0.3)} color={UI.danger} r={6}/>
        <Marca x={FV.pill.x} y={FV.pill.y} w={FV.pill.w} h={FV.pill.h} p={entre(t, T.rojo, T.total - 0.4, 0.3)} color={UI.danger} r={14}/>
        <Marca x={500} y={FV.resumen.y} w={152} h={FV.resumen.h} p={entre(t, T.total, T.pulsa, 0.3)}/>
        <Marca x={FV.aceptar.x} y={FV.aceptar.y} w={FV.aceptar.w} h={FV.aceptar.h} p={entre(t, T.pulsa, clic + 0.4, 0.3)} color={UI.success} r={6}/>
      </>}/>
  );

  const aviso = entre(t, T.edita, T.imprimir, 0.4);
  const dialogo = entre(t, T.imprimir, T.arriba - 0.3, 0.4);

  return (
    <Escena t={t} eyebrow="3 · ABAJO" titulo="Aceptar la emite"
      fuera={<>
        <Cursor t={t} frames={cursor} clicks={[clic]} desde={T.pulsa - 0.9} hasta={T.edita}/>
        <Nota x={1380} y={500} p={entre(t, T.cuenta, T.falta, 0.4)}>Comprobaciones superadas</Nota>
        <Nota x={1180} y={760} p={entre(t, T.dice, T.total - 0.4, 0.4)} color={UI.danger}>Al pulsarlo, te dice qué falta</Nota>
        {aviso > 0 && (
          <div style={{ position:'absolute', left:560, top:690, width:800, padding:'22px 28px', background:'#fff', border:'1px solid #E2E8F0', borderRadius:12,
                        boxShadow:'0 18px 44px rgba(15,23,42,0.16)', display:'flex', gap:18, opacity:aviso, transform:`translateY(${(1 - aviso) * 12}px)`, zIndex:60, fontFamily:"Roboto, sans-serif" }}>
            <Ico n="verified" s={34} c={UI.primary}/>
            <div style={{ fontSize:24, color:UI.text, lineHeight:1.4 }}><b>Esta venta ya está facturada</b><br/>Una factura emitida no se puede editar, como exige la normativa.</div>
          </div>
        )}
        {dialogo > 0 && (
          <div style={{ position:'absolute', left:610, top:600, width:700, background:'#fff', borderRadius:10, boxShadow:'0 24px 60px rgba(15,23,42,0.22)', border:'1px solid #E2E8F0',
                        opacity:dialogo, transform:`scale(${lerp(0.97, 1, dialogo)})`, zIndex:60, fontFamily:"Roboto, sans-serif", padding:'26px 30px' }}>
            <div style={{ display:'flex', alignItems:'center', gap:12, fontSize:26, fontWeight:700, color:UI.text }}><Ico n="warning_amber" s={30} c="#f59e0b"/>Se guardará la factura</div>
            <div style={{ fontSize:22, color:'#45494f', marginTop:14, lineHeight:1.45 }}>Para imprimir hay que guardar la factura, lo que la emitirá y registrará. ¿Continuar?</div>
            <div style={{ display:'flex', justifyContent:'flex-end', marginTop:20 }}>
              <span style={{ background:'#f59e0b', color:'#fff', fontSize:20, fontWeight:500, padding:'10px 20px', borderRadius:6 }}>Guardar e imprimir</span>
            </div>
          </div>
        )}
        {velo > 0 && <div style={{ position:'absolute', inset:0, background:'#fff', opacity:velo, zIndex:65 }}/>}
        <UnicaCosa t={t} tA={T.arriba} tB={T.derecha} tC={T.abajo} top={340}/>
        <div className="f-plex" style={{ position:'absolute', left:0, right:0, top:760, textAlign:'center', fontSize:30, color:'#64748B', zIndex:70, opacity:ap(t, T.pague, 0.6) }}>¿Y cuando te pague?</div>
      </>}>
      <PantallaFacturas nueva={nueva}/>
      {nueva && <Marca x={262} y={FILA0} w={110} h={36} p={entre(t, T.numero, T.edita + 0.3, 0.3)} r={5}/>}
      {cierra < 1 && <div style={{ position:'absolute', inset:0, opacity:1 - cierra, transform:`scale(${lerp(1, 0.97, cierra)})` }}>{ventana}</div>}
    </Escena>
  );
}
Object.assign(window, { EscenaFV05 });
