Пример #1
0
        public void TestConstructor_Bool()
        {
            var expected = true;
            var instance = new ChangeDetail(expected);

            Assert.AreEqual(expected, instance.HasChanges());

            expected = false;
            instance = new ChangeDetail(expected);
            Assert.AreEqual(expected, instance.HasChanges());
        }
Пример #2
0
        public void TestConstructor_ComparisonResult_AreEqual()
        {
            using (ShimsContext.Create())
            {
                var result = new KellermanSoftware.CompareNetObjects.Fakes.ShimComparisonResult
                {
                    AreEqualGet = () => true
                };

                var instance = new ChangeDetail(result);
                Assert.IsFalse(instance.HasChanges());
            }
        }
 private static string FormatChangeDetailOutputValue(ChangeDetail a, bool noVersion)
 {
     return noVersion ? ChangeDetailNoVersion(a) : ChangeDetailWithVersion(a);
 }
 private static string ChangeDetailWithVersion(ChangeDetail changeDetail)
 {
     return string.Format("{0} - {1}", changeDetail.Version, changeDetail.Comment.TrimEnd(Environment.NewLine.ToCharArray()));
 }
Пример #5
0
 private static string ChangeDetailWithVersion(ChangeDetail changeDetail)
 {
     return(string.Format("{0} - {1}", changeDetail.Version, changeDetail.Comment.TrimEnd(Environment.NewLine.ToCharArray())));
 }
Пример #6
0
 private static string FormatChangeDetailOutputValue(ChangeDetail a, bool noVersion)
 {
     return(noVersion ? ChangeDetailNoVersion(a) : ChangeDetailWithVersion(a));
 }
Пример #7
0
        public string SaveSale(decimal total, decimal PaidAmount)
        {
            try
            {
                if (total == 0)
                {
                    return("El total no puede ser 0.");
                }

                if (total > PaidAmount)
                {
                    return("Total no puede ser mayor que monto pagado.");
                }

                if (total < 0 || PaidAmount < 0)
                {
                    return("No se aceptan valores negativos.");
                }

                decimal balance   = PaidAmount - total;
                var     Banknotes = Context.Banknotes.Where(b => b.Value <= balance).OrderByDescending(x => x.Value).ToList();

                int i      = 0;
                var result = new List <ChangeDetail>();

                while (balance > 0 && i < Banknotes.Count())
                {
                    if (balance >= Banknotes.ElementAt(i).Value)
                    {
                        var qty     = (int)balance / (int)Banknotes.ElementAt(i).Value;
                        var newItem = new ChangeDetail();
                        newItem.Qty         = qty;
                        newItem.Value       = Banknotes.ElementAt(i).Value;
                        newItem.IsCoin      = false;
                        newItem.DetailTotal = newItem.Qty * newItem.Value;
                        result.Add(newItem);

                        balance -= newItem.DetailTotal;
                    }
                    i++;
                }

                if (balance > 0)
                {
                    var monedas = Context.Coins.Where(c => c.Value <= balance).OrderByDescending(x => x.Value).ToList();
                    i = 0;

                    while (balance > 0)
                    {
                        if (balance >= monedas.ElementAt(i).Value)
                        {
                            var qty     = balance / monedas.ElementAt(i).Value;
                            var newItem = new ChangeDetail();
                            newItem.Qty         = (int)qty;
                            newItem.Value       = monedas.ElementAt(i).Value;
                            newItem.IsCoin      = true;
                            newItem.DetailTotal = newItem.Qty * newItem.Value;
                            result.Add(newItem);

                            balance -= newItem.DetailTotal;
                        }
                        i++;
                    }
                }

                var newSale = new Sale();
                newSale.Total         = total;
                newSale.PaidAmount    = PaidAmount;
                newSale.Change        = PaidAmount - total;
                newSale.ChangeDetails = result;

                Context.Sale.Add(newSale);
                Context.SaveChanges();

                var msg = "Valor do Troco: R$ " + newSale.Change.ToString("0.00") + ".\nEntregar:\n";
                result.ForEach(i =>
                {
                    msg += i.Qty.ToString();
                    if (i.IsCoin)
                    {
                        if (i.Qty > 1)
                        {
                            msg += " moedas de R$" + i.Value.ToString("0.00") + ".\n";
                        }
                        else
                        {
                            msg += " moeda de R$" + i.Value.ToString("0.00") + ".\n";
                        }
                    }
                    else
                    {
                        if (i.Qty > 1)
                        {
                            msg += " notas de R$" + i.Value.ToString("0.00") + ".\n";
                        }
                        else
                        {
                            msg += " nota de R$" + i.Value.ToString("0.00") + ".\n";
                        }
                    }
                });

                return(msg);
            }
            catch (Exception ex)
            {
                // SaveLog(ex.Message);
                return(null);
            }
        }