public FiscalReceipt(RSPackageInfo RSPackage) { this.RSPackage = RSPackage; this.Articles = new List<FiscalArticle>(); this.Payments = new FiscalPayments(this); PaymentsReceived = false; WasCalculated = false; }
/// <summary>Клонировать фискальный чек</summary> public FiscalReceipt Clone(RSPackageInfo rspackage) { BinaryFormatter BF = new BinaryFormatter(); MemoryStream MS = new MemoryStream(); BF.Serialize(MS, this); MS.Seek(0, SeekOrigin.Begin); FiscalReceipt Result = (FiscalReceipt)BF.Deserialize(MS); MS.Close(); Result.RSPackage = rspackage; Result.Payments = this.Payments.Clone(Result); Result.Articles.Clear(); foreach (FiscalArticle Article in this.Articles) Result.Articles.Add(Article.Clone(Result)); return Result; }
/// <summary>Result = A-B</summary> public static FiscalReceipt Substract(RSPackageInfo RSP, FiscalReceipt A, FiscalReceipt B) { var Result = A.Clone(RSP); Result.AmountWithoutDiscount.Value = A.Amount - B.Amount; Result.DiscountForAmount.Value = 0; Result.Payments = FiscalPayments.Substract(Result, A.Payments, B.Payments); for (int i = 0; i < A.Articles.Count; i++) for (int j = 0; j < B.Articles.Count; j++) if (A.Articles[i].IsAnalog(B.Articles[j])) Result.Articles[i] = FiscalArticle.Substract(Result, A.Articles[i], B.Articles[j]); // это пройдёт, т.к. Result - клон A return Result; //throw new Exception("FiscalReceipt Substract is not implemented now"); /* FiscalReceipt Result = Param2.Clone(), Param = Param1.Clone(); /*Result.Amount = Result.AmountDiscount; Result.Discount = 0; Param.Amount = Param.AmountDiscount; Param.Discount = 0;*/ /*Result.AmountWithoutDiscount -= Param.AmountWithoutDiscount; //Result.Discount = Param1.Discount; Result.Payments.ChangeAmount(Result.Payments.Amount - Param.Payments.Amount); foreach (FiscalArticle Article1 in Param.Articles) foreach (FiscalArticle Article2 in Result.Articles) if (Article1.GoodsCode == Article2.GoodsCode) { Article2.Quantity -= Article1.Quantity; Article2.AmountWithoutDiscount -= Article1.AmountWithoutDiscount; Article2.DiscountForAmount = Article1.DiscountForAmount; //Article2.Bonuses -= Article1.Bonuses; // Rounded потому что из-за Казахстана Article2.Bonuses = Article2.BonusesRounded - Article1.BonusesRounded; } return Result;*/ }