import { handleSweetAlert } from "@/components/Modal/SweetAlertConfirm";
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuSeparator,
} from "@/components/ui/dropdown-menu";
import { estornarAgendamentoNegocio } from "@/requests/CRM/AgendamentosInstalacoes/estornarAgendamentoNegocio";
import { estornarConclusaoInstalacao } from "@/requests/CRM/AgendamentosInstalacoes/estornarConclusaoInstalacao";
import { estornarPagamentoInstalacao } from "@/requests/CRM/AgendamentosInstalacoes/estornarPagamentoInstalacao";
import { permiteConcluirInstalacao } from "@/requests/CRM/AgendamentosInstalacoes/permiteConcluirInstalacao";
import { estornarAgendamentoManutencao } from "@/requests/CRM/AgendamentosManutencoes/estornarAgendamentoManutencao";
import { listarContratosPorColeta } from "@/requests/CRM/Contrato/listarContrato";
import { deletarCard, excluirProjetoDefinitivo } from "@/requests/CRM/kanban";
import { cancelarOrdensServicoColeta } from "@/requests/CRM/PosvOrdensServico/cancelarOrdensServicoColeta";
import { estornarBaixaOrdemServicoInstalador } from "@/requests/CRM/PosvOrdensServico/estornarBaixaOrdemServicoInstalador";
import { estornarCustosDoServico } from "@/requests/CRM/PosvOrdensServico/estornarCustosDoServico";
import { estornarValidacaoCustos } from "@/requests/CRM/PosvOrdensServico/estornarValidacaoCustos";
import { estornarConclucaoAcao } from "@/requests/CRUD/Apuracoes/cadastroPreApuracao";
import { deletePreApuracao } from "@/requests/CRUD/Apuracoes/estornarPreApuracao";
import { removerGravacaoPendenciaReaberta } from "@/requests/CRUD/CamposPersonalizados/listarCamposPersonalizados";
import {
  estornarPagamento,
  estornarVenda,
} from "@/requests/CRUD/ColetaDados/cadastroColetaDados";
import { atualizarCompraMaterialColeta } from "@/requests/CRUD/PendenciaCompraMaterial/atualizarCompraMaterialColeta";
import { estornarPendenciaCompraMaterial } from "@/requests/CRUD/PendenciaCompraMaterial/estornarPendenciaCompraMaterial";
import { atualizarEngenhariaNegocio } from "@/requests/CRUD/PendenciaEngenharia/atualizarEngenhariaNegocio";
import { estornarPendenciaEngenharia } from "@/requests/CRUD/PendenciaEngenharia/estornarPendenciaEngenharia";
import { estornarPendenciaEntregaKit } from "@/requests/CRUD/PendenciaEntregaKit/estornarPendenciaEntregaKit";
import { estornarFaturamento } from "@/requests/CRUD/PendenciaFaturamento/estornarFaturamento";
import { salvarContatoClienteColeta } from "@/requests/CRUD/PosvColetas/salvarContatoClienteColeta";
import { listarPropostas } from "@/requests/CRUD/Propostas/listarPropostas";
import { useAuth } from "@/src/contexts/authContext";
import { isFluxoPerdas } from "@/utils/fluxoPerdas";
import { useKanbanContext } from "@/src/contexts/kanbanContext";
import {
  AcaoPendencia,
  podeExecutarPendencia,
  validarPermissaoPendencia,
} from "@/utils/permissoesPendencias";
import { DropdownMenuTrigger } from "@radix-ui/react-dropdown-menu";
import {
  Calendar,
  CalendarArrowUp,
  CalendarCheck,
  CalendarMinus,
  CalendarX,
  ChevronRight,
  Receipt,
} from "lucide-react";
import { FaClipboard } from "react-icons/fa";
import { IoMdCheckmarkCircleOutline } from "react-icons/io";
import {
  IoArrowForward,
  IoBan,
  IoClose,
  IoCopyOutline,
  IoMoveSharp,
} from "react-icons/io5";
import {
  MdCurrencyExchange,
  MdOutlineMoneyOff,
  MdPhoneDisabled,
} from "react-icons/md";
import { TbArrowBackUp } from "react-icons/tb";
import { toast } from "react-toastify";
import Swal from "sweetalert2";

const DropdownsEditCard = ({
  dadosCard,
  fluxosDoNegocio,
  dadosPerfil,
  tipoNegocio,
  canEstornar,
  compareActiveStep,
  blockEditCard,
  kanbanId,
  dadosFunil,
  dadosLista,
  closeModal,
  removePendencie,
  dadosNegocio,
  finalizarVenda,
  setIsLoading,
  propostaAprovada,
  setOpenModalPagamento,
  getAprovalIndex,
  setOpenModalChangeEtapa,
  setOpenModalChangeFunil,
  setOpenPendenciaFaturmento,
  setOpenModalPagamentoInstalacao,
  canDeleteCard,
  setOpenModalDeleteCard,
  setOpenPendenciaEngenharia,
  setOpenPreapuracao,
  setOpenModalRejeicao,
  setOpenModalConclusaoInstalacao,
  setOpenModalAgendamento,
  setOpenModalReAgendamentoInstalacao,
  setOpenPendenciaCompras,
  setOpenModalAgendamentoManutencao,
  atualizarOrdensServico,
  ordemServico,
  stepsTemp,
}: any) => {
  const {
    locks,
    // dadosFunil,
    categoriasAnexos,
    locksRetrocesso,
    documentosPersonalizados,
    reListarDadosKanban,
  } = useKanbanContext();
  const { logout, valuesSession, perfil, usuario } = useAuth();
  const { session } = valuesSession();


  const podePendencia = (idPendencia: string, acao: AcaoPendencia) =>
    podeExecutarPendencia(dadosPerfil || perfil, stepsTemp, idPendencia, acao);

  const validarPendencia = (idPendencia: string, acao: AcaoPendencia) =>
    validarPermissaoPendencia(
      dadosPerfil || perfil,
      stepsTemp,
      idPendencia,
      acao,
    );
  const podePendencias = (idsPendencias: string[], acao: AcaoPendencia) => {
    const sequencia = dadosCard?.sequenciaPendencias_coleta?.split(",") || [];
    const naSequencia = idsPendencias.filter((id) => sequencia.includes(id));

    return (naSequencia.length > 0 ? naSequencia : idsPendencias).every((id) =>
      podePendencia(id, acao),
    );
  };
  const noFluxoPerdas = isFluxoPerdas(
    dadosFunil,
    kanbanId,
    dadosCard?.status_coleta,
  );
  const podeExcluirProjetoDefinitivo =
    noFluxoPerdas &&
    (perfil?.permite_excluir_projeto_perfil == "1" ||
      perfil?.id_perfil == "1000");
  const estornarFaturamentoFunction = async (data: any) => {
    setIsLoading(true);
    return estornarFaturamento({
      id_negocio: dadosCard?.id_coleta_cliente,
      exigir_faturamento_loja: null,
      pendencia_faturamento_loja: null,
      id_card: dadosCard?.id,
      id_usuario: usuario.id_usuario,
    })
      .then(() => {
        // reListarDadosKanban().then(() => {
        {
          toast.success("Faturamento Estornado");
          removePendencie("16");
          removePendencie("26");
        }
        // });
      })
      .finally(() => {
        setIsLoading(false);
      });
  };
  const handleCancelBusiness = () => {
    listarPropostas(dadosCard?.id_coleta_cliente).then((a) => {
      const propostaAp = a.some((b: any) => b.status_proposta === "1");
      if (propostaAp) {
        Swal.fire({
          icon: "info",
          title: "Aviso!",
          text: "Já possui proposta aprovada, ao seguir com o cancelamento, todas irão ser canceladas!",
          confirmButtonText: "Confirmar",
          confirmButtonColor: "#2d3748",
          showCancelButton: true,
          cancelButtonText: "Cancelar",
        }).then((result) => {
          if (result.isConfirmed) {
            setOpenModalRejeicao(true);
          }
        });
      } else {
        setOpenModalRejeicao(true);
      }
    });
  };

  const estornarVendaFunction = () => {
    const data = {
      id_lista: dadosLista.id,
      id_card: dadosCard?.id,
      id_coleta: dadosCard?.id_coleta_cliente,
      userPagamentoCliente_coleta: null,
      dataFinalizacaoVenda_coleta: null,
      userEstornoVenda: session.id_usuario,
      dataEstornoVenda: new Date(),
      status_coleta: 7,
      // vendaAprovada_coleta: "0",
    };
    if (dadosCard?.pre_apuracao_comissao_loja_coleta == "2") {
      estornarConclucaoAcao(dadosCard?.id_coleta_cliente).then(() =>
        estornarVenda(data).then(
          () =>
          // reListarDadosKanban().then(() => {
          {
            removePendencie("8");
            setOpenModalPagamento(false);
          },
          // })
        ),
      );
    } else {
      estornarVenda(data).then(() => {
        // reListarDadosKanban().then(() => {
        //   removePendencie("8");
        // });
        {
          removePendencie("8");
          setOpenModalPagamento(false);
        }
      });
    }
  };
  const estornarPagamentoFunction = () => {
    const data = {
      id_coleta: dadosCard?.id_coleta_cliente,
      // userPagamentoCliente_coleta: null,
      // dataPagamentoCliente_coleta: null,
      // obsPagamentoCliente_coleta: null,
      // anexoPagamentoCliente_coleta: dadosNegocio.anexoPagamentoCliente_coleta,
      status_coleta: 6,
      id_lista: dadosLista.id,
      id_card: dadosCard?.id,
      userEstornoPagamento: session.id_usuario,
      // vendaAprovada_coleta: "0",
    };
    if (dadosCard?.pre_apuracao_comissao_loja_coleta == "1") {
      estornarConclucaoAcao(dadosCard?.id_coleta_cliente).then(() =>
        estornarPagamento(data).then(
          () =>
          // reListarDadosKanban().then(() => {
          {
            removePendencie("7");

            setOpenModalPagamento(false);
          },
          // })
        ),
      );
    } else {
      estornarPagamento(data).then(
        () =>
        // reListarDadosKanban().then(() => {
        {
          removePendencie("7");

          setOpenModalPagamento(false);
        },
        // })
      );
    }
  };
  return (
    <div className="flex justify-end">
      <DropdownMenu>
        {(perfil?.visualiza_acoes_card_perfil == "1" ||
          perfil.id_perfil == "1000") &&
          (!blockEditCard || noFluxoPerdas) && (
            <DropdownMenuTrigger>
              <div
                className={`bg-primary  gap-3 text-white justify-between rounded-md px-3 flex items-center py-2 text-xs w-[250px]`}
              >
                Ações do card
                <ChevronRight size={16} />
              </div>
            </DropdownMenuTrigger>
          )}
        <DropdownMenuContent
          className="!w-67 flex flex-col p-2"
          style={{ zoom: 0.8 }}
        >
          <DropdownMenuSeparator />
          <DropdownMenuItem>
            <span
              onClick={() => setOpenModalChangeFunil([true, "Mover"])}
              className="flex items-center gap-2 text-sm rounded-md cursor-pointer px-2 py-2"
            >
              <IoMoveSharp /> Mover card para outro fluxo
            </span>
          </DropdownMenuItem>
          <DropdownMenuSeparator />
          <DropdownMenuItem onClick={() => setOpenModalChangeEtapa(true)}>
            <span className="flex items-center gap-2 text-sm rounded-md cursor-pointer  px-2 py-2">
              <IoArrowForward /> Mover card para outra etapa
            </span>
          </DropdownMenuItem>
          <DropdownMenuSeparator />
          <DropdownMenuItem>
            <span
              onClick={() => setOpenModalChangeFunil([true, "Duplicar"])}
              className="flex items-center gap-2 text-sm rounded-md cursor-pointer px-2 py-2"
            >
              <IoCopyOutline /> Duplicar card para outro fluxo
            </span>
          </DropdownMenuItem>
          {canDeleteCard && (
            <>
              <DropdownMenuSeparator />
              <DropdownMenuItem
                onClick={() =>
                  handleSweetAlert(
                    {
                      icon: "warning",
                      title: `Ao realizar esta ação o negócio apenas deixará de existir neste Fluxo.`,
                      html: `Ainda estará presente no${fluxosDoNegocio.length > 1 ? "s Fluxos" : " Fluxo"}:  ${fluxosDoNegocio.join(", ")}`,
                    },
                    async () => {
                      setIsLoading(true);
                      deletarCard({
                        id_card: dadosCard?.id,
                        id_usuario: usuario.id_usuario,
                        id_coleta: dadosCard?.id_coleta_cliente,
                      })
                        .then(() => {
                          setOpenModalDeleteCard(false);
                          closeModal();
                          reListarDadosKanban();
                        })
                        .finally(() => setIsLoading(false));
                    },
                  )
                }
              >
                <span className="flex items-center gap-2 text-sm rounded-md cursor-pointer px-2 py-2">
                  <IoClose /> Remover Negócio deste Fluxo
                </span>
              </DropdownMenuItem>
            </>
          )}

          <DropdownMenuSeparator />
          <DropdownMenuItem onClick={() => handleCancelBusiness()}>
            <span className="flex items-center gap-2 text-sm rounded-md cursor-pointer px-2 py-2 text-error">
              <IoBan /> Cancelar Negócio
            </span>
          </DropdownMenuItem>

          {podeExcluirProjetoDefinitivo && (
            <>
              <DropdownMenuSeparator />
              <DropdownMenuItem
                onClick={() =>
                  handleSweetAlert(
                    {
                      icon: "warning",
                      title: "Excluir Projeto Definitivamente",
                      html: `Esta ação é <b>irreversível</b>. O negócio <b>${dadosCard?.nome_negocio_coleta}</b> e todos os dados vinculados serão removidos permanentemente.`,
                    },
                    async () => {
                      setIsLoading(true);
                      excluirProjetoDefinitivo({
                        id_coleta: dadosCard?.id_coleta_cliente,
                        id_card: dadosCard?.id,
                        id_usuario: usuario.id_usuario,
                        id_perfil: perfil?.id_perfil ?? session.perfil_usuario,
                      })
                        .then(() => {
                          closeModal();
                          reListarDadosKanban();
                        })
                        .finally(() => setIsLoading(false));
                    },
                  )
                }
              >
                <span className="flex items-center gap-2 text-sm rounded-md cursor-pointer px-2 py-2 text-error">
                  <IoClose /> Excluir Projeto Definitivamente
                </span>
              </DropdownMenuItem>
            </>
          )}

          {/* menu pagamento do cliente */}
          {podePendencia("7", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("7") &&
            dadosCard &&
            // dadosCard?.status_coleta == "6"
            compareActiveStep("Aprovação de Crédito") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem onClick={() => setOpenModalPagamento(true)}>
                  <button className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <IoMdCheckmarkCircleOutline size={16} />
                    Aprovação de Crédito
                  </button>
                </DropdownMenuItem>
              </>
            )}
          {/* menu estornar pagamento do cliente */}
          {podePendencia("7", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("7") &&
            dadosCard &&
            // dadosCard?.status_coleta == "7"
            compareActiveStep("Aprovação de Crédito", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("7"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Deseja Confirmar o Estorno da Aprovação?`,
                        html: `<span>Tem certeza que deseja estornar a aprovação?</span>`,
                      },
                      async () => estornarPagamentoFunction(),
                    );
                  }}
                  className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-danger px-2 py-2"
                >
                  <MdOutlineMoneyOff size={16} />
                  Estornar Aprovação de Crédito
                  {/* </SweetAlertConfirmacao> */}
                </DropdownMenuItem>
              </>
            )}
          {/* menu pré apurar */}
          {podePendencia("12", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("12") &&
            dadosCard &&
            compareActiveStep("Liberação para Comissão") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem onClick={() => setOpenPreapuracao(true)}>
                  <button className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <IoMdCheckmarkCircleOutline size={16} />
                    Liberar para Comissão
                  </button>
                </DropdownMenuItem>
              </>
            )}
          {/* menu pré estornar pre apuracao */}
          {podePendencia("12", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("12") &&
            compareActiveStep("Liberação para Comissão", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!validarPendencia("12", "estornar")) return;
                    // if (!(await canEstornar("12"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno Liberação para Comissão`,
                        html: `<span>Tem certeza que deseja estornar a Liberação para Comissão?</span>`,
                      },
                      async () => {
                        removePendencie("12");
                        const data = {
                          id_coleta: dadosCard?.id_coleta_cliente,
                          idPreApuracao:
                            dadosCard?.pre_apuracao_comissao_loja || null,
                          id_card: dadosCard?.id,
                          id_usuario: usuario.id_usuario,
                        };
                        deletePreApuracao(data);
                      },
                    );
                  }}
                  className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-danger px-2 py-2"
                >
                  <TbArrowBackUp size={20} />
                  Estornar Liberação para Comissão?
                  {/* </SweetAlertConfirmacao> */}
                </DropdownMenuItem>
              </>
            )}
          {/* menu pendencia de engenharia */}
          {podePendencia("10", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("10") &&
            dadosCard &&
            compareActiveStep("Aprovação Engenharia 1") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={() => setOpenPendenciaEngenharia(true)}
                >
                  <button className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <IoMdCheckmarkCircleOutline size={16} />
                    Aprovação Engenharia 1
                  </button>
                </DropdownMenuItem>
              </>
            )}
          {/* menu estornar pendencia de engenharia */}
          {dadosCard?.sequenciaPendencias_coleta?.split(",").includes("10") &&
            compareActiveStep("Aprovação Engenharia 2", "- 1 ==") &&
            podePendencia("19", "estornar") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("12"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno da Pendência de Aprovação Engenharia 2`,
                        html: `<span>Tem certeza que deseja estornar a pendência de engenharia 2?</span>`,
                      },
                      async () => {
                        const toastPromise = new Promise((resolve, reject) => {
                          atualizarEngenhariaNegocio({
                            id_negocio: dadosCard?.id_coleta_cliente,
                            pendencia_engenharia_coleta: null,
                          })
                            .then(() =>
                              estornarPendenciaEngenharia({
                                id_negocio: dadosCard?.id_coleta_cliente,
                                id_loja: dadosCard?.id_loja_coleta,
                                id_card: dadosCard.id,
                                id_usuario: usuario.id_usuario,
                                engenharia: 2,
                              }).then((res) => {
                                // reListarDadosKanban().then(() => {
                                removePendencie("19");
                                resolve(res);
                                // });
                              }),
                            )
                            .catch((err) => reject(err));
                        });

                        return toast
                          .promise(toastPromise, {
                            pending: {
                              render(data: any) {
                                return "Aguarde";
                              },
                            },
                            success: {
                              render(data: any) {
                                return data.data;
                              },
                              theme: "light",
                            },
                            error: {
                              render(data: any) {
                                return data.data;
                              },
                            },
                          })
                          .finally(() => setIsLoading(false));
                      },
                    );
                  }}
                  className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-danger px-2 py-2"
                >
                  <TbArrowBackUp size={20} />
                  Estornar Pendência de Aprovação Engenharia 2
                </DropdownMenuItem>
              </>
            )}
          {dadosCard?.sequenciaPendencias_coleta?.split(",").includes("10") &&
            compareActiveStep("Aprovação Engenharia 1", "- 1 ==") &&
            podePendencia("10", "estornar") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("10"))) return;
                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno da Pendência de Aprovação Engenharia 1`,
                        html: `<span>Tem certeza que deseja estornar a pendência de engenharia 1?</span>`,
                      },
                      async () => {
                        const toastPromise = new Promise((resolve, reject) => {
                          atualizarEngenhariaNegocio({
                            id_negocio: dadosCard?.id_coleta_cliente,
                            pendencia_engenharia_coleta: null,
                          })
                            .then(() =>
                              estornarPendenciaEngenharia({
                                id_negocio: dadosCard?.id_coleta_cliente,
                                id_loja: dadosCard?.id_loja_coleta,
                                id_card: dadosCard.id,
                                id_usuario: usuario.id_usuario,
                                engenharia: 1,
                              }).then((res) => {
                                removePendencie("10");
                                resolve(res);
                              }),
                            )
                            .catch((err) => reject(err));
                        });

                        return toast
                          .promise(toastPromise, {
                            pending: {
                              render(data: any) {
                                return "Aguarde";
                              },
                            },
                            success: {
                              render(data: any) {
                                return data.data;
                              },
                              theme: "light",
                            },
                            error: {
                              render(data: any) {
                                return data.data;
                              },
                            },
                          })
                          .finally(() => setIsLoading(false));
                      },
                    );
                  }}
                  className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-danger px-2 py-2"
                >
                  <TbArrowBackUp size={20} />
                  Estornar Pendência de Aprovação Engenharia 1
                </DropdownMenuItem>
              </>
            )}
          {/* menu finalização da venda */}
          {podePendencia("8", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("8") &&
            dadosCard &&
            // dadosCard?.status_coleta == "7"
            compareActiveStep("Finalização da Venda") && (
              // steps.findIndex(
              //   (step) => step.label === "Compra de Kit"
              // ) != -1 &&
              // activeStep >
              //   steps.findIndex(
              //     (step) => step.label === "Compra de Kit"
              //   ) &&
              // (dadosCard?.exigir_pendencia_compra_material_loja_coleta ==
              // "1"
              //   ? dadosCard?.pendencia_compra_material?.length >
              //     0
              //   : true)
              //   && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    const agoraDateTime = new Date()
                      .toLocaleString("sv-SE", {
                        timeZone: "America/Sao_Paulo",
                        hour12: false,
                      })
                      .replace(" ", "T")
                      .slice(0, 16);
                    const contratosAtualizados = await listarContratosPorColeta(
                      dadosCard?.id_coleta_cliente,
                    ).catch(() => dadosCard?.contratos || []);

                    const contratoAprovadoMaisRecente = [
                      ...(contratosAtualizados || []),
                    ]
                      .filter(
                        (contrato: any) =>
                          String(contrato.status_contrato) === "1",
                      )
                      .sort(
                        (a: any, b: any) =>
                          new Date(b.data_hora_aprovacao).getTime() -
                          new Date(a.data_hora_aprovacao).getTime(),
                      )[0];
                    const dataAprovacaoContrato = String(
                      contratoAprovadoMaisRecente?.data_hora_aprovacao || "",
                    )
                      .replace(" ", "T")
                      .slice(0, 16);

                    const dataAprovacaoContratoLabel = dataAprovacaoContrato
                      ? new Date(dataAprovacaoContrato).toLocaleString("pt-BR")
                      : "Não informada";

                    const inputAttributes: Record<string, string> = {};
                    if (dataAprovacaoContrato) {
                      inputAttributes.min = dataAprovacaoContrato;
                    }

                    const result = await Swal.fire({
                      icon: "question",
                      title: "Finalização da Venda",
                      html: `Data da Aprovação do Contrato: <b>${dataAprovacaoContratoLabel}</b><br/>Informe a Data da Finalização da Venda`,
                      input: "datetime-local",
                      inputValue: agoraDateTime,
                      inputAttributes,
                      showDenyButton: true,
                      confirmButtonText: "Confirmar",
                      confirmButtonColor: "#4CAF50",
                      denyButtonText: "Cancelar",
                      denyButtonColor: "#FF0000",
                      customClass: {
                        popup: "dark:bg-form-strokedark dark:text-white",
                      },
                      inputValidator: (value) => {
                        if (!value) return "Informe a data da finalização";
                        if (
                          dataAprovacaoContrato &&
                          value < dataAprovacaoContrato
                        )
                          return "Data não pode ser menor que a data de aprovação do contrato";
                        return null;
                      },
                    });

                    if (result.isConfirmed) {
                      if (result.value > agoraDateTime) {
                        toast.warn(
                          "A data de finalização é maior que a data atual. O sistema vai salvar assim mesmo.",
                        );
                      }

                      finalizarVenda(result.value, dataAprovacaoContrato);
                    }
                  }}
                >
                  <button className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <IoMdCheckmarkCircleOutline size={16} />
                    Finalizar Venda
                  </button>
                </DropdownMenuItem>
              </>
            )}
          {/* menu estornar finalização da venda */}
          {podePendencia("8", "estornar") &&
            dadosCard &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("8") &&
            // dadosCard?.status_coleta == "8"
            compareActiveStep("Finalização da Venda", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("8"))) return;

                    handleSweetAlert(
                      {
                        icon: "error",
                        title: `Deseja Estornar a Venda`,
                        html: `<span>Tem certeza que deseja Estornar a Venda?</span>`,
                      },
                      async () => estornarVendaFunction(),
                    );
                  }}
                >
                  <span
                    className={`w-full flex items-center gap-2 text-sm rounded-md cursor-pointer text-danger  px-2 py-2 `}
                  >
                    <TbArrowBackUp size={20} />
                    Estornar a Finalização da Venda
                  </span>
                  {/* </SweetAlertConfirmacao> */}
                </DropdownMenuItem>
              </>
            )}
          {/* menu compra de kit */}
          {podePendencia("9", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("9") &&
            compareActiveStep("Liberação para Compras") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem onClick={() => setOpenPendenciaCompras(true)}>
                  <button className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <IoMdCheckmarkCircleOutline size={16} />
                    Liberação para Compras
                  </button>
                </DropdownMenuItem>
              </>
            )}

          {/* menu estornar Liberação para Compras */}
          {podePendencia("9", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("9") &&
            compareActiveStep("Liberação para Compras", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("9"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno de Liberação para Compras`,
                        html: `<span>Tem certeza que deseja estornar a Liberação para Compras?</span>`,
                      },
                      async () => {
                        // estornarPendenciaCompraMaterial({
                        //   id_negocio: dadosCard?.id_coleta_cliente,
                        // }).then(() => reListarDadosKanban());
                        const toastPromise = new Promise((resolve, reject) => {
                          atualizarCompraMaterialColeta({
                            id_negocio: dadosCard?.id_coleta_cliente,
                            exigir_pendencia_compra_material_coleta: null,
                            pendencia_compra_material_coleta: null,
                          })
                            .then(() =>
                              estornarPendenciaCompraMaterial({
                                id_negocio: dadosCard?.id_coleta_cliente,
                                id_card: dadosCard.id,
                                id_usuario: usuario.id_usuario,
                              }).then((res) => {
                                removerGravacaoPendenciaReaberta({
                                  id_coleta: dadosCard?.id_coleta_cliente,
                                  id_pendencia: "9",
                                });
                                // reListarDadosKanban().then(() => {
                                removePendencie("9");
                                resolve(res);
                                // });
                              }),
                            )
                            .catch((err) => reject(err));
                        });

                        return toast
                          .promise(toastPromise, {
                            pending: {
                              render(data: any) {
                                return "Aguarde";
                              },
                            },
                            success: {
                              render(data: any) {
                                return data.data;
                              },
                              theme: "light",
                            },
                            error: {
                              render(data: any) {
                                return data.data;
                              },
                            },
                          })
                          .finally(() => setIsLoading(false));
                      },
                    );
                  }}
                  className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-danger px-2 py-2"
                >
                  <TbArrowBackUp size={20} />
                  Estornar Liberação para Compras
                </DropdownMenuItem>
              </>
            )}

          {/* menu agendamento instalacao */}
          {podePendencia("11", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("11") &&
            compareActiveStep("Agendamento da Instalação") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={() => {
                    setOpenModalAgendamento(true);
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <Calendar size={16} /> Agendamento da Instalação
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu estornar agendamento instalacao */}
          {podePendencia("11", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("11") &&
            compareActiveStep("Agendamento da Instalação", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("11"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Deseja Confirmar o Estorno do Agendamento da Instalação?`,
                        html: `<span>Tem certeza que deseja estornar o Agendamento?</span>`,
                      },
                      async () => {
                        if (
                          dadosCard?.pre_apuracao_comissao_loja_coleta == "3"
                        ) {
                          estornarConclucaoAcao(
                            dadosCard?.id_coleta_cliente,
                          ).then(() => {
                            estornarAgendamentoNegocio({
                              id_coleta: dadosCard?.id_coleta_cliente,
                              id_usuario: session.id_usuario,
                              id_card: dadosCard?.id,
                            }).then(() => {
                              // reListarDadosKanban().then(() =>
                              removePendencie("11");
                              // );
                            });
                          });
                        } else {
                          estornarAgendamentoNegocio({
                            id_coleta: dadosCard?.id_coleta_cliente,
                            id_usuario: session.id_usuario,
                            id_card: dadosCard?.id,
                          }).then(() => {
                            // reListarDadosKanban().then(() =>
                            removePendencie("11");
                            // );
                          });
                        }
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <CalendarX size={20} /> Estornar Agendamento da Instalação
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu reagendar a instalação */}
          {(session.perfil_usuario == "1000" ||
            dadosPerfil?.permite_estornar_agendamento_instalacoes_perfil ==
            "1") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("11") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("13") &&
            compareActiveStep("Agendamento da Instalação", ">") &&
            compareActiveStep("Conclusão da Instalação", "<=") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    setOpenModalReAgendamentoInstalacao(true);
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-blue-500 rounded-md cursor-pointer px-2 py-2">
                    <CalendarArrowUp size={20} /> Reagendar a Instalação
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu conclusao instalacao */}
          {podePendencia("13", "realizar") &&
            dadosCard &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("13") &&
            compareActiveStep("Conclusão da Instalação") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={() => {
                    permiteConcluirInstalacao(
                      dadosCard?.id_coleta_cliente,
                    ).then(() => setOpenModalConclusaoInstalacao(true));
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <CalendarCheck size={16} /> Conclusão da Instalação
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu estornar conclusao instalacao */}
          {podePendencia("13", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("13") &&
            dadosCard &&
            compareActiveStep("Conclusão da Instalação", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("13"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Deseja Confirmar o Estorno da Conclusão da Instalação?`,
                        html: `<span>Tem certeza que deseja estornar a Conclusão?</span>`,
                      },
                      async () => {
                        if (
                          dadosCard?.pre_apuracao_comissao_loja_coleta == "4"
                        ) {
                          estornarConclucaoAcao(
                            dadosCard?.id_coleta_cliente,
                          ).then(() =>
                            estornarConclusaoInstalacao({
                              id_coleta: dadosCard?.id_coleta_cliente,
                              id_usuario: session.id_usuario,
                              id_card: dadosCard?.id,
                            }).then(() => {
                              // reListarDadosKanban().then(() =>
                              removePendencie("13");
                              // );
                            }),
                          );
                        } else {
                          estornarConclusaoInstalacao({
                            id_coleta: dadosCard?.id_coleta_cliente,
                            id_usuario: session.id_usuario,
                            id_card: dadosCard?.id,
                          }).then(() => {
                            // reListarDadosKanban().then(() =>
                            removePendencie("13");
                            // );
                          });
                        }
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <CalendarMinus size={16} /> Estornar Conclusão da Instalação
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu pagamento instalacao */}
          {podePendencia("14", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("14") &&
            dadosCard &&
            // dadosCard?.status_coleta == "10"
            compareActiveStep("Liberação para Pagamento da Instalação") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={() => setOpenModalPagamentoInstalacao(true)}
                >
                  <span className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <Receipt size={16} /> Liberação para Pagamento da Instalação
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {podePendencias(["17", "28"], "estornar") &&
            dadosCard &&
            dadosCard?.sequenciaPendencias_coleta
              ?.split(",")
              .some((pend: string) => ["17", "28"].includes(pend)) &&
            (compareActiveStep("Pesquisa de Satisfação 1", "- 1 ==") ||
              compareActiveStep("Pesquisa de Satisfação", "- 1 ==")) && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("17"))) return;
                    if (!(await canEstornar("28"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno da Pesquisa de Satisfação 1`,
                        html: `<span>Tem certeza que deseja estornar a Pesquisa de Satisfação 1?</span>`,
                      },
                      async () => {
                        // reListarDadosKanban().then(() => {
                        removePendencie("17");
                        removePendencie("28");
                        // });
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <MdCurrencyExchange /> Estornar da Pesquisa de Satisfação 1
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu agendamento manutencao */}
          {podePendencia("21", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("21") &&
            compareActiveStep("Agendamento da Manutenção") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={() => {
                    setOpenModalAgendamentoManutencao(true);
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <Calendar size={16} /> Agendamento da Manutenção
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu estornar agendamento manutencao */}
          {podePendencia("21", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("21") &&
            compareActiveStep("Agendamento da Manutenção", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("21"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Deseja Confirmar o Estorno do Agendamento da Manutenção?`,
                        html: `<span>Tem certeza que deseja estornar o Agendamento?</span>`,
                      },
                      async () => {
                        estornarAgendamentoManutencao({
                          id_coleta: dadosCard?.id_coleta_cliente,
                          id_usuario: session.id_usuario,
                          id_card: dadosCard?.id,
                        }).then(() => {
                          // reListarDadosKanban().then(() =>
                          removePendencie("21");
                          // );
                        });
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <CalendarX size={20} /> Estornar Agendamento da Manutenção
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu estornar geração de os */}
          {podePendencia("22", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("22") &&
            compareActiveStep("Geração de OS", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("22"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Deseja Confirmar o Estorno da Geração de OS?`,
                        html: `<span>Tem certeza que deseja cancelar as OS?</span>`,
                      },
                      async () => {
                        cancelarOrdensServicoColeta({
                          cod_coleta_pvos: dadosCard?.id_coleta_cliente,
                          id_usuario: session.id_usuario,
                          id_card: dadosCard?.id,
                        }).then(() => {
                          atualizarOrdensServico().then(() => {
                            removePendencie("22");
                          });
                        });
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <FaClipboard size={20} /> Reabrir Geração de OS
                  </span>
                </DropdownMenuItem>
              </>
            )}

          {/* menu estornar baixa da os */}
          {podePendencia("23", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("23") &&
            (compareActiveStep("Baixa da OS (Instalador)", "- 1 ==") ||
              ([null, 0, "0"].includes(ordemServico?.is_externo_usuario) &&
                compareActiveStep("Baixa da OS (Instalador)", "- 2 =="))) && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("23"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Deseja Confirmar o Estorno da Baixa de OS?`,
                        html: `<span>Tem certeza que deseja cancelar a baixa da OS?</span>`,
                      },
                      async () => {
                        estornarBaixaOrdemServicoInstalador({
                          ...ordemServico,
                          id_usuario: usuario?.id_usuario,
                          id_card: dadosCard.id,
                        }).then(() => {
                          atualizarOrdensServico().then(() => {
                            removePendencie("23");
                            removePendencie("30");
                          });
                        });
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <FaClipboard size={20} /> Reabrir Baixa da OS
                  </span>
                </DropdownMenuItem>
              </>
            )}

          {/* menu estornar custos do serviço de os */}
          {podePendencia("30", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("30") &&
            compareActiveStep("Custos do Serviço OS (Instalador)", "- 1 ==") &&
            ![null, 0, "0"].includes(ordemServico?.is_externo_usuario) && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("30"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title:
                          "Estornar os Custos do Serviço da Ordem de Serviço",
                        html: `Tem certeza que deseja <b>Estornar</b> a etapa de Custos do Serviço da Ordem de Servico Nº${ordemServico.id_pvos}?`,
                      },
                      () => {
                        estornarCustosDoServico({
                          ...ordemServico,
                          id_usuario: usuario?.id_usuario,
                          id_card: dadosCard.id,
                        }).then(() => {
                          atualizarOrdensServico().then(() => {
                            removePendencie("30");
                          });
                        });
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <FaClipboard size={20} /> Estornar os Custos do Serviço OS
                    (Instalador)
                  </span>
                </DropdownMenuItem>
              </>
            )}

          {/* menu estornar Validação da OS/Custos */}
          {podePendencia("24", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("24") &&
            (compareActiveStep("Validação da OS/Custos", "- 1 ==") ||
              (ordemServico?.cod_respfin_validacao_execucao_servico != "3" &&
                compareActiveStep("Validação da OS/Custos", "- 2 ==")) ||
              (ordemServico?.is_externo_usuario &&
                ordemServico?.is_externo_usuario != 0 &&
                (compareActiveStep("Validação da OS/Custos", "- 2 ==") ||
                  compareActiveStep("Validação da OS/Custos", "- 3 ==")))) && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("24"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: "Estornar a Validação da OS/Custos",
                        html: `Tem certeza que deseja <b>Estornar</b> a etapa de Validação da OS/Custos da OS Nº${ordemServico.id_pvos}?`,
                      },
                      () => {
                        estornarValidacaoCustos({
                          ...ordemServico,
                          id_usuario: usuario?.id_usuario,
                          id_card: dadosCard.id,
                        }).then(() => {
                          atualizarOrdensServico().then(() => {
                            removePendencie("24");
                            removePendencie("26");
                            removePendencie("27");
                          });
                        });
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <FaClipboard size={20} /> Estornar a Validação da OS/Custos
                  </span>
                </DropdownMenuItem>
              </>
            )}

          {podePendencia("18", "estornar") &&
            dadosCard &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("18") &&
            compareActiveStep("Pesquisa de Satisfação 2", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("18"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno da Pesquisa de Satisfação 2`,
                        html: `<span>Tem certeza que deseja estornar a Pesquisa de Satisfação 2?</span>`,
                      },
                      async () => {
                        // reListarDadosKanban().then(() => {
                        removePendencie("18");
                        // });
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <MdCurrencyExchange /> Estornar da Pesquisa de Satisfação 2
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {/* menu estornar pagamento instalacao */}
          {podePendencia("14", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta
              ?.split(",")
              .some((pend: string) => ["14", "27"].includes(pend)) &&
            dadosCard &&
            (compareActiveStep(
              "Liberação para Pagamento da Instalação",
              "- 1 =="
            ) ||
              // Permitir estornar após estornar Pesquisa de Satisfação 1
              (compareActiveStep("Pesquisa de Satisfação 1", "- 1 ==") &&
                !dadosCard?.sequenciaPendencias_coleta
                  ?.split(",")
                  .includes("17"))) && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("14"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Deseja Confirmar o Estorno do Pagamento da Instalação?`,
                        html: `<span>Tem certeza que deseja estornar o Pagamento?</span>`,
                      },
                      async () =>
                        estornarPagamentoInstalacao({
                          id_coleta: dadosCard?.id_coleta_cliente,
                          id_usuario: session.id_usuario,
                          id_card: dadosCard?.id,
                        }).then(() => {
                          // reListarDadosKanban().then(() => {
                          removePendencie("14");
                          // });
                        }),
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <CalendarMinus size={16} /> Estornar Liberação para
                    Pagamento da Instalação?
                  </span>
                </DropdownMenuItem>
              </>
            )}

          {/* menu estornar pagamento instalador */}
          {podePendencia("27", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta
              ?.split(",")
              .some((pend: string) => ["14", "27"].includes(pend)) &&
            dadosCard &&
            (ordemServico
              ? !(
                ordemServico?.is_externo_usuario &&
                ordemServico?.is_externo_usuario != 0
              )
              : true) &&
            compareActiveStep("Pagamento do Instalador", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("14"))) return;
                    if (!(await canEstornar("27"))) return;

                    // Verificar se pagamento foi feito
                    const { obterPagamentoInstalacao } = await import(
                      "@/requests/CRM/AgendamentosInstalacoes/obterPagamentoInstalacao"
                    );
                    let pagamentoExiste = false;
                    try {
                      const pagamento = await obterPagamentoInstalacao(
                        dadosCard?.id_coleta_cliente,
                      );
                      pagamentoExiste = !!pagamento;
                    } catch (error) {
                      // Se não encontrar pagamento, pode continuar
                    }

                    if (pagamentoExiste) {
                      handleSweetAlert(
                        {
                          icon: "warning",
                          title: `Deseja Confirmar o Estorno do Liberação para Pagamento da Instalação?`,
                          html: `<span>Tem certeza que deseja estornar o Pagamento? O pagamento já foi feito e será estornado também.</span>`,
                        },
                        async () =>
                          estornarPagamentoInstalacao({
                            id_coleta: dadosCard?.id_coleta_cliente,
                            id_usuario: session.id_usuario,
                            id_card: dadosCard?.id,
                          }).then(() => {
                            removePendencie("14");
                            removePendencie("27");
                          }),
                      );
                    } else {
                      handleSweetAlert(
                        {
                          icon: "warning",
                          title: `Deseja Confirmar o Estorno do Liberação para Pagamento da Instalação?`,
                          html: `<span>Tem certeza que deseja estornar o Pagamento?</span>`,
                        },
                        async () =>
                          estornarPagamentoInstalacao({
                            id_coleta: dadosCard?.id_coleta_cliente,
                            id_usuario: session.id_usuario,
                            id_card: dadosCard?.id,
                          }).then(() => {
                            removePendencie("14");
                            removePendencie("27");
                          }),
                      );
                    }
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <CalendarMinus size={16} /> Estornar Pagamento do
                    Instalador?
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {podePendencia("15", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("15") &&
            compareActiveStep("Entrega Efetuada", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("15"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno da Pendência de Entrega Efetuada`,
                        html: `<span>Tem certeza que deseja estornar a pendência de Entrega Efetuada?</span>`,
                      },
                      async () => {
                        const toastPromise = new Promise((resolve, reject) => {
                          estornarPendenciaEntregaKit({
                            id_negocio: dadosCard?.id_coleta_cliente,
                            id_usuario: usuario.id_usuario,
                            id_card: dadosCard?.id,
                          })
                            .then((res) => {
                              // reListarDadosKanban().then(() => {
                              removePendencie("15");
                              resolve(res);
                              // });
                            })
                            .catch((err) => reject(err));
                        });

                        return toast
                          .promise(toastPromise, {
                            pending: {
                              render(data: any) {
                                return "Aguarde";
                              },
                            },
                            success: {
                              render(data: any) {
                                return data.data;
                              },
                              theme: "light",
                            },
                            error: {
                              render(data: any) {
                                return data.data;
                              },
                            },
                          })
                          .finally(() => setIsLoading(false));
                      },
                    );
                  }}
                  className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-danger px-2 py-2"
                >
                  <TbArrowBackUp size={20} />
                  Estornar Pendência de Entrega Efetuada
                </DropdownMenuItem>
              </>
            )}
          {podePendencia("16", "realizar") &&
            dadosCard?.sequenciaPendencias_coleta?.split(",").includes("16") &&
            dadosCard &&
            compareActiveStep("Faturamento") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={() => setOpenPendenciaFaturmento(true)}
                >
                  <span className="flex w-full items-center gap-2 text-sm rounded-md cursor-pointer text-success px-2 py-2">
                    <Receipt size={16} /> Faturamento
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {podePendencias(["16", "26"], "estornar") &&
            dadosCard?.sequenciaPendencias_coleta
              ?.split(",")
              .some((pend: string) => ["16", "26"].includes(pend)) &&
            (ordemServico
              ? ordemServico?.cod_respfin_validacao_execucao_servico == "3"
              : true) &&
            compareActiveStep("Faturamento", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("16"))) return;
                    if (!(await canEstornar("26"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno do Faturamento`,
                        html: `<span>Tem certeza que deseja estornar o faturamento?</span>`,
                      },
                      async () =>
                        estornarFaturamentoFunction(
                          dadosCard?.id_coleta_cliente,
                        ),
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <MdCurrencyExchange /> Estornar Faturamento
                  </span>
                </DropdownMenuItem>
              </>
            )}
          {podePendencia("31", "estornar") &&
            dadosCard?.sequenciaPendencias_coleta
              ?.split(",")
              .some((pend: string) => ["31"].includes(pend)) &&
            compareActiveStep("Contato com o Cliente", "- 1 ==") && (
              <>
                <DropdownMenuSeparator />
                <DropdownMenuItem
                  onClick={async () => {
                    if (!(await canEstornar("31"))) return;

                    handleSweetAlert(
                      {
                        icon: "warning",
                        title: `Estorno do Contato com o Cliente`,
                        html: `<span>Tem certeza que deseja estornar o Contato?</span>`,
                      },
                      async () => {
                        salvarContatoClienteColeta({
                          id_usuario: usuario?.id_usuario,
                          id_coleta: dadosCard?.id_coleta_cliente,
                          dataContato_cliente_coleta: null,
                          obsContato_cliente_coleta: null,
                        }).then(() => {
                          removePendencie("31");
                        });
                      },
                    );
                  }}
                >
                  <span className="flex w-full items-center gap-2 text-sm text-danger rounded-md cursor-pointer px-2 py-2">
                    <MdPhoneDisabled /> Estornar Contato com o Cliente
                  </span>
                </DropdownMenuItem>
              </>
            )}
        </DropdownMenuContent>
      </DropdownMenu>
    </div>
  );
};

export default DropdownsEditCard;
