public ActionResult Criar(VariacaoPatrimonialDiminutivaViewModel instancia) { try { var now = DateTime.Now; String msg = string.Empty; if (this.UnidadeGestoraEhFechada(ref msg, now)) { this.EmitirMensagem(msg, ETipoMensagem.Aviso); { CriarViewBag(); return(View(instancia)); } } var dataExercicioAtual = ExercicioAnoSessao.Sessao.AnoExercicioCorrente; if (instancia.DataEmissao.Year < dataExercicioAtual) { this.EmitirMensagem("A Data informada não pode ser anterior ao Exercício atual", ETipoMensagem.Aviso); CriarViewBag(); return(View(instancia)); } var vpdVM = VariacaoPatrimonialDiminutivaGerenciarSessao.Sessao.variacaoPatrimonialDiminutivaVM; if (vpdVM.ListaItemVPD == null || !vpdVM.ListaItemVPD.Any()) { this.EmitirMensagem("Informe ao menos um item da VPD", ETipoMensagem.Aviso); CriarViewBag(); return(View(instancia)); } var documento = MontaObjetoVPDPrevia(instancia, now); const string str = "Campo Obrigatório"; if (String.IsNullOrWhiteSpace(instancia.CredorIdentificacao)) { ModelState.AddModelError("CredorIdentificacao", str); } if (!ModelState.IsValid) { CriarViewBag(); return(View(instancia)); } #region Monta Lista de Processos a ser executados ao criar uma VPD List <ProcessosDoLancamentoContabil> processosVPD = new List <ProcessosDoLancamentoContabil>(); var configVPD = new ConfiguracaoLancamentoContabil() { Exercicio = ExercicioAnoSessao.Sessao.AnoExercicioCorrente.Value, CodigoDoDocumento = "VPD", Evento = false, UsarEventoDoDocumento = false, PermitirInscricaoDoEventoInvalida = true, Estorno = false, Atualizar = false, NaturezaDespesa = true, }; using (SimplesLancamentoContabil contabil = new SimplesLancamentoContabil()) { contabil.SetDocumento(documento); contabil.SetConfiguracao(configVPD); processosVPD = contabil.MontarProcessos(); } #endregion #region Criar VPD List <ChaveConta> chaves = new List <ChaveConta>(); SimplesLancamentoContabil.AdicionarChaves(chaves, processosVPD); var move = new MovimentacaoFinanceira(); move.AdicionarProcesso(processosVPD); move.Validar(); move.LiberarDocumento(documento); using (ControleConta cc = new ControleConta(chaves)) { cc.Validar(); using (var ts = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = ControleConta.IsolationLevelLancamentoContabil })) { using (GenericoSalvarLancamento save = new GenericoSalvarLancamento(documento, configVPD)) { save.GerarLancamentos(processosVPD); save.Salvar(); } ts.Complete(); } } #endregion DocumentoGerenciarSession.Sessao.Dispose("DocumentoGerenciarSession_SESSAO"); EmitirMensagem(ConfigurationManager.AppSettings["MENSAGEM_SUCESSO"] + " VPD Prévia Nº " + documento.Numero); return(RedirectToAction("Index")); } catch (DbEntityValidationException e) { EmitirMensagem(e); } catch (CFP.Util.SPFException ex) { EmitirMensagem(ex.Message, ETipoMensagem.Erro); } CriarViewBag(); return(View(instancia)); }
public JsonResult Estornar(VPDEstorno vpdEstorno) { string status = "OK"; string mensagem = string.Empty; string numeroDocumentoGerado = string.Empty; try { var now = DateTime.Now; if (this.UnidadeGestoraEhFechada(ref mensagem, now)) { throw new CFP.Util.SPFException(mensagem); } if (string.IsNullOrEmpty(vpdEstorno.DataEmissao.ToString()) || vpdEstorno.DataEmissao.Year == 1) { throw new CFP.Util.SPFException("A data de emissão é obrigatória!"); } var documento = MontaObjetoVPDPreviaEstorno(vpdEstorno, now); #region Monta Lista de Processos a ser executados ao estornar uma VPD List <ProcessosDoLancamentoContabil> processosVPD = new List <ProcessosDoLancamentoContabil>(); var configVPD = new ConfiguracaoLancamentoContabil() { Exercicio = ExercicioAnoSessao.Sessao.AnoExercicioCorrente.Value, CodigoDoDocumento = "VPD", Evento = false, UsarEventoDoDocumento = false, PermitirInscricaoDoEventoInvalida = true, Estorno = true, Atualizar = false, NaturezaDespesa = true, }; using (SimplesLancamentoContabil contabil = new SimplesLancamentoContabil()) { contabil.SetDocumento(documento); contabil.SetConfiguracao(configVPD); processosVPD = contabil.MontarProcessos(); } #endregion #region Criar VPD List <ChaveConta> chaves = new List <ChaveConta>(); SimplesLancamentoContabil.AdicionarChaves(chaves, processosVPD); var move = new MovimentacaoFinanceira(); move.AdicionarProcesso(processosVPD); move.Validar(); move.LiberarDocumento(documento); using (ControleConta cc = new ControleConta(chaves)) { cc.Validar(); using (var ts = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = ControleConta.IsolationLevelLancamentoContabil })) { using (GenericoSalvarLancamento save = new GenericoSalvarLancamento(documento, configVPD)) { save.GerarLancamentos(processosVPD); save.Salvar(); } ts.Complete(); numeroDocumentoGerado = documento.Numero; } } #endregion } catch (CFP.Util.SPFException ex) { status = "Erro"; mensagem = ex.Message; } return(Json(new { Status = status, Mensagem = mensagem, NumeroDocumentoGerado = numeroDocumentoGerado }, JsonRequestBehavior.AllowGet)); //return View(vpdEstorno); }