top of page

NetSuite’te Depozito / Avans Tahsilat Yƶnetimi: 340’tan 120’ye Otomatik Virman, Fatura Kapatma ve Kur Değerleme (Detaylı Rehber)

Birçok şirkette sahada gördüğümüz standart senaryo şu:


  • Müşteriden ƶnce ƶdeme (depozito/avans)Ā geliyor.

  • Muhasebe bu tahsilatı 340 (Alınan Sipariş Avansları / Depozitolar)Ā benzeri hesaplarda tutuyor.

  • Sonra satış faturası kesilince bu avansı 120 (Alıcılar)Ā tarafına virmanlayıp faturayla kapatmak gerekiyor.

  • Kur farkı olan işlemlerde iş daha da uzuyor:

    tahsilat kuru, fatura kuru, ay sonu değerleme kuruĀ ve oluşan farklar…


Bu yazıda NetSuite tarafında bu yapıyı sürdürülebilir ve otomatik hale getirmenin mantığını, muhasebe etkisini ve kurguyu adım adım anlatıyorum.


depozito

1) İşin Muhasebe Mantığı: Neyi, Ne Zaman, Hangi Kurla Taşıyoruz?


Bu yapıda 3 temel olay var:


A) Depozito/Avans Tahsilatı Geldiğinde


  • Para bankaya girer.

  • Muhasebe etkisi (ƶrnek):

    • 102 Banka (BorƧ)

    • 340 Avanslar (Alacak)


NetSuite’te bu ā€œCustomer Deposit / Customer Paymentā€ gibi standart akışlarla yapılabilir; ancak bazı şirketlerde süreƧ/kurgu/yerel ihtiyaƧ nedeniyle bu avans ā€œprepaymentā€ gibi standart modülle değil, manuel/entegrasyonla 340’a alınmış olabilir. Sizdeki senaryo da bu: mevcut düzeni bozmayacağız.


B) Fatura Kesildiğinde


Fatura GL etkisi genellikle:

  • 120 Alıcılar (BorƧ)

  • 600/391 vb. (Alacak)


Ama burada ā€œmüşteri zaten ƶdemiştiā€ dediğimiz noktaya geliyoruz. Yani 120’de alacak oluştu ama tahsilat 340’ta bekliyor.


Ƈƶzüm:

Fatura kesildiği an, 340’taki avansın fatura tutarı kadar kısmını 120’ye virmanlamak.


Muhasebe virman kaydı:

  • 340 (BorƧ)

  • 120 (Alacak)


Bu kayıt sonrası 120’de fatura borcu ile 120’ye gelen ā€œalacak virmanā€ birbirini kapatabilecek hale gelir.


C) Faturayı Kapatma (Apply / Match)


Son adımda NetSuite’te faturanın kapatılması gerekir. İki yƶntem vardır:

  1. Payment üzerinden faturayı kapatmak (Apply)

  2. Journal ile kapatmakĀ (NetSuite’de ā€œJournal Applyā€ mantığı – hesap türleri ve ayarlara bağlı)


Sizin ihtiyacınız ā€œotomatikā€ olduğu iƧin tipik yaklaşım:

  • Fatura oluşunca virman jurnalını üret,

  • Ardından ā€œapplyā€ işlemini otomatikleştir (script ile) veya yapıyı ā€œfatura ƶdeme eşleştirmesiā€ şeklinde kurgula.



2) NetSuite’te Sağlam Bir Kurgunun Temel Taşları


Bu işin düzgün çalışması için 4 yapı taşını netleştirmek lazım:


2.1. Depozito / Avansın Faturaya Bağlanma Anahtarı


Sahada en Ƨok hata buradan Ƨıkar.


Bağlantı anahtarı seçenekleri:

  • Sales Order numarası

  • Fatura üzerindeki sipariş referansı (created from / custom field)

  • Müşteri + Proje + DƶnemĀ gibi kombinasyon

  • External IDĀ (entegrasyon varsa)


Ɩneri: ā€œfatura üzerinde bulunan sipariş numarasÄ±ā€ sizde anahtar gibi duruyor. En sağlamı:


  • Tahsilat kaydında (340’a atan) hangi SO / hangi iş / hangi referansĀ olduğunu net tutmak

  • Fatura üzerinde aynı referansı taşımak


2.2. GL Hesaplarının Netliği (340/120) ve Ƈoklu Defter (varsa)


NetSuite multi-book kullanılıyorsa bu virmanın hangi book’ta oluşacağı, hangi subsidiary’de Ƨalışacağı ƶnemlidir.

  • 340 ve 120 aynı subsidiary / aynı book mantığında mı?

  • Intercompany var mı?

  • Tek hesap planı mı, subsidiary bazlı farklı hesap mı?


Bunlar net değilse script doğru jurnal üretse bile ā€œkapanÄ±ÅŸā€ tarafında muhasebe itirazı gelir.


2.3. Para Birimi ve Kur Mantığı


Kur farkı konusu ikiye ayrılır:

  • İşlem anındaki kurĀ (tahsilat, fatura)

  • Ay sonu değerleme kuruĀ (revaluation)


Bunları ayrı ele almak gerekir.


2.4. Otomasyonun ā€œÄ°dempotentā€ Olması


Bu kelime kritik: Aynı faturaya script 2 kere çalışırsa 2 kere jurnal basmamalı.


Bu yüzden:

  • Fatura üzerinde ā€œVirman Oluşturulduā€ flag’i

  • Oluşan jurnal internal id’si fatura body field’ına yazılır

  • Yeniden Ƨalışırsa aynı kaydı bulur, ikinciyi üretmez


3) Otomasyon Akışı: Fatura Kesilince Ne Olacak?


Burada en temiz senaryo:

  1. Fatura (Invoice) oluşturulur / onaylanır (status)

  2. Script invoice’u yakalar (UE afterSubmit veya Scheduled/MapReduce)

  3. Fatura tutarı + para birimi + referans (SO no) alınır

  4. İlgili müşterinin 340’ta bekleyen avansları bulunur

  5. Toplam avans >= fatura tutarı ise:

    • 340→120 virman journal oluştur

    • Journal’ı invoice’a referansla bağla

    • Apply/Close adımını Ƨalıştır

  6. Avans < fatura tutarı ise:

    • Kısmi virman yap (isteniyorsa)

    • Kalan tutar 120’de aƧık kalsın

    • Uyarı / log / gƶrev üret



ā€œAvansları bulmaā€ yaklaşımı


Avanslar sistemde nasıl tutuluyor?

  • Eğer avanslar ā€œCustomer Paymentā€ ile giriliyor ama GL 340’a gidiyorsa, aramada ā€œdeposit/prepaymentā€ yerine ā€œpayment transaction + GL impactā€ tarafı incelenir.

  • Eğer avanslar ā€œJournal Entryā€ ile 340’a alınıyorsa, o journal’lar filtrelenir.

  • En sağlıklı yƶntem: Avansı yaratan kayıtta mutlaka bir ā€œreference fieldā€ taşımak (SO No / Project / External Ref).


4) Kapanış İşlemi: Journal ile Fatura Kapanır mı?


Bu sorunun cevabı NetSuite’te ā€œkurguyaā€ bağlı.

  • Standart yaklaşım: PaymentĀ transaction’ı üzerinden Invoice ā€œapplyā€ edilir.

  • Journal doğrudan ā€œapplyā€ edilmez (klasik muhasebe mantığında da jurnal bir ƶdeme değildir).

    Ancak bazı hesap tipleri ve ayarlarla ā€œJournal Applicationā€ benzeri kapatma davranışları kurgulanabilir.


Sizin senaryoda hedef:

  • Müşteri ƶdeme işlemi zaten ā€œ340’taā€

  • Biz 340’ı 120’ye taşırken ƶdeme gibi davranmak istiyoruz


Bu yüzden 2 yaklaşım var:


Yaklaşım 1 (Muhasebe açısından en temiz):


Customer Payment/Deposit’ı doğru mantıkla kullanmakĀ ve invoice apply’ı standarttan yapmak.


Ama siz ā€œmevcut yapıyı koruyacağızā€ dediğiniz iƧin bunu değiştirmiyoruz.


Yaklaşım 2 (Mevcut yapıya uyumlu):

  • 340→120 virman journal üret

  • Sonra invoice’u kapatmak iƧin:

    • ya ikinci bir ā€œCustomer Paymentā€ yaratıp apply etmek (sanal ƶdeme)

    • ya da mevcut deposit/payment kaydını invoice’a bağlamak (script ile)

En pratik olan genelde:

invoice oluştuğunda, ā€œapplicationā€ işlemini otomatik yapan bir script.


5) Kur Değerleme (Revaluation) İşin Neresinde?


Kur değerleme iki yerde karşımıza çıkar:


5.1. Tahsilat ile Fatura Arasındaki Kur Farkı


Ɩrnek:

  • Avans 1.1000 kurla geldi

  • Fatura 1.1500 kurla kesildi


Burada 340’ta bekleyen tutar ve faturanın 120 etkisi farklı kurdan olduğu iƧin virman sırasında kur farkı doğabilir.

Bu farkın muhasebeleşmesi için 2 seçenek var:

  1. Virmanı fatura kurundan yaparsın, aradaki farkı ā€œkur farkÄ±ā€ hesaplarına atarsın

  2. Virmanı avans kurundan yaparsın, fatura açık kalır ve kapanışta fark oluşur


Hangi yöntem doğru?

  • Şirketin muhasebe politikası + denetim yaklaşımı + yerel uygulamalar belirler.


Türkiye’de pratikte Ƨoğu firma:

  • Ɩdeme ve fatura farklı kurdan ise aradaki farkı kur farkı gelir/giderĀ olarak muhasebeleştirir.


5.2. Ay Sonu Değerleme (Unrealized FX)


Ay kapanışında 120’de aƧık bakiye varsa değerleme yapılır.

Ama siz otomasyonla faturayı kapatıyorsanız, 120 açık kalmayacağı için değerleme etkisi azalır.


Asıl soru:

  • 340 hesabı da dƶvizli bakiye tutuyor mu?

  • Ay sonu 340 iƧin de revaluation gerekiyor mu?


Eğer 340 dövizli açık bakiye taşıyorsa:

  • 340 da revaluation’a tabi olabilir (hesap tipine ve muhasebe yaklaşımına gƶre)

  • NetSuite’te revaluation genelde AR/AP hesaplarına odaklıdır; ama hesap bazlı revaluation kurguları ayrıca ele alınır.


Bu yüzden iyi bir tasarımda:

  • 340’ta dƶvizli bakiye kalmaması hedeflenir (mümkünse)

  • Ya da 340 iƧin de kur değerleme kuralı netleştirilir



6) Kenar Senaryolar (GerƧek Hayatın Zor Kısmı)


Bu otomasyon en çok şu durumlarda patlar; baştan tasarlamak gerekir:


6.1. Kısmi Avans + Kısmi Fatura

  • Avans 5.000 USD

  • Fatura 8.000 USD


Ne yapacağız?

  • 5.000 USD’lik kısmı 340→120 virman

  • Kalan 3.000 USD invoice aƧık



Bu durumda script:


  • ā€œavailable depositā€ mantığıyla kısmi virman yapmalı

  • ve bir sonraki tahsilatta kalan kısmı kapatacak şekilde Ƨalışabilmeli



6.2. Bir Avans ile Birden Fazla Fatura

  • Avans tek, faturalar parƧalı


Burada avansı ā€œallocationā€ yapmanız gerekir:

  • Avansın kalan bakiyesi izlenmeli

  • Hangi faturaya ne kadar gittiği loglanmalı


Genelde bu noktada bir ā€œcustom record: deposit allocation ledgerā€ mantığı şart olur.


6.3. İade / Credit Memo

Fatura kesildi, kapandı, sonra iade oldu.

  • 340’a geri mi atılacak?

  • Müşteriye nakit iade mi?

  • Sonraki faturaya mı sayılacak?


Bu senaryoları tasarlamazsanız otomasyon bir ay sonra ā€œmuhasebe kabusuā€ olur.


6.4. Subsidiary / Intercompany


Avans bir subsidiary’de, fatura başka subsidiary’deyse:

  • intercompany due to/from gerekir

  • düz 340→120 virmanı yetmez


7) Minexa Yaklaşımı: Bu İş Neden ā€œScript Yazdım Bittiā€ Değil?


Bu tip otomasyonlar sadece kod değil:

  • Muhasebe politikası

  • Kur yƶnetimi

  • Referans anahtarı tasarımı

  • Denetlenebilir kayıt izi (audit trail)

  • Hata yƶnetimi (re-run, rollback, log)


ile birlikte bir ā€œmini ürünā€ gibi tasarlanmalı.


İyi bir çözümde mutlaka şunlar olur:

  • Fatura üzerinde ā€œAvans Bulundu / Virman Yapıldı / KapatıldÄ±ā€ statüleri

  • Oluşan journal ve payment referansları

  • Hata olursa kullanıcıya aƧıklayan log + e-posta bildirim

  • Tekrar Ƨalıştırınca Ƨift kayıt basmayan idempotent yapı


Ā 
Ā 
Ā 
bottom of page