internal static FiscalArticle Substract(FiscalReceipt FR, FiscalArticle A, FiscalArticle B)
 {
     var Result = A.Clone(FR);
       Result.Quantity.Value = A.Quantity.Value - B.Quantity.Value;
       Result.PriceWithoutDiscount.Value = A.Price;
       Result.DiscountForPriceCurrent.Value = 0;
       Result.AmountWithoutDiscount.Value = A.Amount - B.Amount;
       Result.DiscountForAmount.Value = 0;
       Result.Bonuses.Value = A.Bonuses.Value - B.Bonuses.Value;
       return Result;
 }
 /// <summary>ищет среди позиций чека, позицию с GoodsCode и PaymentType совпадающими с переданной и заменяет её в исходной коллекции на клон переданной</summary>
 public void ReplaceArticle(FiscalArticle Article)
 {
     for (int i = 0; i < Articles.Count; i++)
     if (Articles[i].GoodsCode == Article.GoodsCode && Articles[i].PaymentType.Value == Article.PaymentType.Value)
     {
       Articles[i] = Article.Clone(Articles[i].Fiscal);
       return;
     }
       throw new Exception(string.Format("Could not find Article {0} with payment type {1}", Article.GoodsCode, Article.PaymentType.Value));
       //return false;
 }