Vade günleri ve tanınan opsiyonlar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Vade günleri ve tanınan opsiyonlar

Mesaj gönderen delphist »

S.a. ilk önce arkadaşlar...Ramazan ayınız mübarek olsun ve Ramazan ayında sorduğum ilk soru...Sorduğum soru mantık olarak nasıl yapabilirim bunu istiyorum heralde code tarafını halledebilirim.

Ürünlerimizi satan bayi standart vade suresine pek uymuyo. O yuzden bizimkiler de istiyo ki 01.01.2006 ile 05.10.2006 tarihleri arasında bizim faturaların ortalama vade tarihini ve onların bize odediklerinin ortalama vade tarihini bulup aradaki farkla onlara kaç gun opsiyon sağladıklarını gormek istiyolar. İsin kotu tarafı faturalar ve odemeler bire-bir degil. Örneğin cari farklı gunlerde 10-15-25 fatura tutarlarında mal almış 20 gun sonra 45 tutarında odeme yapmış.

Umarım anlatabilmişimdir arkadaşlar...Cevabınızı bekliyorum. İyi Çalışmalar....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Mantık olarak önce kendimce ilkeleri belirlerdim.
(Bunlar genellenmesin kural/şart değildir, programcı tarafından değerlendirme amaçlı ilkelerdir)

İlkeler :
1. İlk fatura ilk ödenir.
2. Sıralı gidilir.
3. Yarım ödenen fatura ödenmemiş sayılır.
4. Yarım ödeme yapıldığında, ödenen kısım (+) bakiye olarak tutulur.

Şimdi bunları uygulamaya alalım...

* 10 / 15 / 25 şeklindeki faturalara ait yapılan ödeme 45 ise, kapsadığı fatura kümesi ödenmiş sayılacaktır. ( 1. ilke )

* 10 + 15 = 25 ödenmiş sayılır. ( 2. ilke )

* 45 - 25 = 20 son faturaya yetmez yarım ödeme kabul edilir. (3.ilke)

* ödenen kısım (+) bakiye olarak tutulacağından elde var +20 şeklinde beklemeye alınır. Bu kısmı ödemeseler de olurdu yani :lol: (4.ilke)

- Bunu koda bu şekilde dökerseniz;

* "Ödeme Tarihi" ve "Tutarı" ayrı bir veritabanında tutulacak.

* Ödemenin hangi faturaları kapsadığı sorgulanıp bu faturalara ait "ÖdemeTarihi" hanesi, aynı tarih ile doldurulacak.

- Geriye opsiyon hesabı kalıyor ki, ( ÖdemeTarihi - FaturaTarihi ) farkı opsiyonu vereceğine göre bunlar 0..10 11..20 21..30 31..40 olarak ayrı ayrı gruplanarak raporlanacak.

- Soruyu doğru anlamışsam, cevap kurgusunu ben olsam bu şekilde yapardım...
Resim
Resim ....Resim
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

s.a. abi açıklaman için çok teşekkür ederim. Allah razı olsun ama biraz daha ayrıntıya girersen anlayacağıma ve bunu uygulayabileceğime eminim. Lütfen size zahmet biraz daha açıklamanızı talep ediyorum. İyi Çalışmalar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@delphist yazdı:Sorduğum soru mantık olarak nasıl yapabilirim bunu istiyorum heralde code tarafını halledebilirim.
- Bu bağlamda yeterince açık yazdığımı değerlendiriyorum aslında.

* Bir veritabanı kurgusu yaparken "Rapor için istenenler nedir ?" sorusunun cevabını irdeleyip, ona göre veri giriş alanları oluşturulur.

- Şimdi bizden istenen belli. Ben de dedim ki, bu istenenleri karşılamak için -spontan hesaplıyorum- iki tablo gerekiyor.

* Birinci tablo bayilerin size yaptığı geri ödemeler ve tarihlerini tutacak tablodur. Buna Tablo1 diyelim.

* İkinci Tablo ise, bayilere verdiğiniz her ürün için kestiğiniz faturaların noları, fatura kesim tarihi, fatura için yapılan bayi ödemesi tarihi olan tablodur. Bu da Tablo2 diyelim.

- Tablo1 sadece bayinizin yaptığı ödemeler olacak. Sadece sizin kasanıza girenler.

- Tablo2 fatura hareketleri olacak, fatura kesilince yeni kayıt eklenecek, Tablo1'e ödeme yapılıp eklenen rakamlardan daha önce ödenmiş faturaların tutarları çıkarılacak.

- Kalan (+) bakiye sıradaki fatura için işleme alınacak. Eğer fatura tutarını tam karşılıyorsa fatura ödeme tarihi güncellencek ve böylece + bakiye bu fatura kadar daha kendiliğinden eksilecek.

- Bu işlem sıradaki faturanın ödenemeyecek kadar olana dek tekrarlanacak.

- Bu sistemdeki düşünülmesi gereken nokta şu olabilir. (+) bakiye olarak 100 YTL kaldı ve sıradaki fatura 120 YTL. iken takip eden 3 fatura 20, 20 ve 20 ise bunlar ödendi varsayılmayacak. Taa ki 120 YTL barajını geçecek kadar ödeme gelene kadar.

- iyi mi kötü mü buna sen karar verecek ve ona göre düzenlemeni yapacak, ilkeler üzerinde değişiklik yaparak uygulamanı düzenleyeceksin.

- Bu kadar açıklama yeterlidir umarım çünkü sanki kod yazmışım gibi oldu :)
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Kod: Tümünü seç

        Tablo1
        ------
   Tarih     Yapılan Ödeme
----------  ---------------
01.05.2006     100 YTL
10.05.2006      70 YTL
20.05.2006      50 YTL
21.05.2006      20 YTL
---------------------------
Ödeme Toplam : 240 YTL

Kod: Tümünü seç

        Tablo2
        ------
Fatura Tarih   Miktar   Geri Ödeme Tarih
------------   -------  ----------------
01.01.2006     100 YTL     01.05.2006
08.02.2006      50 YTL     10.05.2006
11.02.2006      20 YTL     10.05.2006
18.02.2006     100 YTL     -
22.04.2006      10 YTL     -
01.05.2006      10 YTL     -
03.05.2006      20 YTL     -
----------------------------------------
Ödenmiş Fat. : 170 YTL
(+) Bakiye   : 240-170 = 70 YTL
Sıradaki Fat.: 100 YTL
Bu da tablo halinde veritabanın belki daha da anlaşılır olmak yolunda faydası olur. Benden bu kadar ... :idea:
Resim
Resim ....Resim
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Muharrem abi bence olayı çok güzel ve net bir şekilde açıklamışsın.
Kendi adıma teşekkür ediyorum. Gün olur benzer bir sorunla karşılaşırsam çözüm hazır ;)
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Muharrem abi teşekkür ederim. Allah razı olsun...Hayırlı Sahurlar diliyorum sana :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Memnun oldum.

- Çalışmalarınızda başarılar dilerim.
Resim
Resim ....Resim
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Ortalama vadeyi bir ara lks programı için kurcalamıştım. İlk uğraştığım zamanlar günün tarihini kullanmadığını zannediyordum. Ama kullanıyormuş. Bununla ilgili bir mesajı aşağıdaki linkte bulabilirsiniz. Ortalama mantığını öğrenmek açısından linki verdim.
http://tech.groups.yahoo.com/group/logo ... ssage/1439
Yukarıdaki mesajdaki mantığa göre enazından faturaların ortalama vadesini dökersiniz.

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@ofenX

- Anladığım kadarıyla sorulan soruda, düzensiz geri ödemeden dolayı, Faturaların ödendi denecek tarihin adının konmasında bir sıkıntı vardı.

- Bu adı koymak için ilke belirlemek gerektiğinin altını çizdim. Bundan sonra geriye zaten basit bir gün hesabı ve aritmetiksel ortalama hesabı kalıyor.
Resim
Resim ....Resim
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,

Eskisi gibi sürekli internet bağlantım yok. Arasıra internet kafelerden takılıyorum.
Muharrem Abi'ye ek olarak giden malların vade tarihinin de yazılması gerekir sanırım. ayrıca Muharrem Abi eksik ödemeleri hiç kaale almayın diyor. Lks programında hepsini hesaplıyor.

Daha önce lks için bunu karıştırdığımı söylemiştim. Bir mantık vermesi açısından size bir örnekle açıklayayım. Örnek üzerinde daha iyi anlaşılır.

Kod: Tümünü seç

SATIŞ
Fatura Tarihi     Vade                  Tutar
---------------   ---------------   -------------
10/07/2006      15/12/2006            400
08/10/2006      15/10/2006            500
12/10/2006      15/11/2006            300

!!!!!  İlk fatura ile ilk vade aynı değil. 

ÖDEMELER

Ödeme Tarihi        Tutar
-----------------    ----------------
13/11/2006                750
05/12/2006                300
15/12/2006                150
Yukarıdaki verilere göre

Kod: Tümünü seç

Cari ortalama ödemesi 
Fatura Vade Tar.   Fat.İşlem Tarihi      Fark Gün   Fat.Tut               Toplam
--------------------  ------------------ -----------   ---------         -------------
15/12/2006            10/07/2006          158   *      400                  63200
15/10/2006            08/10/2006              7   *      500                   3500
15/11/2006            12/10/2006             34  *      300                 10200
                                                               ____            _________
                                        Toplam              1200                 76900


Cari ortalama vadesi=76900/1200
                               =64,083...
                                =64 gün 

Carinin yaptığı ödemelerin erken ödeme veya geç ödeme durumunu öğrenmek için aşağıdaki tabloyu kullanabiliriz.

Kod: Tümünü seç

ÖDEME ANALİZİ                            Kapanan
İşlem Tarihi    Vade Tarihi    Gün     Tutar            Toplam 
---------------  -------------  --------  --------------    ---------------------
13/11/2006     15/10/2006    29    *      500              14500
13/11/2006     15/11/2006     -2    *      250                -500
05/12/2006     15/11/2006     20   *        50                1000
05/12/2006     15/12/2006    -10   *      250               -2500
15/12/2006     15/12/2006        0  *      150                      0
                                                  ---------         ------------
                                                   1200               12500

Ortalama Gecikme =12500/1200
                            =10,416
                             =10 Gün

Örneğe göre müşteri 10 gün geç ödemiş görünüyor. Yukarıda çıkan rakamın eksi (-) çıkması müşterinin erken ödeme yaptığını gösterir.


Ödemeyi 13/11/2006 500
05/12/2006 550 yapınca gecikme 15 gün oluyor.

Ödemeyi 13/11/2006 250
05/12/2006 800 yapınca gecikme 19 gün oluyor.

Yukarıdaki örnek sizin bahsettiğiniz gibi ödeme planına uymuyor.

Bu durumda siz faturalarınızı vade tarihine göre sıralatıp. Ödemeleri de işlem tarihine göre sıraladıktan sonra ödemeleri faturalara göre parçalayacaksınız ve yukarıdaki gibi hesaplatacaksınız.

Ben bunu lks de bir örnek yaparak mantığını çıkardım. Belki mantığı işinize yarar.

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Cevapla