@Override
 public void selecionarComboItem(int combo, Item item) {
   if (item != null) {
     new TransferenciaItem().montarSelectItem(itemController.getComboItem());
     itemController.setItemSelecionado(item);
   }
   Animacao.fadeInInvisivel(itemController.getComboItem(), formulario);
 }
 private boolean validarFormulario() {
   try {
     Validar.autoFiltro(itemController.getAutoFiltro(), itemController.getComboItem());
     Validar.comboBox(contaOrigem);
     Validar.comboBox(contaDestino);
     Validar.igualdade(contaOrigem, contaDestino);
     Validar.datePicker(data);
     Validar.textFieldDecimal(valor);
     return true;
   } catch (Erro ex) {
     return false;
   }
 }
 @Override
 public void acaoCadastrar(int botao) {
   if (botao == 1) {
     Animacao.fadeOutInvisivel(itemController.getComboItem(), formulario);
     TransferenciaItemFormularioControlador controladorItem =
         Janela.abrir(TransferenciaItem.FXML_FORMULARIO, idioma.getMensagem("transferencia"));
     controladorItem.cadastrar(this, itemController.getComboItem().getEditor().getText());
   } else {
     Animacao.fadeOutInvisivel(contaOrigem, formulario);
     ContaFormularioControlador controladorConta =
         Janela.abrir(Conta.FXML_FORMULARIO, idioma.getMensagem("transferencia"));
     controladorConta.cadastrar(this);
   }
 }
 @Override
 public void acaoFinalizar() {
   if (validarFormulario()) {
     String idContaOrigem = contaOrigem.getSelectionModel().getSelectedItem().getIdCategoria();
     String idContaDestino = contaDestino.getSelectionModel().getSelectedItem().getIdCategoria();
     if (acao == Acao.CADASTRAR) {
       Transferencia item =
           new Transferencia(
               null,
               idContaOrigem,
               idContaDestino,
               itemController.getIdItem(),
               descricao.getText(),
               valor.getText(),
               data.getValue(),
               Datas.getHoraAtual());
       item.cadastrar();
       new Conta().alterarSaldo(Operacao.DECREMENTAR, idContaOrigem, valor.getText());
       new Conta().alterarSaldo(Operacao.INCREMENTAR, idContaDestino, valor.getText());
       Kernel.principal.acaoTransferencia();
       Janela.showTooltip(Status.SUCESSO, idioma.getMensagem("operacao_sucesso"), Duracao.CURTA);
       Animacao.fadeInOutClose(formulario);
     } else {
       Boolean contaOrigemMudou = !(Modelo.getIdContaOrigem().equals(idContaOrigem));
       if (contaOrigemMudou) {
         new Conta()
             .alterarSaldo(Operacao.INCREMENTAR, Modelo.getIdContaOrigem(), Modelo.getValor());
         new Conta().alterarSaldo(Operacao.DECREMENTAR, idContaOrigem, Modelo.getValor());
       }
       Modelo.setIdContaOrigem(contaOrigem.getValue());
       Boolean contaDestinoMudou = !(Modelo.getIdContaDestino().equals(idContaDestino));
       if (contaDestinoMudou) {
         new Conta()
             .alterarSaldo(Operacao.DECREMENTAR, Modelo.getIdContaDestino(), Modelo.getValor());
         new Conta().alterarSaldo(Operacao.INCREMENTAR, idContaDestino, Modelo.getValor());
       }
       Modelo.setIdContaDestino(contaDestino.getValue());
       Boolean valorMudou = !(Modelo.getValor().equals(valor.getText()));
       if (valorMudou) {
         BigDecimal valorDiferenca = new BigDecimal(Modelo.getValor());
         valorDiferenca = valorDiferenca.subtract(new BigDecimal(valor.getText()));
         new Conta()
             .alterarSaldo(
                 Operacao.INCREMENTAR, Modelo.getIdContaOrigem(), valorDiferenca.toString());
         new Conta()
             .alterarSaldo(
                 Operacao.DECREMENTAR, Modelo.getIdContaDestino(), valorDiferenca.toString());
       }
       Modelo.setValor(valor.getText());
       Modelo.setDescricao(descricao.getText());
       Modelo.setData(data.getValue());
       Modelo.alterar();
       Kernel.principal.acaoTransferencia();
       Janela.showTooltip(Status.SUCESSO, idioma.getMensagem("operacao_sucesso"), Duracao.CURTA);
       Animacao.fadeInOutClose(formulario);
     }
   }
 }
 public void alterar(Transferencia modelo) {
   Modelo = modelo;
   botaoController.setTextBotaoFinalizar(idioma.getMensagem("alterar"));
   TransferenciaItem item = new TransferenciaItem().setIdItem(Modelo.getIdItem()).consultar();
   if (item != null) {
     itemController.setItemSelecionado(item);
   }
   Conta contaOri = new Conta().setIdCategoria(Modelo.getIdContaOrigem()).consultar();
   if (contaOri != null) {
     contaOrigem.getSelectionModel().select(contaOri);
   }
   Conta contaDes = new Conta().setIdCategoria(Modelo.getIdContaDestino()).consultar();
   if (contaDes != null) {
     contaDestino.getSelectionModel().select(contaDes);
   }
   itemController.getComboItem().setDisable(true);
   itemController.getBotaoCadastrar().setDisable(true);
   data.setValue(Modelo.getDataLocal());
   descricao.setText(Modelo.getDescricao());
   valor.setText(Modelo.getValor());
 }
 @Override
 public void initialize(URL url, ResourceBundle rb) {
   formulario.setText(idioma.getMensagem("transferencia"));
   Botao.prepararBotaoModal(this, botaoController, itemController);
   labelItem.setText(idioma.getMensagem("item") + ":");
   labelContaOrigem.setText(idioma.getMensagem("conta_origem") + ":");
   labelContaDestino.setText(idioma.getMensagem("conta_destino") + ":");
   labelData.setText(idioma.getMensagem("data") + ":");
   labelDescricao.setText(idioma.getMensagem("descricao") + ":");
   labelValor.setText(idioma.getMensagem("valor") + ":");
   new TransferenciaItem().montarSelectItem(itemController.getComboItem());
   new Conta().montarSelectCategoria(contaOrigem);
   new Conta().montarSelectCategoria(contaDestino);
 }