/// <summary>
        ///     Método para popular a tabela de notas fiscais do Wex a partir do banco do Microsiga
        ///     descosiderando notas fiscais importadas anteriormente
        /// </summary>
        private void ImportarNotasFiscais()
        {
            List <NotaFiscal> notasFiscaisTotvs = NotasFiscaisDao.ListaRubricasTotvs().ToList();

            // normalizando acentuacao das descricoes
            List <string> descricoes = DescricoesFiltradas.Select(StrUtil.NormalizarAcentuacao).ToList();

            // removendo (filtrando) descricoes da lista do totvs
            notasFiscaisTotvs.RemoveAll(notaFiscal => descricoes.Contains(StrUtil.NormalizarAcentuacao(notaFiscal.Descricao.Trim())));

            // removendo notas fiscais já importados
            notasFiscaisTotvs.RemoveAll(notaFiscal => NotasFiscaisDao.VerificarNotasFiscaisImportadas(notaFiscal.ChaveImportacao));

            // salvando novos notas fiscais no wex
            foreach (NotaFiscal notaFiscal in notasFiscaisTotvs)
            {
                // centro de custo nao veio na listagem dos notas fiscais no totvs
                if (notaFiscal.CentroCusto == null)
                {
                    continue;
                }

                CentroCusto centroCusto = CentroCustoDao.Instance.ConsultarCentroCustoPorCodigo(notaFiscal.CentroCusto.Codigo);
                notaFiscal.CentroCusto     = null;
                notaFiscal.CentroDeCustoId = centroCusto.CentroCustoId;

                NotasFiscaisDao.SalvarNotaFiscal(notaFiscal);
            }
        }
        /// <summary>
        ///     Remove Rúbrica se estiver vazia ou se force for igual a true.
        /// </summary>
        /// <param name="rubricaId">Id da Rúbrica a ser excluída.</param>
        /// <param name="force">Indica se Rúbrica deve ser excluída quando não estiver vazia.</param>
        /// <param name="filhos">Lista de Rúbricas filhas da Rúbrica a ser deletada.</param>
        /// <returns>Id da Rúbrica removida.</returns>
        /// <exception cref="RubricaNaoVaziaException">Caso Rúbrica não esteja vazia e force for igual a false.</exception>
        public int RemoverRubrica(int rubricaId, bool force, out List <int> filhos)
        {
            Rubrica rubrica = RubricaDao.Instance.ConsultarRubrica(rubricaId);

            if (force || VerificarRubricaVazia(rubrica))
            {
                var notasFiscais = NotasFiscaisDao.ConsultarNotasFiscais(rubrica);

                foreach (var notaFiscal in notasFiscais)
                {
                    NotasFiscaisBo.Instance.DesassociarNotaFiscal(rubrica.RubricaId, notaFiscal.Id);
                }

                var rubricasMeses = RubricaMesDao.Instance.ConsultarRubricaMeses(rubrica.RubricaId);

                foreach (var rubricaMes in rubricasMeses)
                {
                    RubricaMesDao.Instance.RemoverRubricaMes(rubricaMes.RubricaMesId);
                }

                return(RubricaDao.Instance.RemoverRubrica(rubricaId, out filhos));
            }

            throw new RubricaNaoVaziaException(String.Format("Rúbrica {0} não está vazia. Use force para remover.",
                                                             rubricaId));
        }
        public IEnumerable <NotaFiscalDto> ListarNotasFiscais(RubricaDto rubricaDto)
        {
            var rubrica = new Rubrica {
                RubricaId = rubricaDto.RubricaId
            };

            return(NotasFiscaisDao.ConsultarNotasFiscais(rubrica).Select(TransformarParaDto));
        }
        /// <summary>
        ///     Lista as notas fiscais de um determinado Centro de Custo em uma data específica
        /// </summary>
        /// <param name="centroCustoDto">Centro de Custo</param>
        /// <param name="ano">ano selecionado</param>
        /// <param name="mes">mês selecionado</param>
        /// <returns></returns>
        public IEnumerable <NotaFiscalDto> ListarNotasFiscais(CentroCustoDto centroCustoDto, int ano, int mes)
        {
            var centroCusto = new CentroCusto {
                CentroCustoId = centroCustoDto.IdCentroCusto
            };

            return(NotasFiscaisDao.ConsultarNotasFiscais(centroCusto, ano, mes).Select(TransformarParaDto));
        }
        /// <summary>
        ///     Desassociar nota fiscal de uma rubrica
        /// </summary>
        /// <param name="rubricaId">Id da rubrica</param>
        /// <param name="notaFiscalId">Nota fiscal a ser desassociada.</param>
        public void DesassociarNotaFiscal(int rubricaId, int notaFiscalId)
        {
            NotaFiscal notaFiscal = NotasFiscaisDao.ConsultarNotaFiscal(notaFiscalId);

            notaFiscal.RubricaId = null;

            NotasFiscaisDao.SalvarNotaFiscal(notaFiscal);

            RubricaMesBo.Instance.AtualizarDespesaReal(rubricaId);
        }
        /// <summary>
        ///     Popular centros de custo
        /// </summary>
        /// <returns>Booleano</returns>
        private void ImportarCentrosCustos()
        {
            // resgatando centros de custo do totvs
            List <CentroCusto> centrosCustos = NotasFiscaisDao.ListarCentroDeCustosTotvs().ToList();

            // removendo centros de custo já importados
            centrosCustos.RemoveAll(
                centro => CentroCustoDao.Instance.ConsultarCentroCustoPorCodigo(centro.Codigo) != null);

            foreach (CentroCusto centro in centrosCustos)
            {
                CentroCustoDao.Instance.SalvarCentroCusto(centro);
            }
        }
        public static NotaFiscal CriarNotaFiscal(DateTime data, int idCentroCusto,
                                                 string descricao, decimal valor, int chaveImportacao)
        {
            var notaFiscal = new NotaFiscal
            {
                Data            = data,
                CentroDeCustoId = idCentroCusto,
                Descricao       = descricao,
                Valor           = valor,
                ChaveImportacao = chaveImportacao
            };

            NotasFiscaisDao.SalvarNotaFiscal(notaFiscal);
            return(notaFiscal);
        }
        /// <summary>
        /// </summary>
        /// <param name="notaFiscalDto"></param>
        public void AtualizarNotaFiscal(NotaFiscalDto notaFiscalDto)
        {
            NotaFiscal notaFiscal = NotasFiscaisDao.ConsultarNotaFiscal(notaFiscalDto.GastoId);

            int?rubricaIdAntiga = notaFiscal.RubricaId;

            notaFiscal.RubricaId     = notaFiscalDto.RubricaId;
            notaFiscal.Justificativa = notaFiscalDto.Justificativa;

            NotasFiscaisDao.SalvarNotaFiscal(notaFiscal);

            if (rubricaIdAntiga != notaFiscalDto.RubricaId)
            {
                RubricaMesBo.Instance.AtualizarDespesaReal(rubricaIdAntiga ?? 0);
            }
        }
示例#9
0
        /// <summary>
        ///     Método para atualizar os gastos relacionados
        /// </summary>
        /// <param name="rubricaId">Id da rubrica</param>
        public void AtualizarDespesaReal(int rubricaId)
        {
            if (rubricaId == 0)
            {
                return;
            }

            Rubrica rubrica = RubricaDao.Instance.ConsultarRubrica(rubricaId);
            List <RubricaAnoDto> anosRubrica = RubricaBo.Instance.CriarListaAnosRubrica(rubrica);

            foreach (RubricaAnoDto anoRubrica in anosRubrica)
            {
                foreach (RubricaMesDto rubricaMesDto in anoRubrica.Meses)
                {
                    List <NotaFiscal> notasFiscais = NotasFiscaisDao.ConsultarNotasFiscais(rubrica, rubricaMesDto.Ano, (int)rubricaMesDto.Mes).ToList();
                    DefinirDespesaReal(notasFiscais, rubricaMesDto);
                    SalvarRubricaMes(rubricaMesDto);
                }
            }
        }