コード例 #1
0
        public void SplitPayment(SplitPaymentRequest request)
        {
            var amount  = request.Amount;
            var id      = request.Id.ToGuid();
            var payment = ObjectRepository.Set <PaymentModel>().First(v => v.Id == id);

            var newKind = amount < 0 ? PaymentKind.Expense : PaymentKind.Income;

            if (payment.Kind != PaymentKind.Expense && payment.Kind != PaymentKind.Income)
            {
                newKind = payment.Kind;

                payment.Amount -= amount;
            }
            else
            {
                amount = Math.Abs(amount);

                if (payment.Kind == newKind.GetOpposite())
                {
                    amount = -amount;
                }

                payment.Amount -= amount;

                amount = Math.Abs(amount);
            }

            if (Math.Abs(amount) > 0.01)
            {
                if (payment.Amount < 0 && payment.Kind != payment.Kind.GetOpposite())
                {
                    payment.Kind   = payment.Kind.GetOpposite();
                    payment.Amount = Math.Abs(payment.Amount);
                }

                var newPayment = new PaymentModel(payment.When, payment.What, amount, newKind, payment.Ccy, null, payment.Column);
                ObjectRepository.Add(newPayment);
                newPayment.UserEdited = true;
            }
            SendUpdate(new PaymentsStream
            {
                Snapshot = new PaymentsList
                {
                    ShowCategorized = ShowCategorized,
                    Payments        = { _collection.Select(v => v.ToMonthSummary()) }
                }
            });
        }
コード例 #2
0
 public override Task <Empty> SplitPayment(SplitPaymentRequest request, ServerCallContext context)
 {
     _provider.GetService <PaymentsViewModel>(_accessor).SplitPayment(request);
     return(Empty);
 }