public virtual void Alterar(ItemDeVenda item) { this.Material = item.Material; this.Quantidade = item.Quantidade; this.ListaDePreco = item.ListaPreco; this.DescontoManual = item.DescontoManual; this.MotivoDeRecusa = item.MotivoDeRecusa; }
public void Atualizar(PedidoVenda pedidoVenda, PedidoVendaSalvarVm pedidoAlterado) { IEnumerable<int> idDosItensParaRemover = pedidoVenda.Itens .Where(itemAtual => pedidoAlterado.Itens.All(itemAlterado => itemAlterado.IdDoItem != itemAtual.Id)) .Select(itemAtual => itemAtual.Id).ToList(); foreach (var id in idDosItensParaRemover) { PedidoVendaLinha itemParaRemover = pedidoVenda.Itens.Single(item => item.Id == id); pedidoVenda.Itens.Remove(itemParaRemover); } int[] idDosMateriais = pedidoAlterado.Itens.Select(x => x.IdMaterial).Distinct().ToArray(); IList<Material> materiaisDosItens = _materiais.BuscarLista(idDosMateriais).List(); string[] codigoDasListasDePreco = pedidoAlterado.Itens.Select(item => item.CodigoDaListaDePreco).Distinct().ToArray(); IList<ListaPreco> listasDePreco = _listasPreco.FiltraPorListaDeCodigos(codigoDasListasDePreco).List(); string[] codigoDosMotivosDeRecusa = pedidoAlterado.Itens.Where(i => !string.IsNullOrEmpty(i.CodigoDoMotivoDeRecusa)) .Select(i => i.CodigoDoMotivoDeRecusa).Distinct().ToArray(); IList<MotivoDeRecusa> motivosDeRecusa = _motivosDeRecusa.BuscarLista(codigoDosMotivosDeRecusa).List(); var itensParaAlterar = (from itemAtual in pedidoVenda.Itens join itemAlterado in pedidoAlterado.Itens on itemAtual.Id equals itemAlterado.IdDoItem select new { ItemAtual = itemAtual, ItemAlterado = itemAlterado }).ToList(); for (int i = 0; i < itensParaAlterar.Count; i++) { var itemParaAlterar = itensParaAlterar[i]; PedidoVendaSalvarItemVm itemAlterado = itemParaAlterar.ItemAlterado; Material material = materiaisDosItens.Single(m => m.pro_id_material == itemAlterado.IdMaterial); ListaPreco listaPreco = listasDePreco.Single(l => l.Codigo == itemAlterado.CodigoDaListaDePreco); MotivoDeRecusa motivoDeRecusa = string.IsNullOrEmpty(itemAlterado.CodigoDoMotivoDeRecusa) ? null : motivosDeRecusa.Single(m => m.Codigo == itemAlterado.CodigoDoMotivoDeRecusa); var itemDeVenda = new ItemDeVenda { Material = material, Quantidade = itemAlterado.Quantidade, ListaPreco = listaPreco, DescontoManual = itemAlterado.Desconto, MotivoDeRecusa = motivoDeRecusa }; itemParaAlterar.ItemAtual.Alterar(itemDeVenda); } IEnumerable<PedidoVendaSalvarItemVm> itensParaAdicionar = pedidoAlterado.Itens.Where( itemAlterado => itemAlterado.IdDoItem == 0); foreach (var itemParaAdicionar in itensParaAdicionar) { Material material = materiaisDosItens.Single(m => m.pro_id_material == itemParaAdicionar.IdMaterial); ListaPreco listaDePreco = listasDePreco.Single(l => l.Codigo == itemParaAdicionar.CodigoDaListaDePreco); MotivoDeRecusa motivoDeRecusa = string.IsNullOrEmpty(itemParaAdicionar.CodigoDoMotivoDeRecusa) ? null : motivosDeRecusa.Single(m => m.Codigo == itemParaAdicionar.CodigoDoMotivoDeRecusa); var linhasPedido = new PedidoVendaLinha(itemParaAdicionar.Numero, material,itemParaAdicionar.Quantidade,listaDePreco,itemParaAdicionar.Desconto, motivoDeRecusa); pedidoVenda.AdicionarItem(linhasPedido); } }