예제 #1
0
        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);
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        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);
                }
            }
        }