Exemplo n.º 1
0
 /// <summary>
 /// Assign new prices to current doclin
 /// </summary>
 /// <param name="artPrecos">List or artPrecos previously filtered by NumPreco</param>
 private void RecalculatePrice(List <AP> artPrecos)
 {
     Preco = artPrecos.Where(x => x.Tam == -1 && x.Cor == -1).FirstOrDefault()?.Preco;
     if (TamsCor != null && TamsCor.Any())
     {
         foreach (IVgDocLinTamCor tamCor in TamsCor)
         {
             tamCor.Preco = artPrecos.Where(x => x.Tam == tamCor.Tam && x.Cor == tamCor.Cor).FirstOrDefault()?.Preco;
         }
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Recalcula valores de linha
        /// </summary>
        /// <param name="tipoDoc">TipoDoc relativo ao documento a ser processado</param>
        public void Recalculate(IVgTipoDoc tipoDoc, List <AP> artPrecos = null)
        {
            if (artPrecos != null && artPrecos.Any())
            {
                RecalculatePrice(artPrecos);
            }

            if (TamsCor != null && TamsCor.Any())
            {
                // assign artigo from lin to all it's tam cor
                TamsCor.Select(c => { c.Artigo = Artigo; return(c); }).ToList();

                Quantidade = TamsCor.Sum(x => x.Quantidade);
                Preco      = TamsCor.Average(x => (x.Preco == null ? 0 : x.Preco)); //* x.Quantidade
                if (Quantidade > 0)
                {
                    Peso = TamsCor.Sum(x => (x.Peso == null ? 0 : x.Peso) * x.Quantidade) / Quantidade;
                }
                else
                {
                    Peso = 0;
                }
            }

            // calculo de valor bruto para não estar sempre a calcular o mesmo
            double?valBruto = Quantidade * Preco;

            ValMercadoria = valBruto;

            if (tipoDoc.TemIVA == true)
            {
                ValMercadoria = valBruto / (1 + (TaxIVA / 100));
            }

            ValDesconto = getValDesconto(ValMercadoria, Desconto);
            ValSujeito  = ValMercadoria - ValDesconto;

            // Calculo do valor do IVA
            ValIVA = (TaxIVA / 100) * ValSujeito;

            // arredondar a casas decimais
            ValMercadoria = Math.Round((double)ValMercadoria, 2);
            ValDesconto   = Math.Round((double)ValDesconto, 2);
            ValSujeito    = Math.Round((double)ValSujeito, 2);
            ValIVA        = Math.Round((double)ValIVA, 2);

            // calculo de valor total
            ValTotal = ValSujeito + ValIVA;
            ValTotal = Math.Round((double)ValTotal, 2);
        }