LogoConnect Script ve basit kural tanımlama hakkında ayrıntılı bilgiye bu dokümandan ulaşabilirsiniz.
Doküman içeriği aşağıdaki gibidir:
- LogoConnect için Basit Kural İşlemleri
- LogoConnect için Script Kural İşlemleri
- Görsel Tasarım İşlemleri
KURAL TANIMLARI
Kural Tanımları, LogoConnect platformunun özelleştirilmesi amacıyla kullanılan geniş bir bölümdür. LogoConnect Kural Tanımı Bankacılık, B2B ve FDA Modüllerinin yanı sıra e-Dönüşüm Modülleri için de kullanılabilir. LogoConnect e-Dönüşüm Modülleri Kural Tanımları, Gelir İdaresi sistemine gönderilecek olan ve Gelir İdaresi sisteminden gelen belgeler için, manüel yapılan bir takım işlemlerin otomatikleştirilmesi veya bu belgelerin XML belgesi üzerinde veri değişikliği yapılabilmesi için kullanılır.
Kural Tanımları, Basit ve Script kural olmak üzere ikiye ayrılır. Basit kural oluşturmak için belli tanımlamalar yapılırken, Script kural tanımları için Visual Basic Script yazım dili kullanılır. Visual Basic Script yazım dili Excel ve Word programlarının içerisindeki macro dili olarak da kullanılmakta olan, en
standart script kodlama dilidir ve yapılmak istenen her türlü işlem ile ilgili örnek kodlar internette bulunabilir.
Kural tanımlarına LogoConnect ara yüzündeki Araçlar altındaki Kural Tanımları seçeneği ile ulaşılır. Alt kısımda bulunan açılır liste kutusu (combobox) içeriği ile script kural veya basit kural ayrımı yapılır.
e-Fatura İşlemleri İçin Basit Kural Tanımları
Kural tanımı türünün basit kural seçilmesinden sonra F9 menüsünden (sağ tık) "Ekle" işlemi ile kural tanımı eklenebilir. Bu durumda açılacak olan ekran aşağıdaki gibidir:
Basit Kural Seçenekleri
Kural No : Tanımlanan kuralın tanım numarasıdır.
Açıklaması : Kural tanımının adı ya da açıklayıcı bilgisidir.
Doküman : Kuralın hangi belge türü için uygulanacağı bu alanda belirlenir.
e-Dönüşüm Kural Tanımında Kullanılacak Doküman Tipleri
- e-Fatura
- e-İrsaliye
- Uygulama Yanıtı
- e-Arşiv Fatura
- Sistem Yanıtı
Seçilebilecek Olay Türleri
e-Dönüşüm belgeleri UBL-TR formatında gönderilmekte ve alınmaktadır. e-Dönüşüm belgeleri gönderilirken ERP Sisteminden LogoConnect'te XML olarak aktarılır. LogoConnect "Onaylanmadan/Mühürlenmeden Önce" işlemi sırasında XML'si UBL'ye çevirir. Kural tanımları bölümünde yapılan veri değişikliği işlemi sırasında XML'deki veriler değişir ve UBL'ye taşınır.
Örneğin; e-Fatura üzerinde veri değiştirmek amaçlı kural tanımı yapılırken "Onaylanmadan/Mühürlenmeden Önce" olayı seçilmelidir. e- Fatura alınırken UBL-TR formatında gelir ve "Geldiğinde" işlemi sırasında XML formatı oluşur. Gelen e-Fatura üzerinde veri değiştirmek amaçlı tanımlanacak olan kural tanımlarında "Geldiğinde" olayı seçilmelidir.
Kural Tanımlarında Statüler
Bir kuralın belli bir süre çalışmasını durdurmak için kullanılan alandır. Bu durumda kuralı silmeden çalışmasını engellemek için bu alanın içeriğinin "Pasif" durumuna çekilmesi gerekir. Kuralın tekrar çalışması için içeriği "Aktif" durumuna çekilmelidir.
Basit Kural Koşul İşlemi
Koşul: Elle giriş yapılıp, koşul yazılabilen bir alandır. Kurala atanacak koşul bu alanda belirtilir. Koşul bölümünde hiçbir şey yazılmamış ise oluşturulan kural tanımı her koşulda çalışacak demektir.
Alanlar: Seçilen doküman tipi ile ilişkili olarak koşul tanımlanabileceği gibi XML alanları bu bölümde bulunmaktadır. Doküman tipinin Logo ürünündeki XML formatı bellidir. LogoConnect ürünü bu formatı temel alarak, ihtiyacı olan diğer alanları bu format üzerine eklemektedir.
HEADER_RECORD Alanları: Bir veri gönderilmek üzere paketlendiğinde veya geldiğinde LG_XXX_ APPROVAL tablosuna kayıt atılır. XML kayıtları arasında bu tablo alanlarının tamamına denk gelen Tag'ler yoktur. Bu alanların da kural tanımlarında kullanılabilmesi için ilgili dokümanın standart XML formatı bozulmadan aşağıda gösterildiği üzere en başta bulunan HEADER_RECORD başlığı altında toplanarak standart XML formatına eklenmektedir. HEADER_RECORD başlığı altındaki alanlar doküman tipinden bağımsız olarak tüm dokümanlarda aynıdır. Standart alanlarda olduğu gibi bu alanlar üzerinde de koşul tanımlanabilmektedir. Connect Veritabanında (Inboxta, outboxta, onay işlemlerinde görünen) her kayıt APPROVAL tablosunda tutulur. Her doküman için APPROVAL tablosunda bulunan aşağıdaki alanlara ulaşılabilir.
Basit Kural İşlemler - Veri Üzerinden Değişiklik Yap
Kural tanımında seçilen Doküman tipi ve olaya bağlı olarak taşıdığı alanlar ve içerikleri üzerinde değişiklik yapılmak için kullanılır. Alan içerikleri değiştirilebilir, boşaltılabilir veya yeni XML alanı eklenebilir.
Alan Adı : Hangi alan üzerinde değişiklik yapılacağının seçildiği bölümdür.
Değeri : Değişiklik yapılacak olan alana hangi değerin geleceğinin seçildiği bölümdür.
Alan üzerindeki seçim alanı ile ilgili XML'de tanımlı olan bütün alanlar arasından seçim yapılabilir veya "Değeri" alanına manüel giriş yapılabilir. Seçim ekranına HEADER_RECORD alanları gelmez.
Basit Kural Örnek
ÖRNEK 1: Giden e-Fatura Özel Kodu "X" 'e eşit ise DOC_NUMBER (Fatura Belge Numarası) alanına AUXIL_CODE (Fatura Özel Kod) alanınındaki bilgiyi getir.
SONUÇ:
Basit Kural İşlemler - e-Posta Gönder
e-Posta Gönder: Kural tanımı ile seçilen Doküman tipindeki kayıtlar için, seçilen olay ve koşulların gerçekleşmesi durumunda kişilere otomatik bilgilendirme maili yollanması sağlanabilir.
- Subject : Mail konu başlığı.
- Message : Mail içeriği
ÖRNEK: Fatura numarasının "GID" ile başlaması durumunda bilgi maili atılması.
Basit Kural İşlemler - Serbest Alanları Ekle
Serbest Alan Ekle: Kural ile XML ve UBL alanlarına "AdditionalDocumentReference" alanı script kurala ihtiyaç kalmadan otomatik eklenir.
ID: XML'de oluşacak olan "AdditionalDocumentReference" alanı altındaki <ID> alanının değerinin belirlendiği alandır.
DOCUMENTTYPE: XML'de oluşacak olan "AdditionalDocumentReference" alanı altındaki <DOCUMENTTYPE > alanının değerinin belirlendiği alandır.
ÖRNEK : Fatura belge numarasının faturanın UBL'ine taşınması.
ERP'de Belge No tanımı
SONUÇ:
e-Fatura İşlemler İçin Script Kural Tanımları
Kural tanımı türünün script kural seçilmesinden sonra F9 menüsünden (sağ tık) "Ekle" işlemi ile kural tanımı eklenebilir. Bu durumda açılacak olan ekran aşağıdaki gibidir:
Kural No, Açıklama, Doküman, Olay, Statüsü, Öncelik alanları basit kural tanımı bölümünde anlatılan bilgiler ile aynıdır.
Şifre : Oluşturulan script kurala şifre konulmasını sağlayan alandır.
Script : Kural tanımının yapılacağı alandır. Burada tanımlanacak kuralın script dili VBScript (Vusial Basic Script)'tir.
Script ekranı açıldığında yukardaki gibi içi boş App nesnesini parametre olarak alan bir prosedür üretilir.
sub ProcessEvent(App) end sub
App Nesnesinin Metodları :
LDXObject : LDXCComApi nesnesinin login olunmuş bir örneğini verir.
Uobject : UObjects nesnesinin login olunmuş bir örneğini verir.
HeaderByName("alan_adı") : Verilen dokümanın alan_adı ile tanımlanan başlık bilgisini verir.
FieldAsString("alan_adı") : Verilen doküman alan_adı datasının bilgisini String olarak verir.
FieldAsInteger("alan_adı") : Verilen dokümanın alan_adı datasının bilgisini Integer olarak verir.
FieldAsFloat ("alan_adı") : Verilen dokümanın alan_adı datasının bilgisini Float olarak verir.
ModifyData ("alan_adı","değeri") : "alan adı" ile verilen data field bilgisinin değerini "değeri" ile değiştirir.
SaveData : Modify Data ile değeri değiştirilmiş alanlar XML'e kaydedilir. Eğer SaveData çağrılmazsa ModfiyData'daki değişiklikler XML'e yansıtılmaz.
RunQuery (Query, Quick) : XML üzerinde verilen query çalıştırılır ve XML'in şarta uygun olup olmadığına göre sonuç döndürülür. Quick
Parametresi eğer XML üzerinde işlem yapılacaksa true yapılmayacaksa daha hızlı çalışması için false verilmelidir.
FirstChild ("child_path") : Verilen path ilk child'a konumlanır. NextChild : Sonraki Child noda konumlanılır. Eğer yoksa false döndürür. SendToApproval "onay için mesaj" : Doküman Onaya gönderilir.
AppApprove : Doküman onaylanır. UndoApproval : Onay Geri Alınır. Save : Doküman kaydedilir.
Pack : Doküman paketlenir.
SendMail "to", "cc", "subject", "message" : Mail gönderir.
Cari Kodu Sevkiyat Adresi Alanına Getirme
sub ProcessEvent(App)
kod = App.Doc.FieldAsString("ARP_CODE")
App.Doc.ModifyData "SHIPLOC_CODE", kod
App.Doc.SaveData
end sub
Malzeme Kodu Alanına Sabit Veri Getirme
sub ProcessEvent(App)
Kontrol=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while Kontrol
App.Doc.ModifyData
"TRANSACTIONS.TRANSACTION.MASTER_CODE", "TEST"
Kontrol=App.Doc.NextChild
wend
msgbox "okey"
App.Doc.SaveData
end sub
Satır bilgilerine toplamda sabit alanlar hariç 4 farklı yeni alan getirilebilir.
BuyersItemIdentification -> ITEM_SUPPLIERCODE
BuyersItemIdentification = Alıcı Kodu
Örnek Kural;
sub ProcessEvent(App)
ok1=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while ok1
kod = App.Doc.FieldAsString("BARCODE")
App.Doc.ModifyData "ITEM_SUPPLIERCODE", kod
ok1=App.Doc.NextChild
wend
App.Doc.SaveData
end sub
BrandName -> Marka Adı (Kodu)
Örnek Kural;
sub ProcessEvent(App)
ok1=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while ok1
marka = App.Doc.FieldAsString("DESCRIPTION")
App.Doc.ModifyData "MASTER_MARKCODE", marka
ok1=App.Doc.NextChild
wend
App.Doc.SaveData
end sub
ManufacturersItemIdentification -> PROCEDUCER_CODE
Örnek Kural;
sub ProcessEvent(App)
ok1=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while ok1
URETICI = App.Doc.FieldAsString("DESCRIPTION")
App.Doc.ModifyData "PROCEDUCER_CODE", URETICI
ok1=App.Doc.NextChild
wend
App.Doc.SaveData
end sub
CommodityClassification -> MASTER_GROUPCODE
Örnek Kural;
sub ProcessEvent(App)
ok1=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while ok1
GRUP = App.Doc.FieldAsString("DESCRIPTION")
App.Doc.ModifyData "MASTER_GROUPCODE", GRUP
ok1=App.Doc.NextChild
wend
App.Doc.SaveData
end sub
Malzeme Barkod Alanının UBL'ye Getirilmesi
Örnek Kural;
sub ProcessEvent(App)
ok1=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while ok1
barkod = App.Doc.FieldAsString("TRANSACTIONS.TRANSACTION.BARCODE")
App.Doc.ModifyData "TRANSACTIONS.TRANSACTION.ITEM_SUPPLIERCODE", barkod
ok1=App.Doc.NextChild
wend
App.Doc.SaveData
end sub
Fatura Açıklama Alanının Belli Karakterlerinin Ek Alana Eklenmesi
Örnek Kural;
sub ProcessEvent(App)
Aciklama = App.Doc.FieldAsString("NOTES1")
App.Doc.WriteStartElement "ADDITIONALDOCUMENTS/ADDITIONALDOCUMENT"
App.Doc.WriteElementString "ID", MID(Aciklama,3,1)
App.Doc.WriteElementString "ISSUEDATE", Year(Date) & "-" & Right("0" & Month(Date), 2), & "-" & Right("0" & Day(Date), 2)
App.Doc.WriteElementString "DOCUMENTTYPE", "TANIMLI"
App.Doc.WriteEndElement
App.Doc.SaveData
end sub
Satır Açıklaması Silme
Örnek Kural;
sub ProcessEvent(App)
rOk=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while rOk
App.Doc.RemoveChild "TRANSACTIONS.TRANSACTION.DESCRIPTION"
rOk=App.Doc.NextRoot wend
App.Doc.SaveData
end sub
Not Alanlarının Tek Alanda Birleştirilmesi
Örnek Kural;
sub ProcessEvent(App)
notes1 = App.Doc.FieldAsString("NOTES1")
notes2 = App.Doc.FieldAsString("NOTES2")
notes3 = App.Doc.FieldAsString("NOTES3")
notes4 = App.Doc.FieldAsString("NOTES4")
iText = App.Doc.FieldAsString("ITEXT")
Notlar =notes1 + + notes2 + + notes3 + + notes4 + + iText
App.Doc.ModifyData "NOTES1",Notlar
App.Doc.SaveData
end sub
Kimlik Alanların UBL'e Eklenmesi
Örnek Kural;
sub ProcessEvent(App)
Kod = App.Doc.FieldAsString("ARP_CODE")
App.Doc.ModifyData "ACCOUNTCUSTOMERPARTY/PARTY/PARTYIDENTIFICATION/ID", "EPDKNO" App.Doc.ModifyData "ACCOUNTCUSTOMERPARTY/PARTY/PARTYIDENTIFICATION/VALUE", Kod
App.Doc.SaveData
end sub
SQL Connection - Malzeme İhracat Kategori Alanının Malzeme Açıklaması Alanına Getirilmesi
Örnek Kural;
sub ProcessEvent(App)
strDBUser = "sa"
strDBPass = "123456"
strDBServer = "XXXXXX"
strDBName = "TIGER"
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" + strDBUser + ";Password=" + strDBPass + ";Initial Catalog=" + strDBName+ ";Data Source=" + strDBServer
conn.Open
Set rs = CreateObject("adodb.recordset")
rs.ActiveConnection = conn
okay=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while okay
intItemRef = App.Doc.FieldAsInteger("TRANSACTIONS.TRANSACTION.MASTER_ORGLOGICALREF")
strItemRef = CStr(intItemRef)
strQuery = "SELECT EXPCTGNO FROM LG_001_ITEMS WHERE LOGICALREF=" + 'strItemRef
rs.Open strQuery, conn
strIHRCODE = rs.Fields(0).value
App.Doc.ModifyData "TRANSACTIONS.TRANSACTION.MASTER_DEF", strIHRCODE
rs.MoveNext() ' birden fazla değer okunacaksa bir sonraki satıra konumlanılıyor
rs.close
App.Doc.SaveData
okay =App.Doc.NextChild
wend
conn.close
App.Doc.SaveData
end sub
UQUERY_GETFLD Malzeme İhracat Kategori Alanının Malzeme Açıklaması Alanına Getirilmesi
Örnek Kural;
sub ProcessEvent(App)
ok1=App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
while ok1
Ref = App.Doc.FieldAsInteger("TRANSACTIONS.TRANSACTION.MASTER_ORGLOGICALREF")
IhrKod = App.UQuery_GetFld(1, "EXPCTGNO", 25, 52, FALSE, "LOGICALREF="+ cstr(Ref))
App.Doc.ModifyData "TRANSACTIONS.TRANSACTION.MASTER_DEF", IhrKod
ok1=App.Doc.NextChild
wend
App.Doc.SaveData
end sub
Entegratörlük Sayfasından Ek Alan Ekleme
Ayarlar menüsünden – Görsel Tasarım Ek Alanları
Entegratörlük Sayfasından Ek Alan Tanımlama
Ayarlar menüsünden – Görsel Tasarım Ek Alanları
Entegratör Sayfasından Ek Alan Seçilmesi
Eklenen Ek Alan Hangi Satıra Konulmak İsteniyorsa Fare ile Seçim Yapılıp, Açılan Üst Menüden Yeşil e-Fatura Alanları Başlığı Seçilerek Açılan Menüden Kullanıcı Tanımlı Başlıktan Eklenen Ek Alan Seçilir
Satıra Getirilen Örnek Ek Alanlar
Alıcı Kodu
<xsl:value-of select="./cac:Item/cac:BuyersItemIdentification/cbc:ID"/>
Satıcı Kodu
<xsl:value-of select="./cac:Item/cac:SellersItemIdentification/cbc:ID"/
Üretici Kodu
<xsl:value-of select="./cac:Item/cac:ManufacturersItemIdentification/cbc:ID"/
AdditionalDocumentReference
Faturada Malzeme Satırları Hariç Kullanılması Gereken Ek Alan ve Kuralı
Ek Alan
<xsl:for-each select="//n1:Invoice/cac:AdditionalDocumentReference">
<xsl:if test ="cbc:DocumentType = 'BELGENO'">
<xsl:value-of select="cbc:ID"/>
</xsl:if>
</xsl:for-each
Kural
sub ProcessEvent(App)
DETAY = App.Doc.FieldAsString("DOC_NUMBER")
App.Doc.WriteStartElement "ADDITIONALDOCUMENTS/ADDITIONALDOCUMENT"
App.Doc.WriteElementString "ID", DETAY
App.Doc.WriteElementString "ISSUEDATE", Year(Date) & "-" & Right("0" & Month(Date), 2) & "-" & Right("0" & Day(Date), 2)
App.Doc.WriteElementString "DOCUMENTTYPE", "BELGENO"
App.Doc.WriteEndElement
App.Doc.SaveData
end sub
UBL İçerisinden XSLT Çıkartma
Fatura UBL'i içerisinde CTRL+F ile '' xslt '' kelimesi ile aratılır.
Application/xml''> Büyüktür (>) işaretinden sonra ilk karakter dahil satırın sonundaki küçüktür (<) işaretine kadar seçilip kopyalanır.
Kopyalanan metin aşağıdaki web sayfasına yapıştırılıp butonu ile XSLT elde edilmiş olur.
{+}https://www.base64decode.org/+