private void ReceivePayment(EntryExpenses entry) { Account acc = Context.Accounts.FirstOrDefault(a => a.Id == entry.PaymentMethod.Id); acc.Balance += entry.Value; Context.SaveChanges(); }
internal void PayCreditCard(int idAcc, int idCredit, double valueToPay, double valueParcel, DateTime DatePaid, DateTime dateToPay) { CreditCard card = Context.CreditCards.Find(idCredit); EntryExpenses entry = new EntryExpenses { Description = $"{GenerateCaptionHolder(card.Holder)} fatura - {card.Issuer}", Value = valueToPay, EntryType = EntryType.ExpenseCreditCard, Date = DatePaid, Category = Context.Categories.Find(6), SubCategory = Context.SubCategories.Find(14), PaymentMethod = Context.PaymentMethod.Find(idAcc), Status = true }; PerformTransaction(entry); Save(entry); if (valueParcel > 0) { entry = new EntryExpenses { Description = $"{GenerateCaptionHolder(card.Holder)} fatura parcial - {card.Issuer}", Value = valueParcel, EntryType = EntryType.ExpenseCreditCard, Date = dateToPay.AddMonths(1), Category = Context.Categories.Find(6), SubCategory = Context.SubCategories.Find(14), PaymentMethod = card }; Save(entry); } }
private void RulesForFeactures(Report report, EntryExpenses entry) { if (entry.EntryType == EntryType.Expense || entry.EntryType == EntryType.ExpenseCreditCard) { report.EntryExpenses.Add(entry); report.TotalExpenses += entry.Status ? entry.Value : 0.00; } if (entry.EntryType == EntryType.Revenue) { report.TotalRevenue = entry.Value + report.TotalRevenue; report.EntryRevenue.Add(entry); } if (entry.EntryType == EntryType.Transfer) { report.EntryTransfer.Add(entry); } if (entry.EntryType == EntryType.AjustBalance) { report.EntryAjustBalance.Add(entry); } if (!report.Categories.Any(x => x.Id == entry.Category.Id) && !string.IsNullOrEmpty(entry.Category.Description)) { report.Categories.Add(entry.Category); } if (!report.SubCategories.Any(x => entry.SubCategory.Id == x.Id) && !string.IsNullOrEmpty(entry.SubCategory.Description)) { report.SubCategories.Add(entry.SubCategory); } }
private void SetEntryExpenses() { if (Model == null) { Model = new EntryExpenses( txtDescription.Text, Convert.ToDouble(nupValue.Value), dtDate.Value, cbPaymentMethod.SelectedValue is Account ? true : false, ckRepeat.Checked, cbCategoria.SelectedValue as Category, cbSubCategoria.SelectedValue as SubCategories, paymentMethodController.Find(((PaymentMethod)cbPaymentMethod.SelectedValue).Id), DateTime.Today, this.entryType); } else { Model.Value = Convert.ToDouble(this.nupValue.Value); Model.PaymentMethod = cbPaymentMethod.SelectedValue as PaymentMethod; Model.Category.Description = cbCategoria.Text; Model.Category.SubCategories.Add(cbSubCategoria.SelectedValue as SubCategories); Model.Status = cbPaymentMethod.SelectedValue is Account ? true : false; Model.Repeat = ckRepeat.Checked; Model.Date = dtDate.Value; Model.Description = txtDescription.Text; Model.EntryType = this.entryType; } }
public void Save(EntryExpenses entry) { EntryExpenses ent = entry.Id != 0 ? Context.Expenses.FirstOrDefault(e => e.Id == entry.Id) : null; if (ent == null) { Context.Expenses.Add(entry); } Context.SaveChanges(); }
private void btnEdit_Click(object sender, EventArgs e) { EntryExpenses editEntry = (EntryExpenses)dtvRevenue.SelectedRows[0].DataBoundItem; FrmEntryExpenses form = new FrmEntryExpenses(editEntry, ctr.Context); if (form.ShowDialog() == DialogResult.OK) { dtvRevenue.Rows.Clear(); dtvRevenue.DataSource = LoadEntriesTypes(); } }
internal void SplitAccount(int value, EntryExpenses model) { PerformTransaction(model); for (int i = 1; i < value; i++) { model.Date = model.Date.AddMonths(1); model.CaptionRepeat = $"({i+1}/{value})"; PerformTransaction(model); Save(model.Clone()); } }
private void btnDelete_Click(object sender, EventArgs e) { if (dtvRevenue.CurrentRow != null) { if (MessageBox.Show("Tem certeza que deseja apagar este item ?", "", MessageBoxButtons.YesNo) == DialogResult.Yes) { EntryExpenses deleteEntry = (EntryExpenses)dtvRevenue.SelectedRows[0].DataBoundItem; if (deleteEntry.PaymentMethod is Account || (deleteEntry.PaymentMethod is CreditCard && deleteEntry.Status == false)) { deleteEntry.Value *= (-1); ctr.PerformTransaction(deleteEntry); } ctr.Remove(deleteEntry); dtvRevenue.DataSource = LoadEntriesTypes(); } } }
internal bool PerformTransaction(EntryExpenses entry) { if (entry.EntryType == EntryType.Revenue) { if (entry.PaymentMethod is Account) { ReceivePayment(entry); return(true); } else { return(false); } } else if (entry.EntryType == EntryType.Expense || entry.EntryType == EntryType.ExpenseCreditCard) { return(MakePayment(entry) ? true : false); } return(false); }
internal bool AdjustBalance(double value, int id) { Account account = Context.Accounts.First(acc => acc.Id == id); EntryExpenses entry = new EntryExpenses() { Description = "Ajuste de Saldo", Value = value > account.Balance ? value - account.Balance : account.Balance - value, Date = DateTime.Now, EntryType = value > account.Balance ? EntryType.Revenue : EntryType.Expense, Category = Context.Categories.Find(9), PaymentMethod = account, Status = true }; if (-1 * account.Limit < value) { account.Balance = value; this.Save(entry); return(true); } return(false); }
private bool MakePayment(EntryExpenses entry) { Account acc; CreditCard card; if (entry.PaymentMethod is Account) { acc = Context.Accounts.First(a => a.Id == entry.PaymentMethod.Id); if ((acc.Balance - entry.Value) > (-1) * (acc.Limit)) { acc.Balance += -entry.Value; Context.SaveChanges(); return(true); } else { return(false); } } else { card = entry.PaymentMethod as CreditCard; //Se data de fechamento menor que data de pagamento da conta data de pagamento vai para o mês que vem. int day = Convert.ToInt32(card.DueDate); int month = Convert.ToInt32(card.ClosingDate) < entry.Date.Day ? entry.Date.AddMonths(1).Month : entry.Date.Month; int year = Convert.ToInt32(card.ClosingDate) < entry.Date.Day ? entry.Date.AddMonths(2).Year : entry.Date.AddMonths(1).Year; entry.PaymentDate = DateTime.Parse($"{day}-{month}-{year}"); if (card.Amount > (-1) * card.Limit) { card.Amount += -entry.Value; Context.SaveChanges(); return(true); } else { return(false); } } }
internal bool PerformTransfer(double value, int bankOrigin, int BankDestination, DateTime date) { Account inAcc = Context.Accounts.FirstOrDefault(c => c.Id == BankDestination); Account outAcc = Context.Accounts.FirstOrDefault(c => c.Id == bankOrigin); if (outAcc.Limit * -1 > (outAcc.Balance - value)) { return(false); } outAcc.Balance += -value; inAcc.Balance += value; EntryExpenses inEntry = new EntryExpenses() { Description = $"Recebido de {GenerateCaptionHolder(outAcc.Holder)} - {outAcc.Bank}", Value = value, Date = date, PaymentMethod = inAcc, Category = Context.Categories.Find(10), EntryType = EntryType.Transfer, Status = true }; EntryExpenses outEntry = new EntryExpenses() { Description = $"Enviado para {GenerateCaptionHolder(inAcc.Holder)} - {inAcc.Bank}", Value = value, Date = date, Category = Context.Categories.Find(10), PaymentMethod = outAcc, EntryType = EntryType.Transfer, Status = true }; Save(inEntry); Save(outEntry); return(true); }
private void btnSave_Click(object sender, EventArgs e) { var valueToPay = nupValue.Visible ? Convert.ToDouble(nupValue.Value) : Convert.ToDouble(lbAmount.Text); var valueParcel = Convert.ToDouble(lbInstallment.Text.Replace("R$ ", "")); int day = Convert.ToInt32(report.CreditCards[0].DueDate); int month = Convert.ToInt32(report.CreditCards[0].ClosingDate) < dtpBaseTime.Value.Day ? dtpBaseTime.Value.AddMonths(1).Month : dtpBaseTime.Value.Month; int year = Convert.ToInt32(report.CreditCards[0].ClosingDate) < dtpBaseTime.Value.Day ? dtpBaseTime.Value.AddMonths(1).Year : dtpBaseTime.Value.AddMonths(1).Year; var date = DateTime.Parse($"{day}-{month}-{year}"); ctrEntry.PayCreditCard(Convert.ToInt32(cbBankSender.SelectedValue), report.CreditCards[0].Id, valueToPay, valueParcel, dtpBaseTime.Value, date); foreach (var entry in report.EntryExpenses.Where(entry => entry.Status == false).ToList()) { entry.Status = true; ctrEntry.Save(entry); EntryExpenses oldExpense = entry.Clone(); oldExpense.Value *= (-1); ctrEntry.PerformTransaction(oldExpense); } MessageBox.Show("Pagamento realizado com sucesso!", "Informativo", MessageBoxButtons.OK); this.Close(); }
public FrmEntryExpenses(EntryExpenses entry, ApplicationDbContext context) : this(entry.EntryType, context) { nupValue.Value = Convert.ToDecimal(entry.Value); this.entryType = entry.EntryType; dtDate.Value = entry.Date; txtDescription.Text = entry.Description; LoadCategories(); LoadPaymanetMethod(); cbCategoria.SelectedIndex = cbCategoria.FindString(entry.Category.Description); if (entry.PaymentMethod is Account) { cbPaymentMethod.SelectedIndex = cbPaymentMethod.FindString($"{controller.GenerateCaptionHolder(entry.PaymentMethod.Holder)} conta: {((Account)entry.PaymentMethod).Bank}"); } else { cbPaymentMethod.SelectedIndex = cbPaymentMethod.FindString($"{controller.GenerateCaptionHolder(entry.PaymentMethod.Holder)} cartão: {((CreditCard)entry.PaymentMethod).Issuer}"); } if (entry.Category.SubCategories.Count != 0) { cbSubCategoria.SelectedIndex = cbSubCategoria.FindString(entry.Category.SubCategories[0].Description); } this.isEditMode = true; btnSave.Enabled = true; this.Model = entry.Clone(); this.OldModel = entry; nupValue.Focus(); cbCategoria.Enabled = false; cbSubCategoria.Enabled = false; cbPaymentMethod.Enabled = false; ckRepeat.Enabled = false; nupTimes.Enabled = false; }
public void Remove(EntryExpenses entry) { Context.Expenses.Remove(entry); Context.SaveChanges(); }