Kısa Tanım:

Tablo satırında seçilen ürünün resminin Tiger ve Go ürünlerine aktarma işlemidir.

Açıklama:

Tablo içerisinde seçilen ürün ve resimlerin sql üzerinden Tiger ve Go ürünlerine atma işlemini gerçekleştirmektedir. Tabloda dosya yükle kolon değişkeni olarak eklenen veriler NWFFILES sql tablosuna yazmaktadır. Her bir dosyanın tekil id’ si bulunduğundan dosyanın id’ si alınıp NWFFILES tablosundan direk Tiger ve Go ürünlerine update sql işlemi yapmaktadır. NWFFILES ve Tiger ve Go sistemlerinde sql de tutulan dosya tipleri binary olup, standart bir şekilde kaydedilmektedir. Her iki tarafta da herhangi bir sıkıştırma vs. işlemi olmadığından direk sql update işlemi uygulanabilmektedir. Tiger ve Go ürünlerinin dışında  da yine bu şekilde sql de tutulan binary dataları farklı yerlere de atabilirsiniz.

Önemli Not: ERP tarafında arayüzden silinen resimlerde Tiger ve Go,  LG_XXX_ITEMS tablosunda “IMAGEINC” ve “IMAGE2INC” olarak iki farklı kolonda burayı 0 olarak set etmektedir. Sqlden Flow tarafından güncelleme yapıldığında eğer ki arayüzden silinme işlemi uygulanıyorsa bu kolonlarında o ürün için değerleri 1 yapılmalıdır. Yoksa Flow, sql’ den güncelleme işlemini yapar ama arayüz de resim gözükmez.

Bu akış örneği için yapılması gerekenler:

-Örnekte sadece 1. Resim anlatılmıştır. İstenirse ikinci bir dosya yükleme kolonu açılıp 2. Resminde aktarımı sağlanabilir.

-Sql bağlantıları, veri kaynakları ve sql sorguları kendinize göre düzenlenmelidir.

-Tablo dosya yükle değişkeni n tane dosya ekleyebilme özelliğine sahiptir, biz bu örneğimizde sadece 1’ ini alarak işlem yapmaktayız. Bu yüzden ya  nfileVariableValue.Files.Count kodu ile kontrol edip kullanıcıyı Showmessage ile uyarmalısınız ya da sadece 1’ ini atacağını iletmelisiniz.   

Kod Örneği:

 string fileId="",sqlSelectSorgu="",sqlUpdateSorgu="",sqlInsertSorgu="";
int malzemeId=0,lref=0;

//BÜTÜN TABLO SATIRLARI TEKER TEKER DÖNME İŞLEMİ BAŞLIYOR
try{
for(int i=0;i<MalzemeListesi.Content.Items.Count;i++)
{
//TABLO DA YÜKLENEN DOSYANIN NWFFILES TABLOSUNDAKİ FILE ID' SI ALINIYOR.
NAF.LFlow.Shared.Types.Files.NFileVariableValue nfileVariableValue=(NAF.LFlow.Shared.Types.Files.NFileVariableValue)MalzemeListesi.GetValue(MalzemeListesi_Columns.Resim,i);
fileId=nfileVariableValue.Files.FirstOrDefault().FileId.ToString();
//SEÇİLEN MALZEMENİN AÇILIR PENCEREDEKİ LOGICALREF DEĞERİ ALINIYOR
malzemeId=Convert.ToInt32(MalzemeListesi.GetValue(MalzemeListesi_Columns.MalzemeSecim,true,i,"LOGICALREF"));
//MALZEME LOGICALREF DEĞERİNE GÖRE FIRMDOC TABLOSUNDA ARAMA YAPILMASI İÇİN SQL HAZIRLANIYOR. FIRMDOC TABLOSUNDA ÜRÜN RESMİ VARSA UPDATE YOKSA INSERT İŞLEMİ YAPILMASI İÇİN.
sqlSelectSorgu=@"SELECT TOP 1 LREF FROM  LG_001_FIRMDOC WITH(NOLOCK) 
 WHERE 
(INFOTYP=20) AND (INFOREF="+malzemeId.ToString()+") AND (DOCTYP=0) AND (DOCNR=11)";

//FILE ID VE MALZEME LOGICALREFİ ALINDIYSA KONTROLÜ YAPILMAKTA
if(fileId!="" && malzemeId>0)
{//BÜTÜN KONTROLLERDEN SONRA TIGER DA SEÇİLEN ÜRÜNE AİT RESİM VAR MI YOK MU SQL ÇALIŞTIRILARAK KONTROL EDİLİYOR.
var selectResult=Context.SqlExecuteReader(SqlConnections.TIGER,sqlSelectSorgu);
    if(selectResult.Rows.Count>0)
    {
    //RESİM VAR VE FIRMDOC TABLOSUNDAN LREF BİLGİSİ ALINIYOR.
  foreach(var item in selectResult.Rows)
          {
              lref=item["LREF"].ToInt();
          }
   //ALINAN LREF VE URUN LOGICALREF BİLGİSİNE GÖRE UPDATE İŞLEMİ YAPILIYOR.       
sqlUpdateSorgu=@"UPDATE TIGER..LG_001_FIRMDOC 
SET LDATA=(SELECT TOP 1 DATA FROM LFLOW..NWFFILES WHERE ID='"+fileId+"' AND ASSOCIATEDVARIABLENAME='MalzemeListesi__Resim' AND FILETYPE=1)"+
"WHERE INFOREF="+malzemeId.ToString()+" AND INFOTYP=20 AND DOCTYP=0 AND DOCNR=11 AND LREF="+lref.ToString();
var updateResult=Context.SqlExecuteNonQuery(SqlConnections.TIGER,sqlUpdateSorgu);
Durum.Value+=malzemeId+" no' lu ürün resmi güncellendi."+Environment.NewLine;
    }
    //ÜRÜN RESMİ HİÇ YOKSA INSERT İŞLEMİ YAPILIYOR.
    else
    {
        sqlInsertSorgu=@"INSERT INTO TIGER..LG_001_FIRMDOC (INFOTYP,INFOREF,DOCTYP,DOCNR,LDATA) 
        VALUES (20,"+malzemeId.ToString()+",0,11,"+
        "(SELECT TOP 1 DATA FROM LFLOW..NWFFILES WHERE ID='"+fileId+"' AND ASSOCIATEDVARIABLENAME='MalzemeListesi__Resim' AND FILETYPE=1))";
        var insertResult=Context.SqlExecuteNonQuery(SqlConnections.TIGER,sqlInsertSorgu);
        Durum.Value+=malzemeId+" no' lu ürün resmi eklendi."+Environment.NewLine;
    }
}
//BÜTÜN HAZIRLANAN SORGULAR/DEĞİŞKENLER SIFIRLANIP, BİR SONRAKİ TABLONUN SATIRINA GEÇİLİYOR.
sqlUpdateSorgu="";
sqlSelectSorgu="";
sqlInsertSorgu="";
fileId="";
malzemeId=0;
lref=0;
}


//YAPILAN İŞLEMLER SIRASINDA HATA ALINIRSA DURUM DEĞİŞKENİNE HATANIN NEDENİ YAZILIYOR.
}catch(Exception Ex){Durum.Value+="Hata Oluştu="+Environment.NewLine+Ex.Message.ToString();}

Akış Dosyası (.xnm):

Aşağıdaki dosyayı indirerek uygulamaya aktarabilirsiniz. İçeri aktarma işleminin nasıl yapıldığına dair bilgi için Aktar bölümünü inceleyebilirsiniz.

Tablo satırında seçilen ürünün Resmini TigerGo ya Aktarma.nxm