commit f3ac2e2f1eca2f8291d824bc466cbbfecf30d6c3 Author: serty Date: Tue Jul 22 22:39:08 2025 +0000 Добавить OrderPaymentReceipt.cs Квитанция об оплате без процентов скидок-надбавок. Только название и сумма diff --git a/OrderPaymentReceipt.cs b/OrderPaymentReceipt.cs new file mode 100644 index 0000000..1c74486 --- /dev/null +++ b/OrderPaymentReceipt.cs @@ -0,0 +1,241 @@ +@using System +@using System.Collections.Generic +@using System.Linq +@using Resto.Front.PrintTemplates.Cheques.Razor +@using Resto.Front.PrintTemplates.Cheques.Razor.TemplateModels + +@inherits TemplateBase + +@{ + var chequeTask = Model.ChequeTask; + var order = Model.Order; + + var sum = chequeTask.Sales.Sum(sale => sale.GetCost() - sale.DiscountSum + sale.IncreaseSum).RoundMoney(); +} + + + @if (!Model.ChequeInfo.IsForReport) + { + + + @Model.CommonInfo.CafeSetup.BillHeader + + + } + @Raw(string.Join(Environment.NewLine, Model.Extensions.BeforeCheque)) + @if (!Model.ChequeInfo.IsForReport) + { + + + + } +
+ @(chequeTask.IsStorno ? Resources.StornoCheque : chequeTask.IsBuy ? Resources.OrderBuyReceipt : Resources.OrderPaymentReceipt) +
+ + + + @string.Format(Resources.BillHeaderWaiterPattern, order.Waiter.GetNameOrEmpty()) + + + + + Guest: @(order.Delivery != null ? order.Delivery.PersonCount : order.Guests.Count()) + + + @foreach (var clientInfo in + from discountItem in order.DiscountItems + where discountItem.CardInfo != null + select discountItem.CardInfo into cardInfo + select string.IsNullOrWhiteSpace(cardInfo.MaskedCard) ? cardInfo.Owner : string.Format("{0} ({1})", cardInfo.Owner, cardInfo.MaskedCard) into clientInfo + where !string.IsNullOrWhiteSpace(clientInfo) + select clientInfo) + { + + @string.Format(Resources.ClientFormat, clientInfo) + + } + @Sales(chequeTask) + @if (chequeTask.ResultSum != sum) + { + + } + @if (chequeTask.PrintNds) + { + @Vats(chequeTask) + } + + @Payments(chequeTask) + @if (!Model.ChequeInfo.IsForReport) + { +
+ @string.Format(Resources.AllSumsInFormat, Model.CommonInfo.CafeSetup.CurrencyName) +
+ +
+ + @Model.CommonInfo.CafeSetup.BillFooter + +
+ } + @if (!chequeTask.IsStorno) + { + + +
+ @Resources.Signature +
+ } + @Raw(string.Join(Environment.NewLine, Model.Extensions.AfterCheque)) +
+ +@helper Sales(IChequeTask chequeTask) +{ + + if (chequeTask.Sales.IsEmpty()) + { + @Resources.ZeroChequeBody + + } + else if (Model.IsFullCheque) + { + + + + + + + + @if (!Model.ChequeInfo.IsForReport) + { + @Resources.NameTitle + @Resources.AmountWithPriceTitle + @Resources.ProductSum + + } + @foreach (var sale in chequeTask.Sales) + { + @sale.Name + @string.Format("{0}x{1}", FormatAmount(sale.Amount), FormatMoneyMin(sale.Price)) + @FormatMoney(sale.GetCost()) + } + +
+ + + var discountItems = chequeTask.Sales + .Where(s => s.DiscountSum != 0m) + .GroupBy(s => s.DiscountPercent) + .Select(g => new { + Name = Resources.Discount, + Percent = g.Key, + Sum = g.Sum(s => s.DiscountSum) + }); + + var increaseItems = chequeTask.Sales + .Where(s => s.IncreaseSum != 0m) + .GroupBy(s => s.IncreasePercent) + .Select(g => new { + Name = Resources.Increase, + Percent = g.Key, + Sum = g.Sum(s => s.IncreaseSum) + }); + + if (discountItems.Any() || increaseItems.Any()) + { + + foreach (var item in discountItems.Concat(increaseItems)) + { + + } + + + } + } +} + +@helper Vats(IChequeTask chequeTask) +{ + var vats = chequeTask.Sales + .GroupBy(sale => sale.NdsPercent) + .Where(group => group.Key > 0m) + .Select(group => Tuple.Create(group.Key, group.Sum(sale => (sale.ResultSum - sale.ResultSum / (1m + @group.Key / 100m)).RoundMoney()))) + .ToList(); + + var vatSum = vats.Sum(tuple => tuple.Item2); + + if (vatSum != 0) + { + + foreach (var percentAndSum in vats) + { + + } + if (vats.Count > 1) + { + + } + } +} + +@helper Payments(IChequeTask chequeTask) +{ + + foreach (var prepayItem in chequeTask.Prepayments) + { + + } + + if (chequeTask.CashPayment != 0m || (chequeTask.CardPayments.IsEmpty() && chequeTask.AdditionalPayments.IsEmpty())) + { + @Payment(Resources.Cash, chequeTask.CashPayment) + } + foreach (var cardPaymentItem in chequeTask.CardPayments) + { + @Payment(string.Format(Resources.CardPattern, cardPaymentItem.PaymentTypeName), cardPaymentItem.Sum, cardPaymentItem.Comment) + } + foreach (var additionalPaymentItem in chequeTask.AdditionalPayments) + { + @Payment(additionalPaymentItem.PaymentTypeName, additionalPaymentItem.Sum, additionalPaymentItem.Comment) + } + + var orderPaymentsSumWithoutPrepay = chequeTask.CashPayment + chequeTask.CardPayments.Sum(p => p.Sum) + chequeTask.AdditionalPayments.Sum(p => p.Sum); + var orderPaymentsSumWithPrepay = orderPaymentsSumWithoutPrepay + SetSign(chequeTask.Prepayments.Sum(p => p.Sum)); + var changeSum = Math.Max(orderPaymentsSumWithPrepay - chequeTask.ResultSum, 0m); + + var hasMultiplePayments = ((chequeTask.CashPayment != 0m ? 1 : 0) + + chequeTask.CardPayments.Count() + + chequeTask.AdditionalPayments.Count() + + chequeTask.Prepayments.Count()) > 1; + + if (hasMultiplePayments) + { + + } + if (changeSum > 0m) + { + + } +} + +@helper Payment(string name, decimal sum, string comment = null) +{ + + if (!string.IsNullOrWhiteSpace(comment)) + { + + @comment + + } +} + +@functions +{ + private decimal SetSign(decimal sum) + { + return Model.ChequeTask.IsStorno ? -sum : sum; + } +} \ No newline at end of file