public virtual bool CalculaSemProporcional(ClienteServicosBE obj)
        {
            try
            {
                ClienteNotaBE nota = new ClienteNotaBE(obj.cli_id, obj.servCli_descricao, obj.servCli_valor, null, false, true, obj.serv_id, obj.servCli_contrato, obj.servCli_contratonome);
                var           ins  = new ClienteNotaBLL().Insert(nota);

                return(true);
            }
            catch (Exception ex)
            {
                Common.TratarLogErro(ex);
                return(false);
            }
        }
        public virtual bool CalcularParcelas(ClienteServicosBE obj)
        {
            if (obj.servCli_parcelado)
            {
                if (obj.servCli_parceladoQtd > 1)
                {
                    var parcelas        = Decimal.Round(obj.servCli_valor / obj.servCli_parceladoQtd, 3);
                    var primeiraparcela = parcelas;
                    var _string         = parcelas.ToString();
                    var _array          = _string.Split(',');

                    if (_array.Length > 1 && _array[1].Length > 2)
                    {
                        var _ultimocampos = Convert.ToInt32(_string.Substring(_string.Length - 1));
                        if (_ultimocampos > 0)
                        {
                            parcelas        = Convert.ToDecimal(_string.Substring(0, _string.Length - 1));
                            primeiraparcela = parcelas + (obj.servCli_valor - (parcelas * obj.servCli_parceladoQtd));
                        }
                    }

                    var           cliNota       = new ClienteNotaBLL();
                    ClienteNotaBE valorParcelas = new ClienteNotaBE(obj.cli_id, obj.servCli_descricao, primeiraparcela, null, false, true, obj.serv_id, obj.servCli_contrato, obj.servCli_contratonome);

                    for (int i = 0; i < obj.servCli_parceladoQtd; i++)
                    {
                        if (i > 0)
                        {
                            valorParcelas.cliNot_valor = parcelas;
                        }

                        valorParcelas.cliNot_parcela   = i + 1;
                        valorParcelas.cliNot_descricao = obj.servCli_descricao + " " + (i + 1) + " / " + obj.servCli_parceladoQtd;
                        valorParcelas.cliNot_id        = 0;
                        cliNota.Insert(valorParcelas);
                    }
                }
                else
                {
                    new ClienteNotaBLL().Insert(new ClienteNotaBE(obj.cli_id, obj.servCli_descricao, obj.servCli_valor, 1, false, true, obj.serv_id, obj.servCli_contrato, obj.servCli_contratonome));
                }
            }
            else
            {
                new ClienteNotaBLL().Insert(new ClienteNotaBE(obj.cli_id, obj.servCli_descricao, obj.servCli_valor, 1, false, true, obj.serv_id, obj.servCli_contrato, obj.servCli_contratonome));
            }
            return(true);
        }
        public virtual bool CalculaProporcionalMesAtual(ClienteServicosBE obj)
        {
            try
            {
                int     dias  = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
                decimal valor = (obj.servCli_valor / dias) * obj.servCli_qtdDias;
                valor = Decimal.Round(valor, 2);

                ClienteNotaBE notaAtual = new ClienteNotaBE(obj.cli_id, obj.servCli_descricao, valor, null, false, true, obj.serv_id, obj.servCli_contrato, obj.servCli_contratonome);
                var           ins       = new ClienteNotaBLL().Insert(notaAtual);
                return(true);
            }
            catch (Exception ex)
            {
                Common.TratarLogErro(ex);
                return(false);
            }
        }
        public ClienteServicosBE Insert(ClienteServicosBE obj, int conf_id)
        {
            var _serv = new ClienteServicosDao();

            obj.servCli_id = _serv.Insert(obj);
            obj            = _serv.SelectId <ClienteServicosBE>(new ClienteServicosBE {
                servCli_id = obj.servCli_id, log_ativo = true
            });
            var servico = new ServicosBLL().SelectId(new ServicosBE {
                serv_id = obj.serv_id, conf_id = conf_id
            });

            if (servico != null && servico.serv_parcelado == false)
            {
                this.CalcularProporcional(obj);
            }
            else
            {
                this.CalcularParcelas(obj);
            }
            return(obj);
        }
        /// <summary>
        /// Carrega a lsta de serviços agrupada por contrato
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public List <ClienteServicosContratoBE> SelectContratoServicos(ClienteServicosBE obj)
        {
            var servicos = new ClienteServicosDao().Select <ClienteServicosBE>(obj).ToList();

            if (servicos.Count == 0)
            {
                return(new List <ClienteServicosContratoBE>());
            }
            else
            {
                servicos = servicos.OrderBy(x => x.servCli_contrato).ToList();
                var retorno = new List <ClienteServicosContratoBE>();

                foreach (var item in servicos)
                {
                    if ((from x in retorno where x.Contrato.Equals(item.servCli_contrato) select x).Count() == 0)
                    {
                        var novocontrato = new ClienteServicosContratoBE {
                            Contrato = item.servCli_contrato, NomeContrato = item.servCli_contratonome, DataCriacao = item.servCli_data, ServicosContrato = new List <ClienteServicosBE>()
                        };
                        novocontrato.ServicosContrato.Add(item);
                        retorno.Add(novocontrato);
                    }
                    else
                    {
                        for (int i = 0; i < retorno.Count; i++)
                        {
                            if (retorno[i].Contrato.Equals(item.servCli_contrato))
                            {
                                retorno[i].ServicosContrato.Add(item);
                                break;
                            }
                        }
                    }
                }
                return(retorno);
            }
        }
        public virtual bool CalculaProporcionalMesAnterior(ClienteServicosBE obj)
        {
            try
            {
                int     mes   = DateTime.Now.Month == 1 ? 12: DateTime.Now.Month - 1;
                int     dias  = DateTime.Now.Month == 1 ? dias = DateTime.DaysInMonth((DateTime.Now.Year - 1), mes) : DateTime.DaysInMonth((DateTime.Now.Year), mes);
                decimal valor = (obj.servCli_valor / dias) * obj.servCli_qtdDias;
                valor = Decimal.Round(valor, 2);


                ClienteNotaBE notaAnterior = new ClienteNotaBE(obj.cli_id, obj.servCli_descricao + " Valor Proporional ao Mês " + Common.GetNameMonth(mes), valor, null, false, true, obj.serv_id, obj.servCli_contrato, obj.servCli_contratonome);
                ClienteNotaBE notaAtual    = new ClienteNotaBE(obj.cli_id, obj.servCli_descricao, obj.servCli_valor, null, false, true, obj.serv_id, obj.servCli_contrato, obj.servCli_contratonome);

                var ins  = new ClienteNotaBLL().Insert(notaAnterior);
                var ins2 = new ClienteNotaBLL().Insert(notaAtual);
                return(true);
            }
            catch (Exception ex)
            {
                Common.TratarLogErro(ex);
                return(false);
            }
        }
        public virtual bool CalcularProporcional(ClienteServicosBE obj)
        {
            bool result = false;

            switch (obj.servCli_cobrarPorpor)
            {
            case 1:
                result = this.CalculaSemProporcional(obj);
                break;

            case 2:
                result = this.CalculaProporcionalMesAnterior(obj);
                break;

            case 3:
                result = this.CalculaProporcionalMesAtual(obj);
                break;

            default:
                result = this.CalculaSemProporcional(obj);
                break;
            }
            return(result);
        }
 public bool Delete(ClienteServicosBE obj)
 {
     return(new ClienteServicosDao().Delete(new { servCli_id = obj.servCli_id, cli_id = obj.cli_id }).Value);
 }
 public bool Update(ClienteServicosBE obj)
 {
     return(new ClienteServicosDao().Update(obj).Value);
 }
 public ClienteServicosBE SelectId(ClienteServicosBE obj)
 {
     return(new ClienteServicosDao().SelectId <ClienteServicosBE>(obj));
 }
 public List <ClienteServicosBE> Select(ClienteServicosBE obj)
 {
     return(new ClienteServicosDao().Select <ClienteServicosBE>(obj).ToList());
 }