Çoğu işletmede stok bir tabloda, üretim başka bir tabloda, muhasebe ayrı bir programda tutulur. Aynı bilgi üç kez girilir ve üç yerde farklı görünür. GearSoft, bu dağınıklığı tek bir veri modelinde toplayan, Odoo 19 tabanlı bir ERP. Bu yazıda GearSoft’un kapsadığı alanları ve işletmelere özel geliştirdiğim modülleri anlatıyorum.
GearSoft’un ürün sayfalarına gearsoft.org adresinden ulaşabilirsiniz.
Altyapı
- Odoo 19 üzerine kurulu.
- Kendi sunucularımızda, Docker ile çalışıyor; her müşterinin verisi kendi veritabanında.
- Güncellemeler önce test ortamında deneniyor, canlı ortama doğrulandıktan sonra alınıyor.
Kapsanan alanlar
| Alan | Neler yapılıyor |
|---|---|
| CRM | Satış hattı ve fırsat takibi, müşteri geçmişi, teklif yönetimi |
| Satış ve POS | Teklif ve sipariş, fiyat listeleri ve indirim kuralları, mağaza satış noktası ile ortak envanter, sevkiyat ve faturalama |
| Stok | Çoklu depo ve lokasyon, barkodlu mal kabul ve sayım, lot ve seri numarası takibi, otomatik tedarik, stok değerleme |
| Üretim | İş emirleri, ürün reçeteleri ve varyantlar, kapasite ve fason yönetimi, hammadde, işçilik ve fire maliyeti |
| Muhasebe | Cari ve vade takibi, banka, kasa ve nakit akışı, e-Fatura ve e-Arşiv entegrasyonu, finansal raporlar |
| İnsan kaynakları | Özlük, izin, mesai ve masraf takibi, mevcut bordro sistemiyle entegrasyon |
Hepsi aynı veritabanında olduğu için bir satış siparişi onaylandığında stok ayrılıyor, üretim ihtiyacı doğuyorsa iş emri açılıyor, sevkiyatla fatura kesiliyor ve muhasebe kaydı kendiliğinden oluşuyor.
İşletmeye özel geliştirdiğim modüller
Standart modüller çoğu işletmenin ihtiyacını karşılıyor. Karşılamadığı yerde, Odoo’nun içinde çalışan özel modüller geliştiriyorum. Üç örnek:
1. Mekân planlama ve görselleştirme stüdyosu
Mobilya ve dekorasyon sektörü için geliştirdiğim bu modül, satış sürecini görsel hâle getiriyor:
- Oda yapılandırıcı: Üç boyutlu görünümde oda planlama.
- Görsel stüdyolar: Ürün, perde ve kumaş için yapay zekâ destekli görselleştirme; bir ürünü fotoğraftaki mekâna yerleştirme.
- Fotoğraftan 3D: Bir ürün fotoğrafından 3D model üretimi. Üretilen model ürün kartına, oradan kataloğa bağlanıyor.
- Tekliften siparişe: Hazırlanan teklif tek adımla satış siparişine dönüşüyor.
- Kredi sistemi ve müşteri portalı: Ücretli işlemler için kullanıcıya özel kredi hesabı ve müşterilerin kendi işlemlerini izleyebildiği portal.
Modül daha önce bağımsız bir web uygulaması olarak çalışan bir ürünün, Odoo’nun veri modeline taşınmış yeniden yazımı. Şu anda geliştirme ortamında.
Kredi defterindeki teknik kararlar:
- Bakiye güncellenirken satır veritabanı seviyesinde kilitleniyor (
SELECT … FOR UPDATE). Aynı anda gelen iki istek aynı krediyi iki kez harcayamıyor. - Veritabanında
CHECK (balance >= 0)kısıtı var; bakiye hiçbir hata senaryosunda eksiye düşemiyor. - Kredi hareketleri değiştirilemez bir defterde tutuluyor. Akış şöyle: önce kredi ayrılıyor, sonra dış servis çağrılıyor; servis başarısız olursa kredi iade ediliyor.
- Dış servislerin anahtarları veritabanına değil sunucu ortamına yazılıyor ve hiçbir zaman tarayıcıya gönderilmiyor.
- Ücretli işlemler için günlük bütçe ve eşzamanlılık tavanı var.
- “3D’ye aktar” özelliği yalnızca 3D servisinin döndürdüğü ve kullanıcının kendi işine ait model adresini indiriyor. Rastgele bir adres kabul edilmiyor.
2. Katalog stüdyosu
Aynı modülün içinde, ERP’deki ürün kartlarından baskıya ve fuara hazır katalog üreten bir tasarım stüdyosu var. Ayrıntılarını tasarım yazısında anlattım.
3. Dış ticarette alıcı keşfi
İhracat yapan işletmeler için, yurt dışındaki gerçek ithalatçıları bulup ERP’de tek ve eksiksiz bir kayda dönüştüren bir modül. Ücretsiz ve resmi kaynaklarla çalışıyor: ticaret sicilleri, kamu ihale verileri ve uluslararası ticaret istatistikleri.
Veri şu aşamalardan geçiyor:
- Kaynak bazlı toplama: Her kaynaktan gelen kayıt ayrı tutuluyor.
- Eşleştirme: Sekiz basamaklı bir eşleştirme merdiveni, farklı kaynaklardaki aynı firmayı tek kayıtta birleştiriyor.
- Zenginleştirme: Eksik iletişim bilgileri tamamlanıyor.
- Yaptırım taraması: Yaptırım listelerindeki firmalar ayıklanıyor.
- Gönderim politikası: Her ülkenin ticari e-posta kuralları ayrı tanımlanıyor. Tek tıkla çıkış ve değiştirilemez onay kaydı var.
- Gönderim kuyruğu: Varsayılan olarak üç kilitle kapalı: gönderim kapalı, prova modu açık, politika kontrolü zorunlu.
Mimari, verinin her müşterinin kendi ERP’sinde değil merkezde tek elden toplanıp müşteriye HMAC ile imzalı paketler hâlinde gönderildiği bir veri havuzuna dönüştürüldü. Böylece aynı kaynak her müşteri için tekrar tekrar sorgulanmıyor ve paketin yolda değiştirilmediği doğrulanabiliyor.
Hukuki taraf teknik taraf kadar önemli. Örneğin Almanya’da soğuk ticari e-posta yasak; harita servislerinden alınan verilerin ise saklama süresi sınırlı. Bu kısıtlar koda kural olarak işlendi. Modül geliştirme aşamasında ve gerçek gönderim hiçbir ortamda açık değil.
Bu modülde uyguladığım güvenlik önlemleri:
- SSRF koruması: Modül, firmaların web sitelerinden iletişim bilgisi toplarken her isteği bir güvenlik kontrolünden geçiriyor. İzinli şema kontrolü yapılıyor, iç ağ ve özel IP adresleri reddediliyor. DNS yeniden bağlama saldırısına karşı alan adının çözüldüğü bütün IP adreslerinin genel olması şart. Yönlendirmeler elle takip ediliyor ve her adımda yeniden doğrulanıyor.
- Kademeli yetki: Standart kullanıcılar yalnızca görüntüleme yapabiliyor ve ücretli dış servisleri çağıramıyor. Kota tüketen işlemler ve politika yönetimi yalnızca yönetici grubunda. Merkezi havuz ekranları müşteri kurulumlarında hiç görünmüyor.
- Arka plan işleri: Uzun süren keşif ve zenginleştirme işleri ERP’yi kilitlemeden arka planda yürüyor. Aynı işin iki çalışan tarafından alınmaması için
FOR UPDATE SKIP LOCKEDve kayıt noktaları (savepoint) kullanılıyor.
Mobil erişim
GearSoft verisine telefondan güvenle erişmek için bir mobil uygulama da geliştirdim. Telefonun ERP’ye doğrudan bağlanmadığı, silmenin üç katmanda engellendiği mimariyi mobil uygulama yazısında anlattım.
Kurulum yaklaşımı
- Süreç analizi: İşletmenin bugün nasıl çalıştığını, hangi bilginin nerede tutulduğunu çıkarıyorum.
- Standart önce: İhtiyacın standart modüllerle karşılanıp karşılanmadığına bakıyorum. Özel geliştirme yalnızca gerçekten gerekiyorsa yapılıyor; her özel kod, ileride bakım gerektiren bir yük.
- Test ortamı: Her değişiklik önce test ortamında deneniyor.
- Canlıya geçiş: Yedek alınmadan ve geri dönüş planı hazır olmadan canlı sisteme dokunulmuyor.
GearSoft hakkında daha fazlası için gearsoft.org.