Exemplo n.º 1
0
        private void kaydetBttn_Click(object sender, EventArgs e)
        {
            int     sourceStokDepoInckey = Convert.ToInt32(cellsOfSelectedItem[0].Value.ToString());
            int     sourceDepoInckey     = Convert.ToInt32(cellsOfSelectedItem[4].Value.ToString());
            decimal transferMiktar       = Convert.ToDecimal(txtMiktar.Text);
            int     transferDepoInckey   = Convert.ToInt32(cbStokDepo.SelectedValue);
            int     addedStokDepoInckey  = 0;
            decimal remainMiktar         = Convert.ToDecimal(cellsOfSelectedItem[3].Value.ToString()) - transferMiktar;

            try
            {
                if (remainMiktar >= 0)
                {
                    if (remainMiktar != 0)
                    {
                        string anyStokDepoSameQuery = "SELECT COUNT(STOK_DEPO_INCKEY) FROM STOK_DEPO " +
                                                      "WHERE STOK_INCKEY = @stok_inckey AND DEPO_INCKEY = @depo_inckey";
                        sqlCmd = new SqlCommand(anyStokDepoSameQuery, Program.connection);
                        sqlCmd.Parameters.Add("@stok_inckey", SqlDbType.Int).Value = stokInckey;
                        sqlCmd.Parameters.Add("@depo_inckey", SqlDbType.Int).Value = transferDepoInckey;
                        if (((int)sqlCmd.ExecuteScalar()) != 0)
                        {
                            string getMiktarQuery = "SELECT MIKTAR FROM STOK_DEPO " +
                                                    "WHERE STOK_INCKEY = @stok_inckey AND DEPO_INCKEY = @depo_inckey";
                            sqlCmd = new SqlCommand(getMiktarQuery, Program.connection);
                            sqlCmd.Parameters.Add("@stok_inckey", SqlDbType.Int).Value = stokInckey;
                            sqlCmd.Parameters.Add("@depo_inckey", SqlDbType.Int).Value = transferDepoInckey;
                            decimal result = (decimal)sqlCmd.ExecuteScalar();

                            string transferUpdateQuery = "UPDATE STOK_DEPO SET MIKTAR = @miktar WHERE STOK_INCKEY = @stok_inckey AND DEPO_INCKEY = @depo_inckey";
                            sqlCmd = new SqlCommand(transferUpdateQuery, Program.connection);
                            sqlCmd.Parameters.Add("@stok_inckey", SqlDbType.Int).Value = stokInckey;
                            sqlCmd.Parameters.Add("@depo_inckey", SqlDbType.Int).Value = transferDepoInckey;
                            sqlCmd.Parameters.Add("@miktar", SqlDbType.Decimal).Value  = (result + transferMiktar);

                            if (sqlCmd.ExecuteNonQuery() > 0)
                            {
                                string updateQuery = "UPDATE STOK_DEPO SET MIKTAR = @miktar WHERE STOK_DEPO_INCKEY = @stok_depo_inckey";
                                sqlCmd = new SqlCommand(updateQuery, Program.connection);
                                sqlCmd.Parameters.Add("@miktar", SqlDbType.Decimal).Value       = remainMiktar;
                                sqlCmd.Parameters.Add("@stok_depo_inckey", SqlDbType.Int).Value = sourceStokDepoInckey;
                            }
                        }
                        else
                        {
                            string transferQuery = "INSERT INTO STOK_DEPO(STOK_INCKEY, DEPO_INCKEY, MIKTAR) OUTPUT INSERTED.STOK_DEPO_INCKEY VALUES(@stok_inckey, @depo_inckey, @miktar)";
                            sqlCmd = new SqlCommand(transferQuery, Program.connection);
                            sqlCmd.Parameters.Add("@stok_inckey", SqlDbType.Int).Value = stokInckey;
                            sqlCmd.Parameters.Add("@depo_inckey", SqlDbType.Int).Value = transferDepoInckey;
                            sqlCmd.Parameters.Add("@miktar", SqlDbType.Decimal).Value  = transferMiktar;
                            addedStokDepoInckey = (int)sqlCmd.ExecuteScalar();
                            if (addedStokDepoInckey > 0)
                            {
                                string updateQuery = "UPDATE STOK_DEPO SET MIKTAR = @miktar WHERE STOK_DEPO_INCKEY = @stok_depo_inckey";
                                sqlCmd = new SqlCommand(updateQuery, Program.connection);
                                sqlCmd.Parameters.Add("@miktar", SqlDbType.Decimal).Value       = remainMiktar;
                                sqlCmd.Parameters.Add("@stok_depo_inckey", SqlDbType.Int).Value = sourceStokDepoInckey;
                            }
                        }
                    }
                    else
                    {
                        string updateJustQuery = "UPDATE STOK_DEPO SET MIKTAR = @miktar WHERE STOK_DEPO_INCKEY = @stok_depo_inckey";
                        sqlCmd = new SqlCommand(updateJustQuery, Program.connection);
                        sqlCmd.Parameters.Add("@miktar", SqlDbType.Decimal).Value       = transferMiktar;
                        sqlCmd.Parameters.Add("@stok_depo_inckey", SqlDbType.Int).Value = sourceStokDepoInckey;
                        addedStokDepoInckey = sourceStokDepoInckey;
                    }

                    if (sqlCmd.ExecuteNonQuery() > 0)
                    {
                        string stokDepoTransferQuery = "INSERT INTO STOK_DEPO_TRANSFER(FROM_DEPO, TO_DEPO, MIKTAR, STOK_INCKEY, KAYIT_YAPAN_KUL) " +
                                                       "VALUES(@from_depo, @to_depo, @miktar, @stok_inckey, @kayit_yapan_kul)";
                        sqlCmd = new SqlCommand(stokDepoTransferQuery, Program.connection);
                        sqlCmd.Parameters.Add("@from_depo", SqlDbType.Int).Value       = sourceDepoInckey;
                        sqlCmd.Parameters.Add("@to_depo", SqlDbType.Int).Value         = transferDepoInckey;
                        sqlCmd.Parameters.Add("@stok_inckey", SqlDbType.Int).Value     = stokInckey;
                        sqlCmd.Parameters.Add("@miktar", SqlDbType.Decimal).Value      = transferMiktar;
                        sqlCmd.Parameters.Add("@kayit_yapan_kul", SqlDbType.Int).Value = Program.kullanici.Item1;
                        if (sqlCmd.ExecuteNonQuery() > 0)
                        {
                            sourceStokMiktarLabel.Text = remainMiktar.ToString();
                            Notification.messageBox("Transfer başarıyla tamamlandı.");
                            if (depoStokListesi == null)
                            {
                                stokDepoListesi.listStokDepo();
                            }
                            else
                            {
                                depoStokListesi.listDepoStok();
                            }
                            this.Close();
                        }
                    }
                }
                else
                {
                    Notification.messageBox("Transfer edilecek miktar, asıl miktardan büyük olmamalı.");
                }
            } catch (Exception ex)
            {
                Notification.messageBoxError(ex.Message);
            }
        }