示例#1
0
        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));
        }
示例#2
0
        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);
        }