private void EditMovement(AccountMovement movement) { switch (movement.MovementTypeID) { case 1: // Ticari Mat Satışı Yapıldı { using (MuhasebeEntities m_Context = new MuhasebeEntities()) { Invoice m_Invoice = m_Context.Invoices.Where(q => q.ID == movement.ContractID).FirstOrDefault(); m_Context.Entry(m_Invoice).State = System.Data.Entity.EntityState.Detached; if (m_Invoice != null) { Edit_Sale_Mdi m_Mdi = new Edit_Sale_Mdi(); m_Mdi.Invoice = m_Invoice; m_Mdi.ShowDialog(); } } break; } case 2: // Alacak tahsilatı yapıldı { using (MuhasebeEntities m_Context = new MuhasebeEntities()) { Income m_Income = m_Context.Incomes.Where(q => q.ID == movement.ContractID).FirstOrDefault(); m_Context.Entry(m_Income).State = System.Data.Entity.EntityState.Detached; if (m_Income != null) { Edit_Revenue_Pop m_Pop = new Edit_Revenue_Pop(); m_Pop.Income = m_Income; m_Pop.ShowDialog(); } } break; } case 3: //Ürün Tedariği Yapıldı { StockMovement m_StockMovement = null; using (MuhasebeEntities m_Context = new MuhasebeEntities()) { m_StockMovement = m_Context.StockMovements.Where(q => q.ID == movement.ContractID).FirstOrDefault(); //m_Context.Entry(m_StockMovement).State = System.Data.Entity.EntityState.Detached; }; if (m_StockMovement != null) { Edit_StockMovement_Mdi m_Mdi = new Edit_StockMovement_Mdi(); m_Mdi.StockMovement = m_StockMovement; m_Mdi.ShowDialog(); } break; } case 4: //Borç ödemesi yapıldı { using (MuhasebeEntities m_Context = new MuhasebeEntities()) { Expenditure m_Expenditure = m_Context.Expenditures.Where(q => q.ID == movement.ContractID).FirstOrDefault(); m_Context.Entry(m_Expenditure).State = System.Data.Entity.EntityState.Detached; if (m_Expenditure != null) { Edit_Expenditure_Pop m_Pop = new Edit_Expenditure_Pop(); m_Pop.Expenditure = m_Expenditure; m_Pop.ShowDialog(); } } break; } } this.PopulateAccountHistory(movement.Account); }
private void Save_Button_Click(object sender, EventArgs e) { int m_PaymentTypeID = Convert.ToInt32(this.Payment_Combo.SelectedValue); if (m_PaymentTypeID == 3 && this.Account_Box.SelectedValue == null) { MessageBox.Show("Vadeli satışı ancak bir cari hesaba yapabilirsiniz.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } using (MuhasebeEntities m_Context = new MuhasebeEntities()) { if (this.Invoice != null && this.Invoice.Nodes.Count > 0) { this.Invoice.OwnerID = Program.User.WorksAtID.Value; this.Invoice.PaymentTypeID = Convert.ToInt32(this.Payment_Combo.SelectedValue); //this.Invoice.CreatedAt = DateTime.Now; this.Invoice.AuthorID = Program.User.ID; this.Invoice.State = "Complete"; decimal m_Total = 0; decimal m_Tax = 0; this.Invoice.Nodes.All(delegate(InvoiceNode m_Node) { m_Total += m_Node.FinalPrice.Value; m_Tax += m_Node.FinalPrice.Value * ((decimal)(m_Node.Tax.Value / 100)); /*if (this.Decrease_Stock_Check.Checked && m_Node.Item != null) * m_Context.Items.Where(q => q.ID == m_Node.ItemID).FirstOrDefault().Amount -= m_Node.Amount.Value; * * m_Node.Invoice = this.Invoice; * m_Node.Item = null;*/ return(true); }); if (this.Invoice.Discount.HasValue) { m_Total = m_Total - this.Invoice.Discount.Value; } Invoice m_Actual = m_Context.Invoices.Where(q => q.ID == this.Invoice.ID).FirstOrDefault(); m_Actual.OwnerID = this.Invoice.OwnerID; m_Actual.AuthorID = this.Invoice.AuthorID; m_Actual.CreatedAt = this.Invoice.CreatedAt; m_Actual.Discount = this.Invoice.Discount; m_Actual.PaymentTypeID = this.Invoice.PaymentTypeID; m_Actual.State = this.Invoice.State; m_Actual.TargetID = this.Invoice.TargetID; var m_Added = this.Invoice.Nodes.Except(m_Actual.Nodes, (p, p1) => p.ItemID == p1.ItemID).ToList(); var m_Deleted = m_Actual.Nodes.Except(this.Invoice.Nodes, (p, p1) => p.ItemID == p1.ItemID).ToList(); var m_Changed = m_Actual.Nodes.Intersect(this.Invoice.Nodes, (p, p1) => p.ItemID == p1.ItemID && (p.Amount != p1.Amount || p.BasePrice != p1.BasePrice || p.UseCustomPrice != p1.UseCustomPrice)).ToList(); m_Added.All(delegate(InvoiceNode m_Node) { if (Decrease_Stock_Check.Checked && m_Node.ItemID > 0) { m_Context.Items.Where(q => q.ID == m_Node.ItemID).FirstOrDefault().Amount -= m_Node.Amount.Value; } m_Actual.Nodes.Add(m_Node); return(true); }); m_Deleted.All(delegate(InvoiceNode m_Node) { if (Increase_Stock_Check.Checked && m_Node.ItemID > 0) { m_Context.Items.Where(q => q.ID == m_Node.ItemID).FirstOrDefault().Amount += m_Node.Amount.Value; } InvoiceNode m_ToDelete = m_Actual.Nodes.Where(q => q.ItemID == m_Node.ItemID).FirstOrDefault(); m_Actual.Nodes.Remove(m_ToDelete); m_Context.Entry(m_ToDelete).State = System.Data.Entity.EntityState.Deleted; return(true); }); m_Changed.All(delegate(InvoiceNode m_Node) { InvoiceNode m_Knode = this.Invoice.Nodes.Where(q => q.ItemID == m_Node.ItemID).FirstOrDefault(); if (m_Knode != null) { if (m_Node.Amount > m_Knode.Amount) { // Bazıları silinmiş if (m_Node.ItemID > 0 && Increase_Stock_Check.Checked) //Eğer kayıt dışı satış değilse { m_Context.Items.Where(q => q.ID == m_Node.ItemID).FirstOrDefault().Amount += m_Node.Amount.Value - m_Knode.Amount.Value; } } else if (m_Node.Amount < m_Knode.Amount) { if (m_Node.ItemID > 0 && Decrease_Stock_Check.Checked) // Kayıt dışı satış değisle { m_Context.Items.Where(q => q.ID == m_Node.ItemID).FirstOrDefault().Amount -= m_Knode.Amount.Value - m_Node.Amount.Value; } } m_Node.Amount = m_Knode.Amount; m_Node.BasePrice = m_Knode.BasePrice; m_Node.FinalPrice = m_Knode.FinalPrice; m_Node.UseCustomPrice = m_Knode.UseCustomPrice; if (m_Node.UseCustomPrice == null) { m_Node.UseCustomPrice = false; } } return(true); }); m_Actual.Nodes.All(delegate(InvoiceNode m_Node) { m_Node.Invoice = m_Actual; m_Node.Item = null; return(true); }); if (m_Actual.PaymentTypeID != 3) // Vadeli değil { Income m_Income = m_Context.Incomes.Where(q => q.InvoiceID == m_Actual.ID).FirstOrDefault(); m_Income.Amount = m_Total; } AccountMovement m_Movement = m_Context.AccountMovements.Where(q => q.AccountID == m_Actual.TargetID && q.ContractID == m_Actual.ID && q.MovementTypeID == 1).FirstOrDefault(); if (m_Movement != null) { m_Movement.Value = m_Total; } m_Context.SaveChanges(); this.Close(); } else { MessageBox.Show("Satılabilecek herhangi bir ürün yok.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void Save_Button_Click(object sender, EventArgs e) { if (this.StockMovement.Nodes == null || this.StockMovement.Nodes.Count <= 0) { MessageBox.Show("Ürün alımı için en az bir adet ürünü listeye eklemelisiniz.", "Hata"); return; } int m_AccountID = Convert.ToInt32(this.Account_Box.SelectedValue); using (MuhasebeEntities m_Context = new MuhasebeEntities()) { Account m_Account = m_Context.Accounts.Where(q => q.ID == m_AccountID).FirstOrDefault(); StockMovement m_Actual = m_Context.StockMovements.Where(q => q.ID == this.StockMovement.ID).FirstOrDefault(); if (m_Account != null) { var m_Added = this.StockMovement.Nodes.Except(m_Actual.Nodes, (p, p1) => p.ItemID == p1.ItemID).ToList(); var m_Deleted = m_Actual.Nodes.Except(this.StockMovement.Nodes, (p, p1) => p.ItemID == p1.ItemID).ToList(); var m_Changed = this.StockMovement.Nodes.Intersect(m_Actual.Nodes, (p, p1) => p.ItemID == p1.ItemID && (p.Amount != p1.Amount || p.BasePrice != p1.BasePrice)).ToList(); m_Actual.AccountID = m_Account.ID; m_Actual.CreatedAt = CreatedAt_Picker.Value; m_Actual.AuthorID = Program.User.ID; m_Actual.OwnerID = Program.User.WorksAtID.Value; m_Actual.PaymentTypeID = Convert.ToInt32(this.PaymentType_Combo.SelectedValue); m_Deleted.All(delegate(StockMovementNode m_Node) { if (Decrese_Stock_Check.Checked) { m_Context.Items.Where(q => q.ID == m_Node.ItemID).FirstOrDefault().Amount -= m_Node.Amount; } StockMovementNode m_ToDelete = m_Actual.Nodes.Where(q => q.ID == m_Node.ID).FirstOrDefault(); m_Actual.Nodes.Remove(m_ToDelete); m_Context.Entry(m_ToDelete).State = System.Data.Entity.EntityState.Deleted; return(true); }); m_Added.All(delegate(StockMovementNode m_Node) { if (Increase_Stock_Check.Checked) { m_Context.Items.Where(q => q.ID == m_Node.ItemID).FirstOrDefault().Amount += m_Node.Amount; } m_Actual.Nodes.Add(m_Node); return(true); }); m_Changed.All(delegate(StockMovementNode m_Node) { //actual node StockMovementNode m_Anode = m_Actual.Nodes.Where(q => q.ID == m_Node.ID).FirstOrDefault(); if (m_Node.Amount > m_Anode.Amount && Increase_Stock_Check.Checked) { m_Context.Items.Where(q => q.ID == m_Anode.ItemID).FirstOrDefault().Amount += m_Node.Amount - m_Anode.Amount; } else if (m_Node.Amount < m_Anode.Amount && Decrese_Stock_Check.Checked) { m_Context.Items.Where(q => q.ID == m_Anode.ItemID).FirstOrDefault().Amount -= m_Anode.Amount - m_Node.Amount; } m_Anode.Amount = m_Node.Amount; m_Anode.BasePrice = m_Node.BasePrice; return(true); }); m_Actual.Nodes.All(delegate(StockMovementNode m_Node) { m_Node.Parent = m_Actual; m_Node.FinalPrice = m_Node.BasePrice * m_Node.Amount; return(true); }); m_Actual.Summary = m_Actual.Nodes.Sum(q => q.FinalPrice.Value); if (this.StockMovement.Discount.HasValue) { m_Actual.Discount = this.StockMovement.Discount.Value; m_Actual.Summary -= m_Actual.Discount.Value; } m_Context.SaveChanges(); AccountMovement movement = m_Context.AccountMovements.Where(q => q.MovementTypeID == 3 && q.ContractID == m_Actual.ID).FirstOrDefault(); if (movement != null) { movement.Value = m_Actual.Summary; } if (m_Actual.PaymentTypeID != 3) //Vadeli olmadığında, gideri doğrultalım { Expenditure m_Expenditure = m_Context.Expenditures.Where(q => q.AccountID == movement.AccountID && q.MovementID == movement.ID).FirstOrDefault(); if (m_Expenditure != null) { m_Expenditure.Amount = m_Actual.Summary; } } m_Context.SaveChanges(); this.Close(); } else { MessageBox.Show("Bu mal alımı için bir cari hesap belirtmelisiniz.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }