public bool SalvarMovimento(Movimento movimento) { using (var ctx = new BalcaoContext()) { try { var movSave = movimento.Clone(movimento); if (movimento.TipoMovimento != null && movimento.TipoMovimento.GeraMovimentoFiscal) { //cria os impostos movSave.ItensMovimento.ToList().ForEach(it => { CriarImpostosItemNF(it); }); //calcula o icms que fica na capa movSave.CalculaValoresIcms(); } //cancela as referencias para o Save CancelarReferenciaNfInclusao(movSave); var transaction = ctx.MovimentoDao.Save(movSave); if (transaction) { new ProdutoDaoManager().AddMovimentacaoProduto(movimento, movSave.IdMovimento); XMessageIts.Mensagem("Nota fiscal cadastrada com sucesso!", "SUCESSO!!", MessageBoxIcon.Information); } return(transaction); } catch (DbUpdateException db) { XMessageIts.ExceptionMessageDetails(db, "Dados em duplicidade! Vefique todos os campos e se já não existe uma nota fiscal com os mesmos dados!"); return(false); } catch (Exception ex) { XMessageIts.ExceptionMessageDetails(ex, "Ocorreu um erro na inclusão/atualização da nota fiscal"); return(false); } } }