private void cmb_Firma_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Firma seçimi değiştikten sonra
            // şubeler firmaya göre tekrardan ayarlanır.

            List <string> firmaDonemAdlari = new List <string>();

            // firma_donem_sube listesi içerisinde gezilir. Firma bulunur ve dönemleri getirilir.
            foreach (dynamic firma_sube_donem in Sabitler.firma_sube_donem_listesi)
            {
                // Combodaki isim ile ilgili olan firma_sube_donem bulunur
                if (firma_sube_donem.firmaadi == cmb_Firma.Text)
                {
                    // dönemler adları hazırlanır
                    // donem adları gorunendonem, baslangictarihi, bitistarihi seklinde hazırlanır
                    // aralarına 3'er boşluk bırakılır daha sonra boşluklara göre parse edileceklerdir.

                    if (Sabitler.HasAttr(firma_sube_donem, "donemler"))
                    {
                        foreach (dynamic donem in firma_sube_donem.donemler)
                        {
                            string donemAdi = donem.gorunendonemkodu;
                            donemAdi += "   ";
                            donemAdi += donem.baslangictarihi;
                            donemAdi += "   ";
                            donemAdi += donem.bitistarihi;
                            firmaDonemAdlari.Add(donemAdi);
                        }
                    }
                }
            }

            cmb_Donem.Items.Clear();
            cmb_Donem.Items.AddRange(firmaDonemAdlari.ToArray());
        }
        private string subeAdiGetir(long firmaKodu, string key)
        {
            // firma_sube_donem listesi, login olduktan sonra Sabitler içerisinde set edilmişti.
            foreach (dynamic firma_sube_donem in Sabitler.firma_sube_donem_listesi)
            {
                // İlgili firma bulundu.
                if (firma_sube_donem.firmakodu == firmaKodu)
                {
                    // Firma içerisindeki şubelerde geizilir ve şubenin adı bulunur
                    if (Sabitler.HasAttr(firma_sube_donem, "subeler"))
                    {
                        foreach (dynamic sube in firma_sube_donem.subeler)
                        {
                            if (("" + sube._key) == key)
                            {
                                return(sube.subeadi);
                            }
                        }
                    }
                    break;
                }
            }

            return("");
        }
        private long subeKeyGetir(long firmaKodu, string subeAdi)
        {
            // firma_sube_donem listesi, login olduktan sonra Sabitler içerisinde kaydetilmişti.
            foreach (dynamic firma_sube_donem in Sabitler.firma_sube_donem_listesi)
            {
                // İlgili firma bulundu.
                if (firma_sube_donem.firmakodu == firmaKodu)
                {
                    // Firma içerisindeki şubelerde gezilir ve key bilgisi bulunur
                    if (Sabitler.HasAttr(firma_sube_donem, "subeler"))
                    {
                        foreach (dynamic sube in firma_sube_donem.subeler)
                        {
                            if (sube.subeadi == subeAdi)
                            {
                                return(sube._key);
                            }
                        }
                    }
                    break;
                }
            }

            return(0);
        }
        /// <summary>
        /// Seçili firma bilgisine göre firmanın şubelerini listeler
        /// </summary>
        public void initiliazeSubeler()
        {
            List <string> subeAdlari = new List <string>();

            foreach (dynamic firma_sube_donem in Sabitler.firma_sube_donem_listesi)
            {
                // İlgili firma bulundu.
                if (firma_sube_donem.firmakodu == Sabitler.seciliFirmaKodu)
                {
                    if (Sabitler.HasAttr(firma_sube_donem, "subeler"))
                    {
                        foreach (dynamic sube in firma_sube_donem.subeler)
                        {
                            subeAdlari.Add(sube.subeadi);
                        }
                        break;
                    }
                }
            }

            cmb_Sube.Items.Clear();
            cmb_Sube.Items.AddRange(subeAdlari.ToArray());
        }
        public void btn_Getir_Click(object sender, EventArgs e)
        {
            // Firma ve donem seçili olmalıdır.
            if (cmb_Firma.Text == "" || cmb_Donem.Text == "")
            {
                MessageBox.Show("Lütfen firma ve dönem seçiniz.");
                return;
            }

            long firmaKodu = -1;
            long donemKodu = -1;

            // firma_sube_donem listesi üzerinde gezilir
            // Firmakodu ve donemkodu getirilir.
            foreach (dynamic firma_sube_donem in Sabitler.firma_sube_donem_listesi)
            {
                // Firma bulundu
                if (firma_sube_donem.firmaadi == cmb_Firma.Text)
                {
                    firmaKodu = firma_sube_donem.firmakodu;

                    // donem kombosu içerisindeki text gorunendonem, baslangictarihi, bitistarihi
                    // degerleri arasına 3'er boşluk bırakılmış şekilde hazırlanmıştı.

                    // combo içerisindeki text split edilir
                    // arr[0] -> gorunendonemkodu, arr[1] -> baslangictarihi, arr[2] -> bitistarihi
                    string[] arr = cmb_Donem.Text.Split(new[] { "   " }, StringSplitOptions.None);

                    // Firma içerisindeki dönemlerde gezilir.
                    if (Sabitler.HasAttr(firma_sube_donem, "donemler"))
                    {
                        foreach (dynamic donem in firma_sube_donem.donemler)
                        {
                            if (donem.gorunendonemkodu == arr[0] &&
                                donem.baslangictarihi == arr[1] &&
                                donem.bitistarihi == arr[2])
                            {
                                // Dönem bulundu
                                donemKodu = donem.donemkodu;
                                break;
                            }
                        }
                    }
                }
            }

            // seçilen firma ve doneme gore cariler serverdan getirilir.
            dynamic request = new ExpandoObject();

            request.scf_carikart_listele            = new ExpandoObject();
            request.scf_carikart_listele.session_id = Sabitler.session_id;
            request.scf_carikart_listele.firma_kodu = firmaKodu;
            request.scf_carikart_listele.donem_kodu = donemKodu;
            request.scf_carikart_listele.limit      = Sabitler.CARI_LISTELEME_LIMIT;

            dynamic response = Sabitler.sendMessageToServer(request, Sabitler.scfEk);

            if (response == null)
            {
                MessageBox.Show("Cariler getirilirken, bağlantı hatası oluştu.");
                return;
            }
            // sonuc başarılı, firmakodu ve donemkodu daha sonraki islemlerde kullanılmasına karşı kaydedilir
            else if (response.code == "200")
            {
                // Daha sonra firma ve donem koduna hızlı erişebilmek için
                // Sabitler içerisinde firmaKodu ve donemKodu kaydedilir.
                Sabitler.seciliFirmaKodu = firmaKodu;
                Sabitler.seciliDonemKodu = donemKodu;
                Sabitler.carikartlistesi = response.result;
                // cariler listelenir.
                carileriListele(response.result);
            }
            // Yeterli kontör bulunmadığında gelen uyarı.
            else if (response.code == "406")
            {
                MessageBox.Show("Yeterli kontörünüz bulunmamaktadır. Code: " + response.code + " Message: " + response.msg);
            }
            else
            {
                MessageBox.Show("Cariler getirilirken bir hata oluştu. Code: " + response.code + " Message: " + response.msg);
                return;
            }
        }