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: 



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.

Yapılan kural tanımının çalışıp çalışmayacağı sadece kural tanımı içerisindeki "Statüsü" alanına bağlı değildir. LogoConnect – Seçenekler – Genel Parametreler altındaki "Kural Kullan" parametresi de işaretli olmalıdır. Bu parametre işaretli değilken tanımlanan hiçbir kural çalışmaz.



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" bölümünün altında Connect Database'inde bulunan LG_XXX_APPROVAL tablosunun kolonları bulunmaktadır.

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
Mail gönderiminin gerçekleştirilmesi için LogoConnectSYS / Araçlar / e-Posta Ayarları altından gönderimi yapacak mail adresi tanımlanmalıdır.


Message bölümüne sağ tuş ile "Alan Adları" bölümünden XML'in alanları taşınabilir. Bu durumda oluşturulan mesaj alanına gelen belgeye özgü alanların taşınması sağlanabilir. Mesaj alanına XML alanları dışında HEADER_RECORD alanlarıda taşınabilir.


Ö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/+