Fatura-Tahsilat Kapatma Hesabı

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
.

Merhaba Arkadaşlar,
Cari hesaplarda kullanmak için Fatura ile Tahsilat eşleştirmesi yapıp. Tahsilatların gecikme gün sayısını tespit etmeye çalışıyorum.
Ancak excel bu kez ürettiğim çözüme yetersiz kaldı...
__
FATURA sayfasındaki
İlk faturamız 30665 nolu fatura 7.381,99 TL
Bu faturayı kapatabilmek için
TAHSİLAT sayfasından sırayla ödemeleri alarak RAPOR sayfasını oluşturmamız gerekiyor.

İlk tahsilatımız 186,44 TL Tamamını alıyoruz,
Sonraki 1.200 TL tamamınız alıyoruz.
Sonraki 2.000 TL tamamınız alıyoruz.
Sonraki 1.500 TL tamamınız alıyoruz.
Sonraki 1.400 TL tamamınız alıyoruz.
Şuana kadar aldığımız ödeme tutarı 6.286,44 TL oldu.

Bir sonraki ödeme 1.500 TL
1.500 TL daha alırsak fatura tutarımız aşmış olacak.
O yüzden bu ödemenin bir kısmınızı almamız gerekiyor.

Yani sonraki ödemeden 1.095,55 TL alıyoruz.
Kalanını (404,45 TL) sonraki faturada kullanmak için bırakıyoruz.
---
Bir sonraki faturamız 366,01 TL
Artık ilk sıradaki ödememiz 404,45 TL
Yine bu ödemeden ihtiyacımız kadar olan 366,01 TL alıyoruz.
Kalan ödeme 38,44 TL
---
Bu işlemi zorlaştıran durumlardan birisi
fatura tutarı ödemelerden yüksek olabilir, yani ödemeleri bölmemiz gerekiyor.
Bazende ödeme tutarı faturadan yüksek olabilir. Bu kezde faturayı bölmemiz gerekiyor.
---
İşlemi basite indirmek için tüm tutarları 0,01 Kuruş olarak satır satır yapıp ondan sonra işlemek istedim
Ancak excel sayfasında satır sayısı yetersiz kalıyor...

Aklınıza gelen çözüm önerilerini bekliyorum...
.
 

Ekli dosyalar

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Dosyanız eklidir.
Bu örnekten hareketle gün hesaplarını yapabilirsiniz.
 

Ekli dosyalar

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
.

Merhaba Sy turist, iyi akşamlar...
siz soruyu çok basit olarak algılamışsınız...

Tablo muhasebe programlardan çekerken zaten sizin yaptığınıza benzer şekilde.
Borç-Alacak aynı alanda ve bakiyeyi veriyor.
İlave olarak fatura ve tahsilat sıralaması farklı.

Ben bunları iki sayfaya ayırıp vade ve ödenme tarihine göre sıralamayı değiştiriyorum.

Bu aşamadan sonra vadesi gelen ilk fatura için (ki zaten fatura ilk sırada oluyor)
ilk ödemeyi ne zaman almışım bunu bulmaya çalışıyorum.
Amaç vade ile ödeme arasındaki gün farkını bulmak ve ödenmiş olsa bile tahsili gecikmelimi yapılmış tespit etmek.

Yani RAPOR sayfasındaki sonuca ihtiyacım var.
.
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Ekli dosyaya bakınız.
Sonuçları manuel olarak da kontrol edebilirsiniz.
 

Ekli dosyalar

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
.

Paylaştığınız raporlamaları yapabilecek seviyedeyim zaten.

Yapmaya çalıştığım RAPOR sayfasındaki sonuçtur. Amacım ayrıntılı analizdir. Direk şu faturada şu kadar gün kaybımız var.
Bu bilgilerle şu fatura döneminde bu kadar zarar var vs. şeklinde yeni raporlar verisi üretebilmek.

.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,760
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bu kodu rapor sayfasında bir çalıştır.
birazcık karışık oldu galiba.

Kod:
Sub verial()

Worksheets("RAPOR").Range("A2:K" & Rows.Count).ClearContents
Worksheets("RAPOR").Range("A2:K" & Rows.Count).Interior.ColorIndex = xlNone

sat = 2
sat1 = 2

For r = 2 To Worksheets("FATURA").Cells(Rows.Count, "a").End(3).Row
aranan1 = Sheets("FATURA").Cells(r, 6).Value
veri = aranan1

ttt = WorksheetFunction.CountA(Worksheets("RAPOR").Range("k1:k65000")) + 1
For i = sat1 To Worksheets("TAHSİLAT").Cells(Rows.Count, "a").End(3).Row

atla1:
bulunan1 = Sheets("TAHSİLAT").Cells(i, 7).Value

topla = WorksheetFunction.Sum(Worksheets("RAPOR").Range("k" & ttt & ":k" & 10000)) + bulunan1
topla2 = WorksheetFunction.Sum(Worksheets("RAPOR").Range("k" & ttt & ":k" & 10000))
If veri > topla Then
Sheets("RAPOR").Cells(sat, 1).Value = Sheets("FATURA").Cells(r, 1).Value
Sheets("RAPOR").Cells(sat, 2).Value = Sheets("FATURA").Cells(r, 2).Value
Sheets("RAPOR").Cells(sat, 3).Value = Sheets("FATURA").Cells(r, 3).Value
Sheets("RAPOR").Cells(sat, 4).Value = Sheets("FATURA").Cells(r, 4).Value
Sheets("RAPOR").Cells(sat, 5).Value = bulunan1

Sheets("RAPOR").Cells(sat, 7).Value = Sheets("TAHSİLAT").Cells(i, 1).Value
Sheets("RAPOR").Cells(sat, 8).Value = Sheets("TAHSİLAT").Cells(i, 2).Value
Sheets("RAPOR").Cells(sat, 9).Value = Sheets("TAHSİLAT").Cells(i, 3).Value
Sheets("RAPOR").Cells(sat, 10).Value = Sheets("TAHSİLAT").Cells(i, 4).Value
Sheets("RAPOR").Cells(sat, 11).Value = bulunan1
Else

Sheets("RAPOR").Cells(sat, 1).Value = Sheets("FATURA").Cells(r, 1).Value
Sheets("RAPOR").Cells(sat, 2).Value = Sheets("FATURA").Cells(r, 2).Value
Sheets("RAPOR").Cells(sat, 3).Value = Sheets("FATURA").Cells(r, 3).Value
Sheets("RAPOR").Cells(sat, 4).Value = Sheets("FATURA").Cells(r, 4).Value
Sheets("RAPOR").Cells(sat, 5).Value = veri - topla2

Sheets("RAPOR").Cells(sat, 7).Value = Sheets("TAHSİLAT").Cells(i, 1).Value
Sheets("RAPOR").Cells(sat, 8).Value = Sheets("TAHSİLAT").Cells(i, 2).Value
Sheets("RAPOR").Cells(sat, 9).Value = Sheets("TAHSİLAT").Cells(i, 3).Value
Sheets("RAPOR").Cells(sat, 10).Value = Sheets("TAHSİLAT").Cells(i, 4).Value
Sheets("RAPOR").Cells(sat, 11).Value = veri - topla2
sat = sat + 1
r = r + 1

bulunan1 = Sheets("TAHSİLAT").Cells(i, 7).Value
aranan1 = Sheets("FATURA").Cells(r, 6).Value


tutar = (veri - topla2)
'If aranan1 < tutar Then
If topla - veri - aranan1 > 0 Then

Sheets("RAPOR").Cells(sat, 1).Value = Sheets("FATURA").Cells(r, 1).Value
Sheets("RAPOR").Cells(sat, 2).Value = Sheets("FATURA").Cells(r, 2).Value
Sheets("RAPOR").Cells(sat, 3).Value = Sheets("FATURA").Cells(r, 3).Value
Sheets("RAPOR").Cells(sat, 4).Value = Sheets("FATURA").Cells(r, 4).Value
Sheets("RAPOR").Cells(sat, 5).Value = aranan1
Sheets("RAPOR").Cells(sat, 7).Value = Sheets("TAHSİLAT").Cells(i, 1).Value
Sheets("RAPOR").Cells(sat, 8).Value = Sheets("TAHSİLAT").Cells(i, 2).Value
Sheets("RAPOR").Cells(sat, 9).Value = Sheets("TAHSİLAT").Cells(i, 3).Value
Sheets("RAPOR").Cells(sat, 10).Value = Sheets("TAHSİLAT").Cells(i, 4).Value
Sheets("RAPOR").Cells(sat, 11).Value = aranan1

sat = sat + 1
Sheets("RAPOR").Cells(sat, 1).Value = Sheets("FATURA").Cells(r, 1).Value
Sheets("RAPOR").Cells(sat, 2).Value = Sheets("FATURA").Cells(r, 2).Value
Sheets("RAPOR").Cells(sat, 3).Value = Sheets("FATURA").Cells(r, 3).Value
Sheets("RAPOR").Cells(sat, 4).Value = Sheets("FATURA").Cells(r, 4).Value
Sheets("RAPOR").Cells(sat, 5).Value = topla - veri - aranan1
Sheets("RAPOR").Cells(sat, 7).Value = Sheets("TAHSİLAT").Cells(i, 1).Value
Sheets("RAPOR").Cells(sat, 8).Value = Sheets("TAHSİLAT").Cells(i, 2).Value
Sheets("RAPOR").Cells(sat, 9).Value = Sheets("TAHSİLAT").Cells(i, 3).Value
Sheets("RAPOR").Cells(sat, 10).Value = Sheets("TAHSİLAT").Cells(i, 4).Value
Sheets("RAPOR").Cells(sat, 11).Value = topla - veri - aranan1

i = i + 1


Else
i = i + 1
Sheets("RAPOR").Cells(sat, 1).Value = Sheets("FATURA").Cells(r, 1).Value
Sheets("RAPOR").Cells(sat, 2).Value = Sheets("FATURA").Cells(r, 2).Value
Sheets("RAPOR").Cells(sat, 3).Value = Sheets("FATURA").Cells(r, 3).Value
Sheets("RAPOR").Cells(sat, 4).Value = Sheets("FATURA").Cells(r, 4).Value
Sheets("RAPOR").Cells(sat, 5).Value = bulunan1 - tutar

Sheets("RAPOR").Cells(sat, 7).Value = Sheets("TAHSİLAT").Cells(i, 1).Value
Sheets("RAPOR").Cells(sat, 8).Value = Sheets("TAHSİLAT").Cells(i, 2).Value
Sheets("RAPOR").Cells(sat, 9).Value = Sheets("TAHSİLAT").Cells(i, 3).Value
Sheets("RAPOR").Cells(sat, 10).Value = Sheets("TAHSİLAT").Cells(i, 4).Value
Sheets("RAPOR").Cells(sat, 11).Value = bulunan1 - tutar
End If

sat = sat + 1
sat1 = i
GoTo atla2
End If

topla = WorksheetFunction.Sum(Worksheets("RAPOR").Range("k" & r & ":k" & 10000))
sat = sat + 1
If veri > topla Then
i = i + 1
GoTo atla1

End If


Next i
atla2:
Next r

MsgBox " Düzenleme Tamanlanmıştır..."

End Sub
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
.

İyi geceler...

Sy halit3,
bazı satırlarda eksi değerli rakamalar getiriyor.

Sy Zeki Gürsoy,
bu caride kullanılan ağırlıklık ödeme yöntemi senet. Tabi senetler değişik tarihlerde değişik vadelerle alınmış.
Bende tahsilatları vadesine göre elle sıralayarak ilk tahsil edilen işlemi, ilk fatura ile eşleştirme mantığı kurdum.

Şuan kafamda kodlamayı bitirdim, yarın bilgisayar üzerinde temize çekmesi kaldı.

.
 

assenucler

Altın Üye
Katılım
19 Ağustos 2004
Mesajlar
3,521
Excel Vers. ve Dili
Ofis 365 TR 64 Windows 11 Home Single Language x64 TR
Altın Üyelik Bitiş Tarihi
29-05-2025
Sayın Emir Hüseyin Çoban,

Son mesajınızda değindiğiniz kodlamayı bitirdiğinizde, dosyayı paylaşmanız mümkün mü?
Emek ve katkıda bulunan tüm dostlara teşekkürler.

Sevgi ve saygılar.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,591
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub faturaKapat()
    Application.ScreenUpdating = False
    Set sf = Sheets("Fatura")
    Set sT = Sheets("Tahsİlat")
    Set sR = Sheets("yRapor")
    sR.Cells.Clear

    sonF = sf.Cells(Rows.Count, 1).End(3).Row
    sf.Range("A1:F" & sonF).Copy sR.Range("A1")
    sf.Range("F1:F" & sonF).Copy sR.Range("E1:G1")
    sR.Range("F:F").ClearContents
    sR.Range("F1") = "ÖDENEN"
    sR.Range("G1") = "KALAN"

    sonT = sT.Cells(Rows.Count, 1).End(3).Row
    sT.Range("A1:G" & sonT).Copy sR.Range("I1")
    sT.Range("G1:G" & sonT).Copy sR.Range("M1:O1")
    sR.Range("O1") = "KALAN"
    sR.Range("N:N").ClearContents
    sR.Range("N1") = "ÖDENEN"
    sR.Select
    Columns.AutoFit

    Dim alacak As Range
    Dim borc As Range
    Set borc = Cells(2, "G")
    Set alacak = Cells(2, "O")

    While borc > 0 And alacak > 0
        If borc >= alacak Then
            borc.Value = borc - alacak
            borc.Offset(, -1) = alacak
            alacak.Offset(, -1) = alacak
            alacak.Value = 0
            Set alacak = alacak.Offset(1)
            If borc > 0 Then
                borc.Offset(1, -6).Resize(, 7).Insert shift:=xlDown
                borc.Offset(1) = borc.Value
                Set borc = borc.Offset(1)
            End If
        Else
            borc.Offset(, -1) = borc
            alacak.Offset(, -1) = borc
            alacak.Value = alacak - borc
            borc.Value = 0
            Set borc = borc.Offset(1)
            If alacak > 0 Then
                alacak.Offset(1, -6).Resize(, 7).Insert shift:=xlDown
                alacak.Offset(1) = alacak.Value
                Set alacak = alacak.Offset(1)
            End If
        End If
    Wend

    renk = Array(34, 40)
    For i = 2 To Cells(Rows.Count, 1).End(3).Row
        If Cells(i, 1) <> "" Then rnk = Not rnk
        Cells(i, 1).Resize(, 8).Interior.ColorIndex = renk(-1 * rnk)
    Next i

    renk = Array(3, -4105)
    For i = 2 To Cells(Rows.Count, 9).End(3).Row
        If Cells(i, 9) <> "" Then rnk = Not rnk
        Cells(i, 9).Resize(, 7).Font.ColorIndex = renk(-1 * rnk)
    Next i

    Set borc = Nothing
    Set alacak = Nothing
    Set sf = Nothing
    Set sT = Nothing
    Set sR = Nothing
    Application.ScreenUpdating = True
End Sub
 
Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,652
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Muhasebe işlemlerinden pek anlamam ancak uzun zaman önce bana yaşlandırma programı yazdırmışlardı. Senelerce de kullanıldı.
Datalar logodan excel e atılıyordu, program satış ve cari diye iki dosyayı seçip raporu hazırlıyordu.

Bu linkten ücretsiz olarak indirip inceleyiniz. Dediğiniz fatura kapama faturadan düşme gibi işlemler hatırlıyorum.

http://asriakdeniz.com/acik-hesap-yaslandirma-raporu/

 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst