Mehmet Bey merhaba,
Ekrana gelen ve gelmesini istemediğiniz ekranın görüntüsünü paylaşırsanız daha sağlıklı yardımcı olabiliriz. FillAccCdes() metodu ilgili fişe ait muhasebe hesaplarını doldurmaya yarayan bir metot. Tic. Sis. Yönetimi / Oto. Muhasebeleştirme Parametreleri altında banka fişleri içerisinde alınan hizmet seçili ise ve oto. muhasebeleştirme yapılacak olarak ayarlı ise fiş kaydı sonrası size iki tane ekran gelebilir. Bir tanesi muh. hesapları dolu ise direk mahsup fişi ekranı açılır ve mahsup fişini kaydetmenizi bekler. Diğer ekran ise muh. hesapları boş ise raporlama ekranı açılır ve eksik hesap girişi olduğunu yazar. Sizlerin söylediği gibi direk muhasebe kodlarının olduğu bir ekran açılmıyor ne yazık ki.
Her iki durumda da bu ekranın açılmasını Banka Alınan Hizmet Fatura formuna yazdığınız kod ile engelleyebileceğinizi düşünmüyorum. Çünkü ilgili form kapandıktan sonra LOD ile tasarlanabilen farklı bir form (mahsup fişi) ekrana açılmakta ve tetiklemesi kendi formundan olması gerekmekte.
Yapmanız gereken ilgili otomatik muh. parametresinden banka alınan hizmet faturasını çıkarmak, en sağlıklı çözüm bu görünüyor. Yinede denemek isterseniz Banka Alınan Hiz. Faturası formunda AfterSave() eventi içerisinde tanımlamış olduğunuz bir global değişkene spesifik bir değer set edin. Ardından Mahsup Fişi forumda FormShow() eventi içerisinde bu bilgiyi çekerek değişken kontrolü yaparsınız. Sizin girdiğiniz değere eşit ise formu otoatik olarak kaydedip kapatırsınız. Tabi bu formu kapatırken global değişkeni tekrar farklı bir değere set etmeyi unutmayın. Bu şekilde bir ihtimal Mahsup Fişinin Banka Alınan Hiz. Fat. eklenmesi sonrası mı açıldığını yoksa farklı bir şekilde mi açıldığını kontrol edip otomatik kayıt oluşturabilirsiniz.
Yinede ikinci yöntem kontrolü biraz zor ve hataya açık gibi duruyor ama denemekte fayda var :)
Merhaba Uluç bey,
İlginiz için teşekkür ederim.
İşlem sonucu oluşan ekran çıktısı burada.
Bankadan alınan hizmet faturası için aşağıdaki kodu uyguluyorum
Fis = Application.NewDataObject(24)
Fis.New()
Fis.DataFields.FieldByName("TYPE").Value = 16
Fis.DataFields.FieldByName("NUMBER").Value = "~"
Fis.DataFields.FieldByName("DATE").Value =today
Fis.DataFields.FieldByName("BNACCCODE").Value =bankakodu
Fis.DataFields.FieldByName("SIGN").Value =1
Fis.DataFields.FieldByName("NOTES1").Value =aciklama
FisSatir = Fis.DataFields.FieldByName("TRANSACTIONS").Lines
if FisSatir.AppendLine() Then
FisSatir[0].FieldByName("TYPE").value =1
FisSatir[0].FieldByName("DATE").value =Today
FisSatir[0].FieldByName("BANKACC_CODE").value =bankakodu
FisSatir[0].FieldByName("TRCODE").value =16
FisSatir[0].FieldByName("MODULENR").value =7
FisSatir[0].FieldByName("AMOUNT").value = tutar
FisSatir[0].FieldByName("CREDIT").value = tutar
FisSatir[0].FieldByName("BN_CRDTYPE").value = 1
FisSatir[0].FieldByName("BANK_PROC_TYPE").value =2
FisSatir[0].FieldByName("SIGN").value = 1
FisSatir[0].FieldByName("DESCRIPTION").value =aciklama
End If
Fatura = Fis.DataFields.FieldByName("ATTACHMENT_INVOICE").Lines
If Fatura.AppendLine() Then
Fatura[0].FieldByName("TYPE").value =4
Fatura[0].FieldByName("DATE").value =today
Fatura[0].FieldByName("DOC_DATE").value =today
Fatura[0].FieldByName("TIME").value =0
Fatura[0].FieldByName("NOTES1").value = aciklama
Fatura[0].FieldByName("FROMBANK").value = 1
end if
FaturaSatir = Fatura[0].FieldByName("TRANSACTIONS").Lines
If FaturaSatir.AppendLine() Then
FaturaSatir[0].FieldByName("TYPE").value =4
FaturaSatir[0].FieldByName("MASTER_CODE").value =hizmet
FaturaSatir[0].FieldByName("QUANTITY").value = 1
FaturaSatir[0].FieldByName("PRICE").value = tutar
FaturaSatir[0].FieldByName("UNIT_CODE").value = "ADET"
FaturaSatir[0].FieldByName("VAT_RATE").value = 18
FaturaSatir[0].FieldByName("DESCRIPTION").value = aciklama
end if
'Fis.FillAccCodes()
If Not Fis.Post() Then
if (Fis.ValidateErrors.Count > 0) then
tmpErrStr = "XML Hatası mevcut!"
Cntr = Fis.ValidateErrors.Count
For ilp = 0 To (Cntr - 1)
vID = Fis.ValidateErrors.Item[ilp].ID
Str(vID, strvID)
tmpErrStr = tmpErrStr + strvID + " , " + Fis.ValidateErrors.Item[ilp].Error
Next ilp
warn(tmpErrStr)
Else
tmpErrStr=""
tmpErrStr = "DB Hatası mevcut!"
ErrId = Fis.ErrorCode
Str(ErrId, strErr)
ErrDef = ""
ErrDef = Fis.ErrorDesc
tmpErrStr = tmpErrStr + "Hata Kodu : " + strErr + " " + ErrDef
warn(tmpErrStr)
End if
end if
if Fis.ValidateErrors.Count=0 then
warn("Başarılı")
end if
Fis = null
FisSatir = null
Fatura =null
FaturaSatir=null
FillAccCodes satırını kapadığımda muhasebe kodları penceresi gelmiyor fişi doğrudan kaydediyor. Fakat açık kaldığında görüntüdeki ekranı getiriyor satırlar tamamen boş. Ticari sistem yönetiminde otomatik muhasebeleştirme kapalı. Elle eklediğimizde böyle bir durum yok. İyi çalışmalar.
Mehmet Bey merhaba,
Sorunuzu şimdi doğru anladım :) sizin direk banka alınan hizmet formuna uyarlama yapmak istediğinizi sanmıştım. Farklı bir form üzerinden banka alınan hizmet faturası aktarımı yapıyormuşsunuz :)
Öncelikle gönderdiğiniz kodda bir sorun yok. Bende de aynı ekran açılmakta. Sizin kodunuza ek olarak FillAccCodes() i ilk post ekranından kaldırdım ve post sonrası InternalReferans olarak aktarılan fişin referansını aldım. Ardından ilgili referansı READ() edip FillAccCodes() özelliği ile tekrar POST etmek istedim. Konumlanmayı object doğru yapsada ekrana bu sefer farklı bir muhasebe kodu ekranı açtı. Sanıyorum ki bu ekran kasa işlemlerinden eklenen bir fiş ile alakalı. Aşağıda ekran görüntüsünü paylaşıyorum.
Açılması gereken ekran
Yanlış açılan ekran
Form üzerinde açılan başka bir konuya Naci Bey FillAccCodes() özelliğinin ilk olarak satış faturası için kodlandığını, talep gelmesi ile alım faturalarına da yapıldığını belirtmiş ve talep fişlerinde bu özelliğin olmadığını belirtmiş. Talep içinde mail atılmasını istemiş. Benim aklıma gelen tek neden bu özelliğin Banka alınan hizmet faturalarında olmaması ve çalıştırılmak istendiğinde hatalı bir muhasebe kodları ekrana getirmesi.
İlgili Form Konusu İçin Tıklayın
Cevap vermek için giriş yapmanız gerekmektedir.
Soru sormak için lütfen oturum açınız.
LOD ile eklenen bankadan alınan hizmet
07/09/18 14:41   Tiger/Logo Object Designer (LOD)Merhaba,
LOD ile bankadan alınan hizmet faturası eklenirken karşımıza muhasebe kodları penceresi geliyor. Kaydet dediğimizde işlemi kaydediyor. Bu ekranın gelmemesi için ne yapabiliriz? Post işleminden önce FillAccCodes() komutunu kullanıyoruz.