Ejemplo n.º 1
0
        public virtual void AdicionarPedido_Otica(Pedido_Otica Pedido_Otica)
        {
            try
            {
                #region Parcela Pedido

                decimal?totalValor = 0;
                totalValor = Pedido_Otica.itempedido_otica.Sum(p => p.valor_total);

                Pedido_Otica_ParcelasBLL popBLL = new Pedido_Otica_ParcelasBLL();

                if (totalValor > 0)
                {
                    Pedido_Otica.pedido_otica_parcelas = popBLL.GerarParcelas(Pedido_Otica.condicao_pagamento, totalValor, DateTime.Now);
                }
                #endregion


                Pedido_Otica.inclusao         = DateTime.Now;
                Pedido_Otica.usuario_inclusao = UsuarioLogado.nome;
                Pedido_Otica.codigo           = Utils.Sequence.GetNextVal("sq_pedido_otica_sequence");

                if (UsuarioLogado.Id_empresa != null)
                {
                    Pedido_Otica.Id_empresa = UsuarioLogado.Id_empresa;
                }


                if (UsuarioLogado.Id_filial != null)
                {
                    Pedido_Otica.Id_filial = UsuarioLogado.Id_filial;
                }


                _Pedido_OticaRepositorio.Adicionar(Pedido_Otica);
                _Pedido_OticaRepositorio.Commit();
                var layoutLaboratorio = Convert.ToBoolean(Parametro.GetParametro("layoutLaboratorio"));
                if (layoutLaboratorio)
                {
                    GravarArquivo(Pedido_Otica);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 2
0
        public virtual void AlterarPedido_Otica(Pedido_Otica Pedido_Otica)
        {
            #region ItemPedido
            try
            {
                ItemPedido_OticaBLL itemPedido_OticaBLL = new ItemPedido_OticaBLL();

                //lista de itens do banco
                ICollection <ItemPedido_Otica> itemPedido_OticaDB   = itemPedido_OticaBLL.getItemPedido_Otica(p => p.Id_pedido_otica == Pedido_Otica.Id);
                ICollection <ItemPedido_Otica> itemPedido_OticaTela = Pedido_Otica.itempedido_otica;

                foreach (ItemPedido_Otica item in itemPedido_OticaTela)
                {
                    //Marca todos com ID = 0 como adicionados.
                    if (item.Id == 0)
                    {
                        item.state = EstadoEntidade.Added;
                    }
                    else
                    {
                        item.state = EstadoEntidade.Modified;
                    }
                }

                //marcar todas como alteradas e verifica se ele existe na lista da tela.
                foreach (ItemPedido_Otica item in itemPedido_OticaDB)
                {
                    if (itemPedido_OticaTela.FirstOrDefault(p => p.Id == item.Id) == null)
                    {
                        //clonar o item para marca-lo para exclusão
                        ItemPedido_Otica clone = new ItemPedido_Otica()
                        {
                            Id = item.Id,
                            Id_pedido_otica     = item.Id_pedido_otica,
                            Id_produto          = item.Id_produto,
                            quantidade          = item.quantidade,
                            valor_unitario      = item.valor_unitario,
                            percentual_desconto = item.percentual_desconto,
                            valor_desconto      = item.valor_desconto,
                            valor_total         = item.valor_total,
                            unidade             = item.unidade
                        };

                        clone.state = EstadoEntidade.Deleted;

                        itemPedido_OticaTela.Add(clone);
                    }
                }
                #endregion

                #region Parcela Pedido
                List <Pedido_Otica> poList = getPedido_Otica(p => p.Id == Pedido_Otica.Id, true);

                Pedido_Otica pedBanco = null;

                if (poList.Count() > 0)
                {
                    pedBanco = poList.First();
                }

                decimal?totalValor = 0;
                totalValor = Pedido_Otica.itempedido_otica.Where(c => c.state != EstadoEntidade.Deleted).Sum(p => p.valor_total);

                Pedido_Otica_ParcelasBLL popBLL = new Pedido_Otica_ParcelasBLL();

                bool RemoveParcela = false;

                if (pedBanco != null)
                {
                    RemoveParcela = pedBanco.condicao_pagamento != Pedido_Otica.condicao_pagamento;
                    decimal totalBanco = 0;
                    totalBanco = pedBanco.itempedido_otica.Sum(p => p.valor_total);
                    if (totalValor != totalBanco)
                    {
                        RemoveParcela = true;
                    }
                }

                ICollection <Pedido_Otica_Parcelas> parcelasList = new List <Pedido_Otica_Parcelas>();
                if (RemoveParcela)
                {
                    parcelasList = Pedido_Otica.pedido_otica_parcelas;

                    if (parcelasList.Count == 0)
                    {
                        parcelasList = popBLL.getPedido_Otica_Parcelas(p => p.Id_pedido_otica == Pedido_Otica.Id, true);
                    }

                    if (totalValor > 0)
                    {
                        Pedido_Otica.pedido_otica_parcelas = popBLL.GerarParcelas(Pedido_Otica.condicao_pagamento, totalValor, DateTime.Now);
                    }
                }
                //else if (!RemoveParcela)
                //{
                //    parcelasList = popBLL.getPedido_Otica_Parcelas(p => p.Id_pedido_otica == Pedido_Otica.Id, true);
                //}

                foreach (Pedido_Otica_Parcelas item in parcelasList)
                {
                    item.state = EstadoEntidade.Deleted;
                    Pedido_Otica.pedido_otica_parcelas.Add(item);
                }

                #endregion

                Pedido_Otica.alteracao         = DateTime.Now;
                Pedido_Otica.usuario_alteracao = UsuarioLogado.nome;
                _Pedido_OticaRepositorio.Atualizar(Pedido_Otica);
                _Pedido_OticaRepositorio.Commit();

                var layoutLaboratorio = Convert.ToBoolean(Parametro.GetParametro("layoutLaboratorio"));
                if (layoutLaboratorio)
                {
                    GravarArquivo(Pedido_Otica);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }