Veritabanı Tasarım Önerisi?
Merhaba arkadaşlar, öncelikle şuan hali hazırda güzellik salonum için bir satış takip sistemi yaptım.
Fakat benim yapmak istediğim daha detaylı bir durum çünkü şuan ki sistemde artık çok fazla aksaklık olmaya başladı ve sistem sıkıntı vermeye başladı.
Sistem Gereksinimleri
- Müşteriler kendi panelinden satın aldıkları hizmetleri, kimden satın aldıklarını, satın aldıkları ürünlerin kaç taksitinin kaldığını. Hangi taksitleri ödeyip ödemediğini ve sistem üzerinden iyzico sanal pos sayesinde kredi kartı ile ödeme ve randevu oluşturma yapabilecekler.
- Satış danışmanı üye kayıt, satış ekleme-çıkarma, ödeme takip(ekleme-çıkarma) yapabilecekler.
- Yönetici hizmet ekleme-çıkarma, satış danışmanı ekleme-çıkarma, mali kayıtları görme, site istatistiklerini görme ve diğer tüm işlemleri yapabilecekler.
- Ödeme takip kısmı ücretini ödemeyen müşterilere uyarı mesajı gitmesi - sistemde ödeme yapmayan üyeleri detaylı bir şekilde işlemlerine kadar gösterme.
Güncellenmiş sistem gereksinimleri tamamen bu şekildedir. Web ve Mobil üzerinden uygulamayı geliştireceğim için veritabanı tasarımı aşırı önemli. Çünkü satış işlemlerinde taksit seçeneği var ve ödemeleri şuan elle nakit şekilde alıyoruz. O yüzden sistemde nakit ve kredi kartı girdisi mevcut.
Benim tasarladığım veritabanı aşağıda ki şekildedir. Ödemeler toplasında satışta belirlenen taksit tutarı kadar o satiş id sine ait ödemelerin girdisi oluyor. Bu yüzden satış kısmında birden çok hatayla karşılaşabiliyorum. Sitede ki konularımdan bakabilirsiniz.
Ayrıyetten kapora muhabbeti de sistemde mevcuttur. Kayıt olan müşteri kapora verdiyse genel satıştan düşüp taksitlendirme yapılmaktadır.
Dükkan Tablosu
Müşteri Tablosu
Ödemeler Tablosu
Satışlar Tablosu
Ödeme Takip Tablosu
Ürünler Tablosu
Yönetim Tablosu
Birçok hatam olabilir siz değerli bilgili arkadaşlarımdan, abilerimden öğütler ve örnekler bekliyorum. Bende bu doğrultuda hatalarımı düzeltim daha sistematik bir uygulama geliştirmek istiyorum.
Sisteme kayıt alırken şu yöntemle şu verileri kayıt et gibi önerilerinize de açığım cevap veren, vermeyen herkese şimdiden teşekkür ederim.
tablo gayet işlevsel gözüküyor. bir tabloya bakıp gerçekleşecek işlemlerin tamamını kafamda canlandıramadığımdan bir önerim yok. dükkan ile takip gereksiz gibi duruyor, dükkanı zaten ne işe yaradığını da anlamadım. takip tablosuna gelirsek, ikincil değerin müşteri id olduğunu görüyorum, burada her müşteri için bir kez takip olayı gerçekleşecek ise müşteri tablosu ile birleştirmen daha mantıklı. hayır bir müşteriye birden fazla takip uyguluyoruz diyorsan, bu şekilde olabilir.
taksit sorusunu hiç anlamadım. paytr ile çalışıyorum ben, ödeme ve taksitlerden onlar sorumlu, komisyon alıyorlar sadece. siz kredi kartına yaptığınız taksitleri online değilde elden mi alıyorsunuz, elden alıyorsanız 3 taksit yapıldığında 3 kere iş yerinize gelip tek tek mi ödüyor taksitleri anlamadım ki.
elden ve kartsız işlemlerde taksit girdisi için sipariş tablosu şöyle olabilir fiyat, taksit, ödenen,
ürün fiyatı sabit olduğu için, değeri ürün tablosundan alıyorsun zaten. sipariş oluşturulur taksit tutarı belirtilir, ilk ödeme kaydedilir
fiyat 1500, taksit 3, ödeme yok diyelim
$taksitler = explode(",", $taksit); // taksitler 3,0 şeklinde kayıt edilir, 3 taksit tutarı virgülden sonrası kalan taksit için hesaplama değeri
$taksittutari = ($fiyat / $taksitler[0]); //taksit için ne kadar ödeceğini verir
$kalanodeme = ($fiyat - $odenen); //kalan borcu verir
$yeniodeme = ($odenen + $odeme); //yeni ödeme esnasında, yapılan ödeme miktarını mevcut ödenen tutara ekleyerek yeni bir ödenen miktarı oluşturur örneğin 150 verdi 150 daha verdi 300 odenen oldu veritabanını güncelledin bu değer ile
$kalantaksit = ($taksitler[0] - $taksitler[1]);
$kalantaksitguncelle = ($taksit + 0.1);
bu değişkenleri oluşturduktan sonra veriyi istenilen formatta ekrana basabilir ve $kalantaksitguncelle, $yeniodeme değişkenleriyle veritabanında gerekli yerleri güncelleyerek girdi oluşturabilirsin
formülü üretcem diye baya vakit harcadım ya. veritabanıda "detayda belirttiğin gibi satıştaki tasit sayasına göre girdi" oluşturmayı en kısa böyle yapabilirsin ne avatajı oldu 100 sipariş için 12 taksit uygulasanız fazladan 1 tablo ve içerisinde 1200 değer olacaktı bundan kurtuldunuz
- taksitte ne kadar ödendi hangi tarihte ödendi gibi bilgileri ayırmak istiyorsanda oda farklı bir konu sonuçta detayda taksit sayısına göre ayrı ayrı girdi oluşturmak istiyorum dememişsiniz.