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; } }
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; } }