Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
Kafa bir noktadan sonra durunca gerçekten mantıklı düşünemiyorum. Şimdi 4-5 aydır üzerinde çalıştığım projenin sonuna geldim diyebilirim. Yaptığım şey şirket için bir intranet. Kafamın durduğu nokta ise raporlama kısmında. Önce modülleri bir anlatayım onun üzerinden nasıl birşey yapmak istediğimi zaten anlayacaksınız.

Projeler modülü altında Teklifler tekliflere bağlı revize teklifler, notlar, dosyalar, Tekliflere veya Revize Tekliflere bağlı siparişler, siparişlere bağlı ürünler, ürünlerin stok bilgileri, ürünlerin sevkiyat bilgileri, Tekliflere bağlı teknik servis işlemleri, teknik servis işlemlerine bağlı görevler, görevlere bağlı raporlar. Görüldüğü gibi dallanıp budaklanıyor.

İş bunu raporlamaya geldiği zaman nasıl bir mantık yürütmem konusunda sıkıntı yaşadım. Çünkü çıkan raporu veritabanında saklamam lazım. Geçmişe yönelik raporların incelenebilmesi lazım. Raporda da şöyle birşey gerekiyor. (Ana işlem projeler)

Her haftanın son günü 18:30 da cronjob ile işlemlerimi yapacağım. Yaptığım işlemde o hafta güncellenmiş olan projelerin o haftaki yapılmış olan işlemlerini listelemem gerekiyor.

Hiyerarşiyi şöyle listeleyecek olursak eğer:

Projeler -> Teklifler (Revizeler | Dosyalar | Notlar) -> Siparişler (Lojistik Faaliyetleri | Stok Hareketleri) -> Teknik Servis -> Görevler -> Teknik Eleman Raporları

En alttaki modülde gerçekleşen güncelleme bir öncekinden başlayıp en üste kadar update tarihi atıyor. Yani gerekli veriler elimde mevcut. İstenilen rapor verisini göstermede de sıkıntım yok. İş bu raporu saklamaya gelince ortaya çıkıyor. Bu hiyerarşide bir çıktı aldığım zaman bunu nasıl saklayacağım
bir ay sonra
Bahsettigin tarzda, devletin bir kurumuna ailelere ait bilgilerin kaydedildigi excel vari bir form sistemini gelistirdik, ayni dertleri bizde bu formlari kaydederken yasadik, cünkü formlar devamli degisebiliyor veya birseyler eklenip cikarilabilliyor. Raporlar icin ayri tablolar olusturup her alani oraya kayederek cözdük. Cünkü örnegin sende;
A iscisi sistemden silinmesi durumunda veya B Siparisindeki ürünün adinin veya ayni stok numarasiyla baska bir ürün girilmesi vb. durumlarda kullanimda olan tablolari kullanamazsiniz bu tarz problemler cikmamasi icin, raporu ve bu tarz kayitlarin hepsini ayri ayri (raporuna göre birkac) rapor tablosu altinda toplaman gerek..
İşi çözdüm ama şu şekilde çözdüm diyebilirim. Her modülün kendisine ait verisi olduğu için rapor için oluşturduğum mysql sütununda json formatında verilerimi sakladım. Her birine tablo açmaktansa bu şekilde rahatlıkla çözebileceğimi gördüm. Raport için de type adlı bir sütun oluşturup bunun içine modülün adını yazdım. Buna göre verilerimi çekip rapor olarak ekrana basıyorum. Daha sonra kullanıcı ister veritabanı aracılığı ile web sayfasından görüntülüyor isterse de kullanmış olduğum laravel excel sınıfı ile bilgisayarına indirip görüntülüyor. Ama açık konuşayım excel tarafını yazarken veritabanı kısmından daha çok zorlandım diyebilirim. Şu sheet te şu veriler olsun şu sütunda şu görünecek derken kodları çorba etmemek için baya uğraştım diyebilirim.