public void eksikNedenleriDoldur()
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                ComboboxItem item1 = new ComboboxItem();
                item1.Text  = "";
                item1.Value = "";

                cmbRedNeden.Items.Add(item1);

                WS_UrunTeslim.SERVICE srv = new KoctasMobil.WS_UrunTeslim.SERVICE();
                srv.Url         = Utility.getWsUrl("zktmobil_urunteslim");
                srv.Credentials = ProgramGlobalData.g_credential;

                WS_UrunTeslim.ZKTMOBIL_EKSIKNEDENLERI ItNeden = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_EKSIKNEDENLERI();
                WS_UrunTeslim.ZKTMOBIL_S005           etNeden = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_S005();
                //WS_UrunTeslim.ZKTMOBIL_T001 etNeden = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_T001();

                ItNeden.ET_NEDEN = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_S005[0];
                //ItNeden.ET_NEDEN = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_T001[0];

                WS_UrunTeslim.ZKTMOBIL_EKSIKNEDENLERIResponse resp = srv.ZKTMOBIL_EKSIKNEDENLERI(ItNeden);

                if (resp.ET_NEDEN.Length > 0)
                {
                    redNedenleri = resp.ET_NEDEN;
                    for (int i = 0; i < resp.ET_NEDEN.Length; i++)
                    {
                        string nedenCode     = resp.ET_NEDEN[i].NEDEN_CODE.ToString();
                        string nedenAciklama = resp.ET_NEDEN[i].NEDEN_TANIM.ToString();

                        ComboboxItem item = new ComboboxItem();
                        item.Text  = nedenAciklama;
                        item.Value = nedenCode;

                        cmbRedNeden.Items.Add(item);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "HATA!", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
        private void btn_Kaydet_Click(object sender, EventArgs e)
        {
            //Eklenen urunler kontrol ediliyor
            if (dtTeslimat.Rows.Count > 0)
            {
                try
                {
                    Cursor.Current = Cursors.WaitCursor;

                    WS_UrunTeslim.ZKTMOBIL_S002[] dtUrunler = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_S002[ZodendiBlg.Length];

                    for (int j = 0; j < dtTeslimat.Rows.Count; j++)
                    {
                        if (dtTeslimat.Rows[j]["MATNR"].ToString() != "")
                        {
                            //decimal toplanan = Convert.ToDecimal(dtTeslimat.Rows[j]["MENGE"].ToString()); ;
                            //decimal eksik = Convert.ToDecimal(dtTeslimat.Rows[j]["EMENGE"].ToString());
                            decimal olmasiGereken = getMatnrCount(dtTeslimat.Rows[j]["MATNR"].ToString());

                            if (toplamMiktarGetir(dtTeslimat.Rows[j]["MATNR"].ToString()) != olmasiGereken)
                            {
                                MessageBox.Show("Sipariş miktarında uyumsuzluk var. Lütfen ürün miktarı ve toplanan miktar alanlarını kontrol ediniz. Malzeme No: " + dtTeslimat.Rows[j]["MATNR"].ToString() + "- Olması Gereken Toplam: " + olmasiGereken.ToString());
                                Cursor.Current = Cursors.Default;
                                return;
                            }

                            /*
                             * dtUrunler[j] = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_S002();
                             * dtUrunler[j].MATNR = dtTeslimat.Rows[j]["MATNR"].ToString();
                             * dtUrunler[j].TMENGE = toplanan;
                             * dtUrunler[j].EMENGE = eksik;
                             *
                             * dtUrunler[j].POSNR = dtTeslimat.Rows[j]["POSNR"].ToString();
                             * dtUrunler[j].VBELN = dtTeslimat.Rows[j]["VBELN"].ToString();
                             * byte nedenKod = 0;
                             * if (dtTeslimat.Rows[j]["NEDEN_CODE"].ToString() != "")
                             * {
                             *  nedenKod = Convert.ToByte(redNedeniDegeriGetir(dtTeslimat.Rows[j]["NEDEN_CODE"].ToString()));
                             * }
                             * dtUrunler[j].NEDEN_CODE = nedenKod;
                             * dtUrunler[j].I_SET = dtTeslimat.Rows[j]["I_SET"].ToString();
                             */
                        }
                    }



                    //Ürünler ilk tablodan referans alınarak gidecek urun listesine aktarılıyor
                    for (int i = 0; i < ZodendiBlg.Length; i++)
                    {
                        dtUrunler[i]            = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_S002();
                        dtUrunler[i].EMENGE     = 0;
                        dtUrunler[i].TMENGE     = 0;
                        dtUrunler[i].I_SET      = ZodendiBlg[i].I_SET.ToString();
                        dtUrunler[i].MATNR      = ZodendiBlg[i].MATNR.ToString().TrimStart('0');
                        dtUrunler[i].NEDEN_CODE = "0";
                        dtUrunler[i].POSNR      = ZodendiBlg[i].POSNR.ToString();
                        dtUrunler[i].VBELN      = ZodendiBlg[i].VBELN.ToString();
                    }



                    //kontrolden geçen malzemeler ekleniyor
                    for (int j = 0; j < dtTeslimat.Rows.Count; j++)
                    {
                        if (dtTeslimat.Rows[j]["MATNR"].ToString() != "")
                        {
                            decimal toplanan = Convert.ToDecimal(dtTeslimat.Rows[j]["MENGE"].ToString());;
                            decimal eksik    = Convert.ToDecimal(dtTeslimat.Rows[j]["EMENGE"].ToString());


                            for (int i = 0; i < dtUrunler.Length; i++)
                            {
                                if (dtTeslimat.Rows[j]["MATNR"].ToString() == dtUrunler[i].MATNR.ToString())
                                {
                                    dtUrunler[i].TMENGE = toplanan;
                                    dtUrunler[i].EMENGE = eksik;
                                    string nedenKod = "0";
                                    if (dtTeslimat.Rows[j]["NEDEN_CODE"].ToString() != "")
                                    {
                                        nedenKod = redNedeniDegeriGetir(dtTeslimat.Rows[j]["NEDEN_CODE"].ToString());
                                    }
                                    dtUrunler[i].NEDEN_CODE = nedenKod;
                                    break;
                                }
                            }
                        }
                    }

                    WS_UrunTeslim.SERVICE srv = new KoctasMobil.WS_UrunTeslim.SERVICE();
                    srv.Url         = Utility.getWsUrl("zktmobil_urunteslim");
                    srv.Credentials = ProgramGlobalData.g_credential;

                    WS_UrunTeslim.ZKTMOBIL_ODENDIKAYIT odendiKayit = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_ODENDIKAYIT();

                    odendiKayit.IT_TESLIMAT = dtUrunler;
                    odendiKayit.ET_RETURN   = new KoctasMobil.WS_UrunTeslim.ZKMOBIL_RETURN[0];

                    String sevkTimestampTemp = "";
                    if ((this.PARVW.IndexOf("ZX") != -1 || this.PARVW.IndexOf("ZY") != -1) && this.ISMKL.Trim().Equals("1"))
                    {
                        frm_UrunTeslimat_2_Timestamp frm = new frm_UrunTeslimat_2_Timestamp();
                        frm.ShowDialog();
                        sevkTimestampTemp = frm.timestamp;
                    }
                    else
                    {
                        sevkTimestampTemp = "19800101000000";
                    }

                    if (odendiKayit.IT_TESLIMAT != null && odendiKayit.IT_TESLIMAT.Length > 0)   // Eirsaliye mükellefiyse popup açtırıcaz ISMKL 1 donerse popup aç
                    {
                        for (int i = 0; i < odendiKayit.IT_TESLIMAT.Length; i++)
                        {
                            odendiKayit.IT_TESLIMAT[i].SEVKTIMESTAMP = Convert.ToDecimal(sevkTimestampTemp);
                        }
                    }


                    WS_UrunTeslim.ZKTMOBIL_ODENDIKAYITResponse rsp = srv.ZKTMOBIL_ODENDIKAYIT(odendiKayit);

                    if (rsp.ET_RETURN[0].RC_CODE.ToString() == "E")
                    {
                        MessageBox.Show(rsp.ET_RETURN[0].RC_TEXT.ToString(), "HATA - SAP", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                        return;
                    }
                    MessageBox.Show("İşlem tamamlandı.", "", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);

                    txtMalzemeAdi.Text = "";
                    txtEMenge.Text     = "0";
                    cmbRedNeden.Text   = "";
                    txtFormNo.Text     = txtMatnrEan11.Text = txtMenge.Text = "";
                    dtTeslimat.Rows.Clear();
                    ZodendiBlg = null;
                    txtFormNo.Focus();
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message, "HATA!", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
                }
                finally
                {
                    Cursor.Current = Cursors.Default;
                }
            }
            else
            {
                MessageBox.Show("Formu kaydetmeden önce malzemeleri ekleyiniz.", "HATA!", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
                return;
            }


            /*
             * for (int i = 0; i < ZodendiBlg.Length; i++)
             * {
             *  bool FindIt = false;
             *  for (int j = 0; j < dtTeslimat.Rows.Count; j++)
             *  {
             *      if (dtTeslimat.Rows[j]["MATNR"].ToString() == ZodendiBlg[i].Matnr.TrimStart('0') &&
             *          dtTeslimat.Rows[j]["MENGE"].ToString() == Convert.ToInt32(ZodendiBlg[i].Menge).ToString()
             *          )
             *          FindIt = true;
             *  }
             *  if (!FindIt)
             *  {
             *      MessageBox.Show("Eksik ürün girişi yaptınız!", "HATA!", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
             *      return;
             *  }
             * }
             */
        }
        private void txtFormNo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
                try
                {
                    txtFormNo.Text = txtFormNo.Text.Trim().PadLeft(10, '0');
                    Cursor.Current = Cursors.WaitCursor;
                    WS_UrunTeslim.SERVICE srv = new KoctasMobil.WS_UrunTeslim.SERVICE();
                    srv.Url         = Utility.getWsUrl("zktmobil_urunteslim");
                    srv.Credentials = ProgramGlobalData.g_credential;

                    WS_UrunTeslim.ZKTMOBIL_ODENDIDETAY odendi   = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_ODENDIDETAY();
                    WS_UrunTeslim.ZKTMOBIL_S001        ItOdendi = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_S001();
                    WS_UrunTeslim.ZKMOBIL_RETURN       TeReturn = new KoctasMobil.WS_UrunTeslim.ZKMOBIL_RETURN();
                    WS_UrunTeslim.ZSET ItSet = new KoctasMobil.WS_UrunTeslim.ZSET();

                    odendi.IV_VBELN  = txtFormNo.Text;
                    odendi.ET_ODENDI = new KoctasMobil.WS_UrunTeslim.ZKTMOBIL_S001[0];
                    odendi.ET_SET    = new KoctasMobil.WS_UrunTeslim.ZSET[0];
                    odendi.ET_RETURN = new KoctasMobil.WS_UrunTeslim.ZKMOBIL_RETURN[0];

                    WS_UrunTeslim.ZKTMOBIL_ODENDIDETAYResponse rsp = srv.ZKTMOBIL_ODENDIDETAY(odendi);

                    if (rsp.ET_ODENDI != null)
                    {
                        ZodendiBlg = rsp.ET_ODENDI;
                        ZodendiSet = rsp.ET_SET;
                        formNo     = txtFormNo.Text.Trim();
                        this.PARVW = rsp.ET_ODENDI[0].PARVW;
                        this.ISMKL = rsp.ET_ODENDI[0].ISMKL;


                        //Bileşen kalemlerinin hepsi ana kalem tablosunda gelmiş mi?
                        if (bilesenMalzemeKontrol(ZodendiBlg, ZodendiSet) == false)
                        {
                            MessageBox.Show("SET ürünlere ait bileşen malzemelerin hepsi ana malzeme tablosunda gelmedi. SET ürünün bileşenleri düzgün parçalanmamış. SAP tarafından kontrol ediniz.", "HATA");
                            return;
                        }


                        //İçerisinde hizmet ve set olan kalemler tabloya ekleniyor
                        if (rsp.ET_ODENDI.Length > 0)
                        {
                            for (int i = 0; i < rsp.ET_ODENDI.Length; i++)
                            {
                                if ((rsp.ET_ODENDI[i].PSTYV.ToString() != "") || (rsp.ET_ODENDI[i].I_SET.ToString() == "X"))
                                {
                                    bool   ekle        = true;
                                    string hizmetMatnr = rsp.ET_ODENDI[i].MATNR.ToString().TrimStart('0');

                                    //Matnr daha önce eklenmiş ise eklenen satıra ekle

                                    for (int j = 0; j < dtTeslimat.Rows.Count; j++)
                                    {
                                        if (dtTeslimat.Rows[j]["MATNR"].ToString().TrimStart('0') == hizmetMatnr)
                                        {
                                            ekle = false;
                                            decimal mevcutMiktar = Convert.ToDecimal(dtTeslimat.Rows[j]["MENGE"].ToString());
                                            dtTeslimat.Rows[j]["MENGE"] = (mevcutMiktar + rsp.ET_ODENDI[i].MENGE).ToString();
                                        }
                                    }

                                    if (ekle)
                                    {
                                        DataRow dr = dtTeslimat.NewRow();
                                        dr["VBELN"]      = formNo.ToString();
                                        dr["POSNR"]      = getMatnrPosNr(hizmetMatnr);
                                        dr["MATNR"]      = hizmetMatnr.TrimStart('0');
                                        dr["MAKTX"]      = getMaktx(hizmetMatnr);
                                        dr["EMENGE"]     = "0";
                                        dr["MENGE"]      = rsp.ET_ODENDI[i].MENGE.ToString();
                                        dr["NEDEN_CODE"] = "";
                                        dr["I_SET"]      = rsp.ET_ODENDI[i].I_SET.ToString();
                                        dr["PSTYV"]      = rsp.ET_ODENDI[i].PSTYV.ToString();
                                        dtTeslimat.Rows.Add(dr);
                                    }
                                }
                            }
                            grdUrunTeslimat.DataSource = dtTeslimat;
                        }


                        txtMatnrEan11.Focus();
                    }

                    if (rsp.ET_RETURN.Length > 0)
                    {
                        if (rsp.ET_RETURN[0].RC_CODE == "E")
                        {
                            MessageBox.Show(rsp.ET_RETURN[0].RC_TEXT, "HATA!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                            txtFormNo.Focus();
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "HATA!", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
                }
                finally
                {
                    Cursor.Current = Cursors.Default;
                }
            }
        }