Пример #1
0
        /// <summary>
        /// Salva o tipo de cartão de crédito
        /// </summary>
        public Colosoft.Business.SaveResult SalvarTipoCartaoCredito(Entidades.TipoCartaoCredito tipoCartaoCredito)
        {
            tipoCartaoCredito.Require("tipoCartaoCredito").NotNull();

            var existeCartao = ExisteTipoCartao(tipoCartaoCredito.Bandeira, tipoCartaoCredito.Operadora, (uint)tipoCartaoCredito.Tipo);

            // Se for um novo Tipo de Cartão, cria e insere os planos de contas
            if (!tipoCartaoCredito.ExistsInStorage)
            {
                if (existeCartao)
                {
                    throw new Exception("Já existe este tipo de cartão cadastrado no sistema");
                }

                var retorno = SalvarTipoCartaoComPlanoContas(tipoCartaoCredito);
                if (!retorno)
                {
                    return(new Colosoft.Business.SaveResult(false, retorno.Message));
                }

                // Salva os dados do Tipo cartão com os novos planos no banco.
                using (var session = SourceContext.Instance.CreateSession())
                {
                    var resultado = retorno.Salvar(session);

                    if (!resultado)
                    {
                        return(resultado);
                    }

                    return(session.Execute(false).ToSaveResult());
                }
            }

            // Atualiza os dados do banco.
            using (var session = SourceContext.Instance.CreateSession())
            {
                var resultado = tipoCartaoCredito.Save(session);

                if (!resultado)
                {
                    return(resultado);
                }

                return(session.Execute(false).ToSaveResult());
            }
        }
Пример #2
0
        /// <summary>
        /// Calcula a taxa de juros que ser aplica para o tipo de cartão.
        /// </summary>
        /// <param name="tipoCartao"></param>
        /// <param name="idLoja"></param>
        /// <param name="numeroParcelas"></param>
        /// <returns></returns>
        decimal Entidades.IProvedorJuros.CalcularTaxaJuros(Entidades.TipoCartaoCredito tipoCartao, int?idLoja, int numeroParcelas)
        {
            var itens = SourceContext.Instance.CreateQuery()
                        .From <Data.Model.JurosParcelaCartao>()
                        .Where("IdTipoCartao=?idTipoCartao AND NumParc=?numParc AND (IdLoja=?idLoja OR IdLoja IS NULL)")
                        .Add("?idTipoCartao", tipoCartao.IdTipoCartao)
                        .Add("?numParc", numeroParcelas)
                        .Add("?idLoja", idLoja)
                        .Select("Juros, IdLoja")
                        .Execute()
                        .Select(f => new
            {
                Juros  = f.GetDecimal("Juros"),
                IdLoja = f.IsDBNull("IdLoja") ? null : (int?)f.GetInt32("Juros")
            })
                        .ToArray();

            var item = itens.FirstOrDefault(f => f.IdLoja == idLoja) ?? itens.FirstOrDefault(f => !f.IdLoja.HasValue);

            return(item != null ? item.Juros : 0m);
        }
Пример #3
0
        /// <summary>
        /// Salva o tipo de cartão de crédito com os planos de contas padrões
        /// </summary>
        private SalvarTipoCartaoComPlanoContasResultado SalvarTipoCartaoComPlanoContas(Entidades.TipoCartaoCredito tipoCartaoCredito)
        {
            var planoContasFluxo = Microsoft.Practices.ServiceLocation.ServiceLocator
                                   .Current.GetInstance <IPlanoContasFluxo>();

            // Recupera ou Cria os planos de contas.
            var planoContaDevolucaoPagto = planoContasFluxo.RecuperaOuCriaPlanoContas(49, "Devolução de Pagamento Cartão " +
                                                                                      Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                                      Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaEntrada = planoContasFluxo.RecuperaOuCriaPlanoContas(51, "Entrada Cartão " +
                                                                               Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                               Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaEstorno = planoContasFluxo.RecuperaOuCriaPlanoContas(49, "Estorno de Cartão " +
                                                                               Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                               Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaEstornoChequeDev = planoContasFluxo.RecuperaOuCriaPlanoContas(49, "Estorno Cheque Devolvido Cartão " +
                                                                                        Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                                        Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaEstornoDevolucaoPagto = planoContasFluxo.RecuperaOuCriaPlanoContas(49, "Estorno Devolução de Pagamento Cartão " +
                                                                                             Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                                             Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaEstornoEntrada = planoContasFluxo.RecuperaOuCriaPlanoContas(49, "Estorno Entrada Cartão " +
                                                                                      Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                                      Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaEstornoRecPrazo = planoContasFluxo.RecuperaOuCriaPlanoContas(49, "Estorno Rec. Prazo Cartão " +
                                                                                       Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                                       Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaFunc = planoContasFluxo.RecuperaOuCriaPlanoContas(7, "Receb. de Funcionário Cartão " +
                                                                            Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                            Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaRecChequeDev = planoContasFluxo.RecuperaOuCriaPlanoContas(48, "Recec. Cheque Devolvido Cartão " +
                                                                                    Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                                    Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaRecPrazo = planoContasFluxo.RecuperaOuCriaPlanoContas(50, "Recec. Prazo com Cartão " +
                                                                                Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                                Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());
            var planoContaVista = planoContasFluxo.RecuperaOuCriaPlanoContas(51, "Receb. à Vista Cartão " +
                                                                             Data.DAL.OperadoraCartaoDAO.Instance.ObterDescricaoOperadora((uint)tipoCartaoCredito.Operadora) + " " +
                                                                             Data.DAL.BandeiraCartaoDAO.Instance.ObterDescricaoBandeira((uint)tipoCartaoCredito.Bandeira) + " " + tipoCartaoCredito.Tipo.ToString());

            // Associa os IdsContas.
            tipoCartaoCredito.IdContaDevolucaoPagto        = planoContaDevolucaoPagto.IdConta;
            tipoCartaoCredito.IdContaEntrada               = planoContaEntrada.IdConta;
            tipoCartaoCredito.IdContaEstorno               = planoContaEstorno.IdConta;
            tipoCartaoCredito.IdContaEstornoChequeDev      = planoContaEstornoChequeDev.IdConta;
            tipoCartaoCredito.IdContaEstornoDevolucaoPagto = planoContaEstornoDevolucaoPagto.IdConta;
            tipoCartaoCredito.IdContaEstornoEntrada        = planoContaEstornoEntrada.IdConta;
            tipoCartaoCredito.IdContaEstornoRecPrazo       = planoContaEstornoRecPrazo.IdConta;
            tipoCartaoCredito.IdContaFunc         = planoContaFunc.IdConta;
            tipoCartaoCredito.IdContaRecChequeDev = planoContaRecChequeDev.IdConta;
            tipoCartaoCredito.IdContaRecPrazo     = planoContaRecPrazo.IdConta;
            tipoCartaoCredito.IdContaVista        = planoContaVista.IdConta;

            var planosContas = new List <Entidades.PlanoContas>();

            planosContas.Add(planoContaDevolucaoPagto);
            planosContas.Add(planoContaEntrada);
            planosContas.Add(planoContaEstorno);
            planosContas.Add(planoContaEstornoChequeDev);
            planosContas.Add(planoContaEstornoDevolucaoPagto);
            planosContas.Add(planoContaEstornoEntrada);
            planosContas.Add(planoContaEstornoRecPrazo);
            planosContas.Add(planoContaFunc);
            planosContas.Add(planoContaRecChequeDev);
            planosContas.Add(planoContaRecPrazo);
            planosContas.Add(planoContaVista);

            // Define o IdContaGrupo para os Planos novos.
            planosContas.ForEach(pc =>
            {
                if (!pc.ExistsInStorage)
                {
                    var idContaGrupo = SourceContext.Instance.CreateQuery()
                                       .From <Data.Model.PlanoContas>()
                                       .Select("MAX(IdContaGrupo), COUNT(*)")
                                       .Where("IdGrupo=?idGrupo")
                                       .Add("?idGrupo", pc.IdGrupo)
                                       .Execute()
                                       .Select(f => f.IsDBNull(0) ? 0 : f.GetInt32(0))
                                       .FirstOrDefault() + 1;

                    pc.IdContaGrupo = idContaGrupo;
                }
            });

            return(new SalvarTipoCartaoComPlanoContasResultado(tipoCartaoCredito, planoContaDevolucaoPagto, planoContaEntrada, planoContaEstorno, planoContaEstornoChequeDev,
                                                               planoContaEstornoDevolucaoPagto, planoContaEstornoEntrada, planoContaEstornoRecPrazo, planoContaFunc, planoContaRecChequeDev, planoContaRecPrazo, planoContaVista));
        }