Pazartesi, Ağustos 08, 2016

İhracat faturaları e-fatura oluyor

e-fatura mükellefleri için 2017 yılında ihracat faturaları da e-fatura oluyor...

Bu konuda ayrıntılı bilgi için http://www.netle.com.tr/ihracat-faturalari-yeni-duzenleme-ile-e-fatura-olacak adresini ziyaret edebilirsiniz.

Pazartesi, Temmuz 25, 2016

Global süreçlerde kullanılmak üzere yeni web sayfamızı hazırladık:

www.NetleGlobal.com

Salı, Mart 24, 2015

Zirve paketinden Netle E-defter uygulamasına dönüşüm yapan excel macro kodu

Zirve muhasebeci paketinden Netle e-defter uygulamasına dönüşüm yapmak için aşağıdaki excel macro kod yardımcınız olabilir. İlgili paketten ilgili döneme ilişkin "fiş listesi" excel ortamına aktarılır. excel dosyası açılır ve ikinci sheet olarak "netle" adında bir boş sayfa eklenir. macro kodlarına aşağıdaki kod eklenir ve excel macro calistir yardımı ile "Netle-Defter" formatlarına uygun çıktı alınabilir. NotBuradaki kodlar örnek veri modeli için hazırlanmıştır. Her veride kesin ve tutarlı sonuçlar vermesi beklenmemektedir. transfer aşamasında yardımcı olması adına tasarlanmıştır.
Sub NetleOlarakDuzenle()
    
'tum fisleri gez ve netle ortamına aktar
Dim newIndex As Integer
Dim lastFisNo As String
Dim lastFisTar As String
Dim lastEntryComment As String
Dim borc As Double
Dim alacak As Double
Dim itemDesc As String
Dim ht
Dim dt

Set ht = CreateObject("System.Collections.Hashtable")
Set dt = CreateObject("System.Collections.Hashtable")
' j=1 : odeme turleri fis bazında belirleniyor...
' j=2 : belirlenen odeme turleri yerine yazılıyor
For J = 1 To 2
    newIndex = 2
    For I = 1 To 7000
        If (Sheet1.Cells(I, 11) = "Fiş Tarihi :") Then
            lastFisTar = Sheet1.Cells(I, 12) & Sheet1.Cells(I, 13)
            lastEntryComment = Sheet1.Cells(I - 2, 4) & Sheet1.Cells(I - 2, 5) & Sheet1.Cells(I - 2, 6) & Sheet1.Cells(I - 2, 7)
            If (lastEntryComment = "") Then
                lastEntryComment = Sheet1.Cells(I - 1, 4) & Sheet1.Cells(I - 1, 5) & Sheet1.Cells(I - 1, 6) & Sheet1.Cells(I - 1, 7)
            End If
        End If
        If (Sheet1.Cells(I, 11) = "Fiş No :") Then
            lastFisNo = Right("00000000" & Sheet1.Cells(I, 12) & Sheet1.Cells(I, 13), 8)
        End If
        heskod = Sheet1.Cells(I, 2)
        testPos = InStr(1, heskod, "-")
        
        If (heskod > "" And testPos > 0) Then
        
            If (J = 1) Then
                If (Left(heskod, 3) = "100") Then
                    If (CStr(ht(lastFisNo)) = "") Then
                        ht(lastFisNo) = "Nakit"
                    Else
                        ht(lastFisNo) = "" 'daha onceden bulunan degeri sıfırla, aynı anda iki odeme turu olamaz
                    End If
                End If
                If (Left(heskod, 3) = "102") Then
                    If (CStr(ht(lastFisNo)) = "") Then
                        ht(lastFisNo) = "Banka"
                    Else
                        ht(lastFisNo) = "" 'daha onceden bulunan degeri sıfırla, aynı anda iki odeme turu olamaz
                    End If
                End If
                If (Left(heskod, 3) = "309") Then
                    If (CStr(ht(lastFisNo)) = "") Then
                        ht(lastFisNo) = "KrediKarti"
                    Else
                        ht(lastFisNo) = "" 'daha onceden bulunan degeri sıfırla, aynı anda iki odeme turu olamaz
                    End If
                End If
            End If
            
            borc = Sheet1.Cells(I, 11)
            alacak = Sheet1.Cells(I, 12) + Sheet1.Cells(I, 13) + Sheet1.Cells(I, 14)
            itemDesc = Sheet1.Cells(I, 7) & Sheet1.Cells(I, 8)
            
            Dim abc() As String
            abc = Split(itemDesc, "-")
            ub = UBound(abc)
            
            'detail comment hazırlanıyor
            If (ub > 3) Then
                dts = ""
                For uindex = 3 To ub
                    dts = dts & " " & abc(uindex)
                Next
                Sheet2.Cells(newIndex, 16) = dts
            End If
            If (ub = 3) Then
                Sheet2.Cells(newIndex, 16) = abc(3)
            End If
            If (ub = 2) Then
                Sheet2.Cells(newIndex, 16) = abc(2)
            End If
            
            'dokuman turu anlasiliyor
            If (J = 1 And itemDesc > "") Then
                sourceDT = abc(0)
                aktifdt = CStr(dt(lastFisNo))
                currDt = ""
                If (sourceDT = "Fatura") Then
                     currDt = "Invoice"
                End If
                If (sourceDT = "Banka Ekstresi") Then
                    currDt = "Other"
                End If
                If (sourceDT = "Makbuz") Then
                    currDt = "Receipt"
                End If
                If (sourceDT = "Uc.Bord.") Then
                    currDt = "Other"
                End If
                
                If (currDt > "") Then
                    If (currDt = "Other" Or currDt = "Invoice" Or currDt = "Check") Then
                        If (ub > 3) Then
                            Sheet2.Cells(newIndex, 14) = "'" & abc(2)
                            Sheet2.Cells(newIndex, 15) = CDate(abc(1))
                        End If
                        If (ub = 3) Then 'doctype+tar+no
                            Sheet2.Cells(newIndex, 14) = "'" & abc(2)
                            Sheet2.Cells(newIndex, 15) = CDate(abc(1))
                        End If
                        If (ub = 2) Then 'doctype+no
                            If (InStr(1, abc(1), ".") > 0) Then
                                Sheet2.Cells(newIndex, 15) = CDate(abc(1))
                            Else
                                Sheet2.Cells(newIndex, 14) = "'" & abc(1)
                            End If
                        End If
                        
                        'dokuman tarihi halen boş ise, yevmiye tarihi ile aynı giriş yap
                        If (Sheet2.Cells(newIndex, 15) = "") Then
                            Sheet2.Cells(newIndex, 15) = CDate(lastFisTar)
                        End If
                        
                    End If
                    
                    If (aktifdt = "") Then
                        dt(lastFisNo) = currDt
                    Else
                        If (aktifdt <> currDt) Then
                           Err.Raise vbObjectError + WidthErrorNumber, "", "aynı fis icinde iki tur dokuman var - " & lastFisNo
                        End If
                    End If
                End If
            End If
            
            Sheet2.Cells(newIndex, 1) = "Murat Yetkin"
            Sheet2.Cells(newIndex, 2) = CDate(lastFisTar)
            Sheet2.Cells(newIndex, 3) = CDate(lastFisTar)
            Sheet2.Cells(newIndex, 4) = "Mahsup"
            Sheet2.Cells(newIndex, 5) = "'" & lastFisNo
            Sheet2.Cells(newIndex, 6) = lastEntryComment
            Sheet2.Cells(newIndex, 7) = heskod
            Sheet2.Cells(newIndex, 8) = "TRL"
            Sheet2.Cells(newIndex, 9) = borc + alacak
            If (borc > 0) Then
                Sheet2.Cells(newIndex, 10) = "D"
            Else
                Sheet2.Cells(newIndex, 10) = "C"
            End If
            If (J = 2) Then
              odemeTuru = CStr(ht(lastFisNo))
              If (odemeTuru > "" And lastEntryComment <> "Açılış Fişi") Then
                Sheet2.Cells(newIndex, 11) = "'" & odemeTuru
              End If
              
              dstr = CStr(dt(lastFisNo))
              If (dstr > "") Then
                Sheet2.Cells(newIndex, 12) = dstr
              End If
               
              If dstr = "Other" Then
                Sheet2.Cells(newIndex, 13) = abc(0)
              End If
              
            End If
            Sheet2.Cells(newIndex, 17) = "'" & Sheet1.Cells(I, 4)
            newIndex = newIndex + 1
        End If
    Next
Next

End Sub

Cumartesi, Şubat 28, 2015

WS-Security(WSS ya da WSSE) ve E-Dönüşüm (E-Defter ve E-Arşiv)

Yeni e-dönüşüm modüllerinin GİB entegrasyonlarında kullanılacak web servislerde iletişim protokolünde "WSS" kullanılmak zorunda. Bu konuda birçok 3. yazılım evinin sunduğu çözüm(ler) var ancak eğer mevcut yazılım mimariniz HSM ya da ESYA API üzerine kurulu ise yeni bir sorun ile karşılaşabiliyorsunuz. Bu sorun, mevcut imza yapısının yeni SOAP iletişimindeki WSS özelliğini desteklememesinden kaynaklanıyor.

Eğer çözümünüz CAPICOM arayüzü ile kart içindeki private key değerine eskiden erişim yapabiliyorsanız bu durumda da bazı riskler ortaya çıkabiliyor. Yeni nesil mali mühür kartlarında yer alan düzenleme ile private key değeri artık dışarıya alınamıyor.

JAVA dışında, .Net ortamında, e-dönüşüm kodları geliştirenler yeni nesil GİB iletişiminde bu tür zorlukları aşmak zorunda kalıyor.

Ar-Ge ekibimizin çalışmaları sonrasında, ESYA API üzerine kurulu kendi kütüphanemizi tasarladık. Microsoft .Net ortamından (c#, vb.net) kolayca GİB e-defter ya da e-arşiv web servislerine ilgili kurumun mali mühürü ya da HSM (Hardware Security Module) cihazlarını kullanarak erişim yapabiliyoruz.

Bu konuda destek gereksinimi olanlar, www.netle.com.tr/iletisim adresinden bizimle irtibata geçebilirler.

Çarşamba, Ağustos 13, 2014

Kitap okumayı severim (zaman kısıtım var)

Uzun yıllar "Delphi" başlıklı kitapları okuduk. Sonunda örnekleri ezberleme noktasına gelmiştik ancak bu kitap nasılsa her okumamda bana başka şeyler katmıştı.
ilk okumada "kitap çok sayfalı" diyerek moralim bozuk,
ikinci okumada "ilginç örnekler var" diyerek sevinçli,
üçüncü okumada "ben bunu neden düşünemedim" diyerek garip,
..
..
Otuzaltıncı okumada "IUnknown" benim için artık "IKnown" oldu ve hayatımın en hızlı üretimini yapmıştım.

adını vermek istemediğim için "prefix ve suffix namespace" değerlerini gizleyerek yazıyorum:

.....Core.....
isim uzayındaki çaprazlanabilir, çift tabanlı, kendinden sayaçlı ve 32 bit özellikte nesne yığınlarım



Mutfak Eğitimleri | Bölüm 1

Mutfak eğitimleri - Bölüm 1'de birçok yemek sonrasında "tatlı" yapmak için  zaman kalmıştı. tatlı benim için yeri ayrı olan nadir somut kavramlardan bir tanesi. Ancak yapmak sevmekten daha zormuş!

Yine de işe koyulduk, (yanımdaki arkadaşlarımın birisini yazabilirim ama diğerini yazamam ) bu nedenle biz "üç" kişiydik diye devam edebilirim. 
Gram'la kesilen ölçekler sonrasında "tatlı" gerçekten "tatlı" olmuştu
Afiyet olsun!



Perşembe, Temmuz 17, 2014

İtalya

İtalya'da "maske" alış-verişinde olan arkadaşlarımı beklemek bu kadar zevkli olabilirdi;



Almanya - Cebit günlerim | Saçlarım varmış

Almanya Cebit günlerimde saçlarım varmış. 
Hava biraz soğukmuş
Aklımda ne olduğunu da hatırlıyorum...

"Dinamik Kodlama"

Bu resimden 2 gün sonra ilk sürüm hazırdı


Görseller ve blog notlarım

Biraz resim ekleme kararı aldım çünkü tarihsel çözümleme noktasında ifade ya da anlam kaymasını engellemek adına bu davranışımı şimdilik doğru buluoyorum.

Yaşar Üniversitesi - İstatistik Günleri

Rektörümüzden katılım için teşekkür plaketi alırken;



uzun bir zaman önceydi. Yine bir gün arkadaşlarla yazılım yapıyoruz;


Eğitim günlerimiz | Bölüm : Beden Dili

İletişim, tabii ki beden dili ve bir örnek:



Netle ve serin havada çalışma ortamım

Ofiste kalabildiğim sürece çalışmak güzel.

Biraz temiz hava, biraz keyif ve bir de çay : )


Add caption


Cumartesi, Haziran 22, 2013

E-fatura çözümüne ilişkin sorulması gereken sorular

E-fatura projesine başladığımız günden bugüne en çok karşılaştığımız soruları ve tabii ki bize göre cevapları burada yazmak istedim.

Genelde maliyet, süre, uyarlama ya da gerçekten e-fatura nedir soruları en yaygın karşılaştığımız sorular ancak işin içine yasal kapsam nedeniyle biraz daha girince artık teknik sorular ve ayrıntılı özellikler de daha fazla anlam kazanmaya başladı.

Birçok SAP, Netsis, Logo ya da InHouse yazılım kullanan müşteri ile e-fatura proje kapsamında görüşmelerimiz oldu. Bu görüşmeleri uygun bir dil ile soru/cevap şeklinde hazırlamak ve yayınlamak istedim.

Bu sorularda tabii ki rakip firma ürünlerini de karşılaştırmada kullanılacak sorular var. Bu nedenle buradaki sorular ve cevaplar her ne kadar Netle Yazılım özelini kapsamış olsa da bir o kadar da seçim yapılacak diğer çözüm evlerinin  de çözüm yeteneklerini ortaya çıkaracaktır.

Netle Yazılım tarafından hazırlanan çözümün soruları ve cevapları

Salı, Mayıs 21, 2013

E-fatura ve HSM

E-fatura projelerinde mali mühür için iki yöntem kullanılıyor.
1. Nitelikli Elektronik Sertifika (NES) benzeri kartlar ya da USB donanımları
2. HSM (Hardware Security Module)

Ne zaman HSM kullanılabilir?

  • Saniyede 2-5 adet fatura kesiliyorsa
  • ya da dağıtık şube yapısı varsa ve bu şubelerden de fatura kesiliyorsa
  • ya da şirketi temsil edecek kartlardan bir ya da birden fazla kişiye mali mühür verilmesi istenmiyorsa

bu durumlarda HSM rahatlık sağlayabiliyor. Ancak HSM standartlarında satın alma yaparken birçok noktaya dikkat etmek gerekiyor. Donanım e-fatura ve yasal zorunluluk nedeniyle trend topic olmuş durumda bu nedenle maliyetleri de inanılmaz derecede arttı. 

Birçok firma, fatura sayısından veya kullanım kolaylığından fedakarlık yaparak HSM cihazı almaktan vazgeçebiliyor. 

Eğer üretici ya da dağıtı firmalar daha uygun ve ekonomik fiyatlarlar belirleseler birçok firma çok daha fazla sayıda faturayı farklı bölgelerden güvenli bir şekilde kesebilecek.

Cumartesi, Mart 16, 2013

E-fatura için süre kısalıyor...

Eylül 2013 tarihine çok az kaldı.
Bu tarih öncesinde yasa kapsamında e-fatura kullanmak zorunda kalan kullanıcılar için birkaç önemli bilgiyi paylaşmak istiyorum.


  1. e-mühür süreci için başvuru ve mühürün gelmesi  : tahmini süre 10 gün
  2. Eğer çevrimiçi (online) kullanım başvurusu yapılacaksa : tahmini süre 10 gün
Bu noktaya kadar 20 gün (kabaca 1 ay süre geçiyor)


  1. Bir yazılım bulma, teklif toplama, değerlendirme : tahmini süre 10 gün
  2. Analiz, tasarım, sınama, doğrulama, kullanıcı dokümantasyonu, sistem dokümantasyonu : tahmini süre 20 gün
Bu noktaya kadar 30 gün (kabaca 1.5 ay süre geçiyor)

Değerlendirme
  • Evet geri sayım başladı
  • Bir ihtimal uzatma da olacak ancak bir toplantıda söylenen sözü de burada yazmak istiyorum...
".... firması olarak yasal süre öncesinde e-fatura kullanmaya başlarsak kimsenin ruhu duymaz ancak yasal süreye kadar kullanamazsak herkes bizi konuşur..."

Netle yazılım sayısal platform çözümlerimden "e-fatura" paketi kullanıma hazır.
Ayrıntılı bilgi için : Netle Yazılım - E-fatura çözümleri



Cuma, Temmuz 20, 2012

AutoCad dosyasından boyut okuma örneği

AutoCad dosyasından "rotated dimension" okuma gereksinimi duyduğunuz aşağıdaki kod size yardımcı olabilir.

Netle DocHuman uygulamasında, doküman yönetimi motorunda özelleşebilen kod satırlarına örnek olarak eklenmiştir.


Dim app As New AutoCAD.AcadApplication
Dim doc As AcadDocument
Dim blok1 As AcadBlock
Dim e1
Dim e2
Set doc = app.Documents.Open("C:\autocaddemo\ornek.dwg")
Set blok1 = doc.Blocks(0)
Set e1 = blok1.Item(4)
Set e2 = blok1.Item(5)
MsgBox "rotated dimension measurement - 1 : " & e1.Measurement
MsgBox "rotated dimension measurement - 2 : " & e2.Measurement
doc.Close False
Set doc = Nothing
app.Quit
Set app = Nothing


bu kod excel macro ortamında geliştirilmiştir ve Autocad için gerekli olacak tür kütüphaneleri referans olarak eklenmiştir.

Cuma, Haziran 15, 2012

RedCode - .Net UserControl - ActiveX - NetOpenX


  1. RedCode 5.X sürümünü kullanıyorum
  2. .Net ortamında UserControl gibi görsel nesneler ile ActiveX tasarlamak istiyorum
  3. Bu activeX ile, netopenx bağlantısı üzerinden veri tabanına bağlantı yaparak işlem yapmak istiyorum
  4. ayrıca bir isim/şifre bağlantısına gerek olmasın
  5. Anamenuye giriş yapan kullanıcı adı ve şifresini tekrar kullanmak benim için yeterli
  6. Bu konuda da kaynak bulamıyorum
gibi düşünceniz ya da sözleriniz varsa bu adres size yardımcı olabilir.

https://docs.google.com/open?id=0B2y6Ct8mwcVYeWgxTTNuUXdVNFk [ --> ]


Çarşamba, Mayıs 02, 2012

Üst (Meta) modeli olan kavramları seviyorum; DocHuman ve RDL (Report Definition Language)

Dochuman süreç yönetim motoru bir veri kaynağını çok farklı biçimlere dönüştürebilir durumda. Bu özellik ile Dochuman veri modeli, RDL gösterim modeline dönüşebiliyor. Modeller arası dönüşümde, geliştirdiğimiz alt sistemler, veriyi bire-bir oranda dönüştürebilme yeteneğinde.

Bir rapor var ve bu rapora ilişkin veri girişi yapılacaksa, rapor verileri expression olarak da ifade edilmiyosa geri dönüşüm kısa sürede mümkün olabilir.

RDL içinde parametre, sabit değer, veri kaynaklı değer ve görsellerin özelleştirilmesi yeteneği DocHuman form tasarım sistemiyle birebir örtüşmektedir. Bir RDL barkod değeri ile DocHuman barkod değeri binlerce farklı satırlar sonucunda ortaya çıksa da; birbilerini anlayabilen iki sistemin uzlaşması noktasında işler daha kolaylaşacaktır.

Bu tür gelişmiş özelliklere rağmen yazılıma her şeyi yapabilir misin diye sorulsa, "derlenmiş ve işlenmeye hazır halimde çok sıfır" var diyebilir.


Çarşamba, Nisan 04, 2012

Ürün sevdirme, pekiştirme, özendirme ve kullandırma adımları



  • Fırsat ve risk çözümlemesi yapılmalı
  • Yazılım geliştirme, sürümlendirme, satış, uyarlama, destek ve bakım için iş modelleri geliştirilmeli
  • Satış kanal etkinliğine ilişkin değerlerin tanımlanmalı ve izlenmeli
  • Pazar ve rekabet çözümlemesi sonuçlarının stratejik toplantılarda paylaşım 
  • Fiyat, iskonto, hak ediş, uyarlama ve bakım bedellerine ilişkin liste hazırlığı
  • Marka bilinirliği ve mono-brand alt işlevlerinin tamamlanması
  • Bütünleşik tedarik otomasyonlarına bağlantı noktalarının belirginleştirilmesi



Dochuman istisna eşleme

Süreç motorunda istisna yönetimi eş zamanlı delegasyon bileşenleri ile güvenli moda uygun bir işleyişi benimsedi. Peki müşteri bundan mutlu olur mu? tabii ki olacak, N çekirdekli bir sunucuda, eposta gönderim programları gibi bir model tasarlanmışsa, eş zamanlı dağıtım parçaları kullanıldıysa ve sonunda da eşleme noktalarında kümülasyon isteniyorsa bu özellik fark yaratacak.

Olmasaydı? birkaç sonuç tartışmaya açılabilir ancak (biliyorum burası devlet tiyatrosu değil) özelleştirilmiş ve genişletilmiş istisna sınıfları ile ana thread bağlantı noktaları arasında, hata oluşma durumunda merkezleşme talebi çok kısa sürede gerçekleştirilebiliyor. Eş zamanlı ve çoklu delegasyon olmasıydı döngü içinde bu iş yapılmak zorunda kalınabilirdi.

Sanat sanat için mi? toplum için mi? kimin için olduğu ortaya çıkmaya başladı...