"use client";

import { Switch } from "@/components/ui/switch";

/*
  O menu "Cupom" da barra do PDV: emitir o cupom fiscal em toda venda (vale
  para a empresa) e imprimir sozinho ao concluir (vale para este computador,
  porque a impressora é deste balcão).
*/
export function MenuDoCupom({
  notaDisponivel,
  notaEmTeste,
  modoDaNota,
  motivoDaNota,
  podeConfigurar,
  salvando,
  erro,
  aoMudarEmTodaVenda,
  imprimirSozinho,
  aoMudarImprimirSozinho,
}: {
  notaDisponivel: boolean;
  notaEmTeste: boolean;
  modoDaNota: "perguntar" | "sempre" | "nunca";
  motivoDaNota: string | null;
  podeConfigurar: boolean;
  salvando: boolean;
  erro: string | null;
  aoMudarEmTodaVenda: (emTodaVenda: boolean) => void;
  imprimirSozinho: boolean;
  aoMudarImprimirSozinho: (valor: boolean) => void;
}) {
  const emTodaVenda = notaDisponivel && modoDaNota === "sempre";
  const bloqueadoPelaConfiguracao = Boolean(motivoDaNota);
  const textoDaNota = bloqueadoPelaConfiguracao
    ? motivoDaNota
    : emTodaVenda
      ? "Já vem marcado ao receber. Dá para desmarcar numa venda."
      : "Marque ao receber quando o cliente pedir.";

  return (
    <div className="pdv-menu pdv-menu-largo" onClick={(evento) => evento.stopPropagation()}>
      <div className="pdv-menu-rotulo">Cupom fiscal (NFC-e)</div>
      <label className={`pdv-menu-opcao ${bloqueadoPelaConfiguracao || !podeConfigurar ? "pdv-menu-opcao-parada" : ""}`}>
        <span className="pdv-menu-opcao-texto">
          <strong>Emitir em toda venda</strong>
          <span>
            {textoDaNota}
            {notaEmTeste && !bloqueadoPelaConfiguracao ? " Em teste: sem valor fiscal." : ""}
            {!podeConfigurar && !bloqueadoPelaConfiguracao ? " Só quem configura as notas fiscais muda esta opção." : ""}
          </span>
          {erro ? <span className="pdv-menu-erro">{erro}</span> : null}
        </span>
        <Switch
          checked={emTodaVenda}
          onCheckedChange={aoMudarEmTodaVenda}
          disabled={salvando || bloqueadoPelaConfiguracao || !podeConfigurar}
          aria-label="Emitir cupom fiscal em toda venda"
        />
      </label>

      <div className="pdv-menu-sep" />
      <div className="pdv-menu-rotulo">Impressão neste computador</div>
      <label className="pdv-menu-opcao">
        <span className="pdv-menu-opcao-texto">
          <strong>Imprimir sozinho ao concluir a venda</strong>
          <span>O cupom fiscal sai assim que a nota é autorizada. Venda sem nota imprime o cupom da venda.</span>
        </span>
        <Switch checked={imprimirSozinho} onCheckedChange={aoMudarImprimirSozinho} aria-label="Imprimir sozinho ao concluir a venda" />
      </label>
      <details className="pdv-menu-dica">
        <summary>Imprimir sem a janela de impressão</summary>
        <p>
          Deixe a impressora do cupom como padrão neste computador e abra o Chrome por um atalho com <code>--kiosk-printing</code> no fim do
          destino. O cupom passa a sair direto na impressora, sem perguntar.
        </p>
      </details>
    </div>
  );
}
