none
C# Faturalandırma RRS feed

  • Genel Tartışma

  • Merhabalar..

    İrsaliye Listemde Çoklu Seçilebilen, Faturalanmamış İrsaliyeleri SağTık -> Seçilenleri Faturalandır Dediğimde,, Seçilen İrsaliyelerde Bulunan Kalemleri Tek Bir Fatura Sayfasında Birleştirmek İstiyorum.. Seçilenler Alış İrsaliyesi ise Alış Faturasında,, Satış İrsaliyesi ise Satış Faturasında Görünecek.. Aşağıdaki Şekilde Kod Bloğu Oluşturdum Ama Çalışmıyor,, Sadece Son Seçilen İrsaliyeyi Faturalandırıyor.. Konu Hakkında Yardım Lütfen!!

    private void SagTikSecFat_Click(object sender, EventArgs e)
            {           
                int[] IrsaliyeBagla = gridView1.GetSelectedRows();
                
                foreach (int i in IrsaliyeBagla)
                {
                    Fonksiyonlar.TBL_IRSALIYELER Irsaliye = DB.TBL_IRSALIYELER.First(s => s.ID == SecimID);                
                    var srg = from s in DB.VW_KALEMLER
                              where s.IRSALIYEID == IrsaliyeID
                              select s;
                    while (gridView1.RowCount != 0)
                    {
                        gridView1.SelectAll();
                        gridView1.DeleteSelectedRows();
                    }
                    foreach (Fonksiyonlar.VW_KALEMLER k in srg)
                    {
                        gridView1.AddNewRow();
                        gridView1.SetFocusedRowCellValue("MIKTAR", k.CIKISMIKTARI);
                        gridView1.SetFocusedRowCellValue("BARKOD", k.STOKBARKOD);
                        gridView1.SetFocusedRowCellValue("STOKKODU", k.STOKKODU);
                        gridView1.SetFocusedRowCellValue("STOKADI", k.STOKADI);
                        gridView1.SetFocusedRowCellValue("BIRIM", k.STOKBIRIM);
                        gridView1.UpdateCurrentRow();
                    }
                    if (SecimID > 0 && EvrakTURU == "Satış İrsaliyesi")
                    {
                        Formlar.SatisFaturasi(false, SecimID, false, true);
                    }
                }
            }

     
    9 Haziran 2017 Cuma 08:27

Tüm Yanıtlar

  •   gridView1.DeleteSelectedRows();

    BU kod bloğundan dolayı olabilir mi?


    kdrgny@outlook.com

    9 Haziran 2017 Cuma 08:40
  • Olamaz Çünkü O Kod Bloğunu Kayıtlar 2 Şer 2 Şer Geliyor Diye Eklemiştim.. Form Yüklenirken GridControl e Bir Müdahalede Bulunmak Gerekiyordu.. Asıl Sorun 2 Veya Daha Fazla Seçim Yaptığında En Son Seçileni,, Seçim Sayısı Kadar Açıyor.. Önce Bunu Çözmemiz Gerek.. 
    9 Haziran 2017 Cuma 09:07
  • Foreach içerisinde olduğundan dolayı o kadar açılıyor. buradaki if i foreach dışında çıkar.


    kdrgny@outlook.com

    9 Haziran 2017 Cuma 09:16
  • Maalesef Olmadı.. Bu Seferde En Son Seçileni 1 Kere Açtı..
    9 Haziran 2017 Cuma 09:32
  • Ok .     foreach (int i in IrsaliyeBagla) {

    bu kod parçası ne işe yarıyor. 


    kdrgny@outlook.com

    9 Haziran 2017 Cuma 09:45
  • Seçilen Sayısı Kadar Döngünün Dönmesini Sağlıyor..
    9 Haziran 2017 Cuma 09:51
  • SecimID sadece bir adet irsaliyenin ID değerini içeriyor.

    Faturaya aktarırken sadece bir irsaliyenin ID değerini aktardığınız için sonuncu irsaliyedeki ürünleri alıyor.

    Çözüm önerebilmek için,

    Formlar.SatisFaturasi(false, SecimID, false, true);

    metodunun parametrelerini açıklar mısınız.?.


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    10 Haziran 2017 Cumartesi 09:52
  • public void SatisFaturasi(bool Ac = false, int ID = -1, bool Irsaliye = false, bool Ac1 = false)
            {
                Modul_Fatura.frmSatisFaturasi frm = new Modul_Fatura.frmSatisFaturasi(Ac, ID, Irsaliye, Ac1);            
                frm.Show();
            }
    Sadece Ac1, True Dönüyor,, Yani Seçilen İrsaliyeyi Faturalandırmaya Göre Ayarladım Onu.. Eğer İrsaliye Listesinden Ac1 Geliyorsa,, O Irsaliyeyi Fatura Sayfasında Açıyor.. bool AC= Tekrardan Dönüp Açma İşlemi İçin,, int ID= Faturayı Güncelleme İçin Açmak İçin,, Irsaliye = Irsaliye Güncelleme.. Yani İrsaliye Faturalandırma İçin Ac1=true Olması Yetiyor..  Ama Birden Çok İrsaliye Olunca İşler Karışıyor..

    • Düzenleyen egemenn1453 10 Haziran 2017 Cumartesi 10:37
    10 Haziran 2017 Cumartesi 10:33
  • Formlar.SatisFaturasi(false, SecimID, false, true);

    ve

    Modul_Fatura.frmSatisFaturasi(Ac, ID, Irsaliye, Ac1);

    metodlarının parametrelerini birden çok SecimID değerini kabul edebilecek ve metod yapılarını da bu parametreye göre işlem yapacak hale getirmelisiniz.

    Örneğin: 

    public void SatisFaturasi(bool Ac = false, int[] ID = null, bool Irsaliye = false, bool Ac1 = false)
    {
        Modul_Fatura.frmSatisFaturasi frm = new Modul_Fatura.frmSatisFaturasi(Ac, ID, Irsaliye, Ac1);            
        frm.Show();
    }


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    10 Haziran 2017 Cumartesi 10:47
  • int[]ID Dizisinin İçine SecimID den Gelen Değerimi Aktarmam Gerekiyor??
    10 Haziran 2017 Cumartesi 11:09
  • Seçtiğiniz tüm irsaliye numaralarını,

    int[] ID = new int[] { 1, 4, 56, 72 };

    şeklinde atamalı ve bu değerlere göre veri tablonuzdan bu id değerlerine sahip irsaliyelerin içerdiği ürünleri okutup faturaya eklemelisiniz...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    10 Haziran 2017 Cumartesi 11:41
  • public void SatisFaturasi(bool Ac = false, int[] ID = null, bool Irsaliye = false, bool Ac1 = false)
    {
        Modul_Fatura.frmSatisFaturasi frm = new Modul_Fatura.frmSatisFaturasi(Ac, ID, Irsaliye, Ac1);            
        frm.Show();
    }
    Murat Bey Yukarıdaki Şekilde Yaptığım Zaman (Ac,ID,Irsaliye,Ac1) İçindeki ID Hata Veriyor.. Buraya Ne Şekilde Bir Metod Girmem Gerekiyor?? Ayrıca int[] ID = new int[] { 1, 4, 56, 72 }; Tanımlamasını Nereye Yapacağım?? Bu Kodları Programa Enjekte Ederken Problem Yaşıyorum.. Rica Etsem Daha Açıklayıcı Anlatabilir Misiniz??
    11 Haziran 2017 Pazar 10:29
  • Konu Güncel!!
    16 Haziran 2017 Cuma 13:41
  • public void SatisFaturasi(bool Ac = false, int[] ID = null, bool Irsaliye = false, bool Ac1 = false)
    {
        Modul_Fatura.frmSatisFaturasi frm = new Modul_Fatura.frmSatisFaturasi(Ac, ID, Irsaliye, Ac1);            
        frm.Show();
    }
    

    Bu kodun çalışabilmesi için frmSatisFaturası metodunu,

    public void frmSatisFaturasi(bool Ac = false, int[] ID = null, bool Irsaliye = false, bool Ac1 = false)
    {
        foreach(int secID in ID)
        {
            var secilenler = from s in DB_VWKALEMLER 
                             where s.IRSALIYEID = secID
                             select s;
            foreach(Fonksiyonlar.vWKALEMLER k in secilenler)
            {
                gridView1.AddNewRow();
                // Burada hücreleri k'dan gelen verilerle doldurun...
                gridView1.UpdateCurrentRow();
            }
        }
    }   
    olarak değiştirmelisiniz. Ben diğer kodlarınızı görmediğim için siz ihtiyacınıza uygun eklentiler yapabilirsiniz.


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    16 Haziran 2017 Cuma 15:57
  • Murat Bey Kodları Aşağıdaki Şekilde Programıma Dahil Ettim Ama Hala Aynı Sıkıntı Devam Ediyor.. En Son Seçilen İrsaliyeyi Seçim Sayısı Kadar Açıyor.. Ne Yaptıysam Düzeltemedim.. Konu Hakkında Yardım Lütfen!!

    public void SatisFaturasii(bool Ac = false, int ID = -1, bool Irsaliye = false, bool Ac1 = false, int[] IDD = null)
            {
                Modul_Fatura.frmSatisFaturasi frm = new Modul_Fatura.frmSatisFaturasi(Ac, ID, Irsaliye, Ac1);            
                frm.Show();
            }

    private void SagTikSecFat_Click(object sender, EventArgs e)
            {
                int[] IDD = gridView1.GetSelectedRows();
                foreach (int i in IDD)
                {
                    var secilenler = from s in DB.VW_KALEMLER
                                     where s.IRSALIYEID == SecimID
                                     select s;
                    foreach (Fonksiyonlar.VW_KALEMLER k in secilenler)
                    {
                        gridView1.AddNewRow();
                        gridView1.SetFocusedRowCellValue("MIKTAR", k.CIKISMIKTARI);
                        gridView1.SetFocusedRowCellValue("BARKOD", k.STOKBARKOD);
                        gridView1.SetFocusedRowCellValue("STOKKODU", k.STOKKODU);
                        gridView1.SetFocusedRowCellValue("STOKADI", k.STOKADI);
                        gridView1.SetFocusedRowCellValue("BIRIM", k.STOKBIRIM);
                        gridView1.UpdateCurrentRow();
                    }
                    if (SecimID > 0 && EvrakTURU == "Satış İrsaliyesi")
                    {
                        Formlar.SatisFaturasii(false, SecimID, false, true, IDD);
                    }
                }
    17 Haziran 2017 Cumartesi 10:25
  • Siz irsaliye birleştirmeyi SagTikSecFat_Click ile yapıyorsanız,

    private void SagTikSecFat_Click(object sender, EventArgs e)
    {
        int[] irsaliyeler = gridView1.GetSelectedRows();
        foreach (int i in irsaliyeler)
        {
            var secilenler = from s in DB.VW_KALEMLER
                             where s.IRSALIYEID == gridView1.GetRowCellValue(i, "IRSALIYEID") 
                             select s;
               // "IRSALIYEID" yerine gridView1 deki irsaliye id değerlerini içeren kolon adını yazmalısınız...
            foreach (Fonksiyonlar.VW_KALEMLER k in secilenler)
            {
                gridView1.AddNewRow();
                gridView1.SetFocusedRowCellValue("MIKTAR", k.CIKISMIKTARI);
                gridView1.SetFocusedRowCellValue("BARKOD", k.STOKBARKOD);
                gridView1.SetFocusedRowCellValue("STOKKODU", k.STOKKODU);
                gridView1.SetFocusedRowCellValue("STOKADI", k.STOKADI);
                gridView1.SetFocusedRowCellValue("BIRIM", k.STOKBIRIM);
                gridView1.UpdateCurrentRow();
             }
        }
        if (SecimID > 0 && EvrakTURU == "Satış İrsaliyesi")
            Formlar.SatisFaturasii(false, SecimID, false, true, IDD);
    }




    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...


    17 Haziran 2017 Cumartesi 11:47
  • Murat Bey Cevap İçin Teşekkür Ederim Ama Aşağıdaki Şekilde Hata Verdi,, Üçüncü Argümana Ne Yerleştireceğimi Bulamadım.. Data.OperationComleted istiyor ama araştırmalarıma rağmen bişe bulamadım.. Konu Hakkında Yardım Lütfen!!


    20 Haziran 2017 Salı 16:41
  • Üçüncü parametre yok. Siz fazladan bir virgül koymuşsunuz. Son virgülü silin...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    20 Haziran 2017 Salı 18:47
  • Virgülü kaldırınca da aynı hatayı veriyor.. 3. Argüman yok diyor.. Ben Virgülü hatayı gösterebilmek için koydum.. 

     where s.IRSALIYEID == gridView1.GetRowCellValue(i, "IRSALIYEID") 
    şeklinde kullanabilmek için "IRSALIYEID" den sonra 3. argüman gerekiyor..
    20 Haziran 2017 Salı 19:21
  • DevExpress kendi dökümanlarında iki parametre ile çalışır diyor. Başka bir sorun olmalı. Belki de,

     where s.IRSALIYEID == Convert.ToInt32(gridView1.GetRowCellValue(i, "IRSALIYEID"))

    türünde bir dönüşüm gerektiriyordur.

    Mutlaka üçüncü parametreyi girecekseniz null girin.


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...


    20 Haziran 2017 Salı 20:29
  • Murat Bey Dediğiniz Gibi Convert ile Düzelttim,, Çalıştı Fakat,, Bu Seferde Sadece Son Seçileni 1 Kere Açıyor.. Önceki Seçilmişleri Eklemiyor.. 
    20 Haziran 2017 Salı 20:55
  • Konu Güncel!!
    29 Haziran 2017 Perşembe 13:04
  • Merhaba egemenn1453 ,

    senin örneğine yakın kendi kullandığım bir örneği paylaşacağım.

    benim örneğimde seçtiğim verileri yazıcıya gönderiyorum.

      #region 'CellValueChanging'
            void gvMainKasa_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
            {
                GridView view = sender as GridView;
                if (e.RowHandle >= 0)
                {
                    if (e.Column.FieldName == "IslemSec")
                    {
                        bool IsTrue = (bool)e.Value;
                        if (IsTrue)
                        {
                            FormActiveControls.SetKasaId(new KasaGenericList()
                            {
                                Active = true,
                                KasaId = view.GetRowCellValue(view.FocusedRowHandle, view.Columns["KasaId"]).ToInt()
                            });
                        }
                        else
                        {
                            KontrolleriBosalt();
                            FormActiveControls.ToKasaClear();
                            FormActiveControls.ActiveFormClear();
                        }
                    }
                }
            }
            #endregion

    verileri seçtiğim ve listeme yüklediğim kısım,

     public static void SetKasaId(KasaGenericList data)
        {
            KasaIslemleri.Add(new KasaGenericList()
            {
                Active = data.Active,
                KasaId = data.KasaId
            });
        }

    ve yazdırma kısmıda böyle,

     #region '1.Şart CheckEdit olan Kayıtlar - İşlem Seç'
                    if (FormActiveControls.KasaIslemleri.Select((r) => r.Active == true).FirstOrDefault())
                    {
                        List<KasaItem> listCheckQuery = new List<KasaItem>();
                        int conuter = 1;
                        for (int i = 0; i < FormActiveControls.KasaIslemleri.Count; i++)
                        {
                            List<KasaItem> listele = KasaBusiness.GetKasaById(FormActiveControls.KasaIslemleri[i].KasaId);
                            listCheckQuery.Add(new KasaItem()
                            {
                                SiraNo = conuter++,
                                Tarih = listele.Select((r) => r.Tarih).FirstOrDefault(),
                                MahalleKoy = listele.Select((r) => r.MahalleKoy).FirstOrDefault(),
                                AdaParsel = listele.Select((r) => r.AdaParsel).FirstOrDefault(),
                                AdSoyad = listele.Select((r) => r.AdSoyad).FirstOrDefault(),
                                IslemTuru = listele.Select((r) => r.IslemTuru).FirstOrDefault(),
                                Aciklama = listele.Select((r) => r.Aciklama).FirstOrDefault(),
                                Girisler = listele.Select((r) => r.Girisler).FirstOrDefault(),
                                Cikislar = listele.Select((r) => r.Cikislar).FirstOrDefault()
                            });
                        }
                        //******************************************************************************************
                        KasaMainPrint report = new KasaMainPrint();
                        report.LoadLayout(Application.StartupPath + @"\\Reports\\KasaMainPrint.repx");
                        report.Landscape = true;
                        report.DataMember = string.Empty;
                        report.DataSource = listCheckQuery.ToList();
                        SetTextWatermark(report);
                        KasaDocRaportviewer.PrintingSystem = report.PrintingSystem;
                        report.CreateDocument();
                    }
                    #endregion

    aslında mantık aynı umarım yardımcı olur.

    2 Temmuz 2017 Pazar 13:26
  • Cevap İçin Teşekkür Ederim Ama Sabahtan Beri Kod Yazmaktan Artık Düşünemez Haldeyim :) Daha Anlaşılır Bir Şekilde Anlatabilirsen Çok Sevinirim.. Kusura Bakma Gerçekten Şu An HiçBİrŞey Anlamadım.. Yani Hangi Kodu Nereye Ve Ne Şekilde Enjekte Etmem Gerekiyor?? Kendi Kodlarımı Yukarıda Paylaştım En Azından Onlardan İlham Alarak Bana Yardımcı Olabilirsen Sevinirim..
    2 Temmuz 2017 Pazar 22:02
  • Merhaba egemenn1453,

    Sadece senin anlatmak istediğin buna yakın bir mantık olduğu için kodları ben paylaştım.Sonuçta gelen verilerden benim seçtiklerimi alıp bunları başka bir yerde tutmak veya raporlamak gibi.Burada ben şunu öneririm sonuçta seçtiğin her verinin bir Id değeri var ve bunları bir yerde tut, bu List veya geçici tablo veya view 'de olabilir.verileri gönder daha sonra oradan çağır,Tek Tabloda topladığın verileri de kendi içinde alış ve satış ayırma kriterleri varsa load ederken ona göre ayırırsınız. Eğer yine halledemezseniz yardımcı olmaya çalışırım.mailim profilde var yazabilirsiniz.kolay gelsin. 


    3 Temmuz 2017 Pazartesi 11:19
  • Konu Güncel!!
    8 Temmuz 2017 Cumartesi 12:43