Axaptada txt dosya okuyup SalesLine’ a kayıt atmak
Merhaba
Daha önce txt formatında bir dosyayı okumakla ilgili bir makale yazmıştım. Buradan okuyabilirsiniz.
Aynı örneği biraz geliştirdim. Öncelikle dosyayı diyalogtan alıyoruz ve tab ile ayrılmış halini pars edip container a atıyoruz. Daha sonra burdaki satırlardan SalesLine oluşturuyoruz.
Örnek text dosyamız böyle olsun boşluklar tab. Editorden dolayı burada net anlaşılamıyor.
NameAlias Name Vergi Adet Fiyat
40306445 DAVIDOFF GOLD 0 2.00 14.00
40318523 KENT WHITE 0 1.00 7.00
40329055 CAMEL KISA BOX 8 7.00 18.00
Örenğimiz şöye :
void TxtTransfer()
{
FileName fileName ;
container c;
FileIOPermission permission;
TextBuffer textBuffer;
str readText;
str readLine , strlineamount;
int etgline ;
int i = 0;
Dialog dialog = new Dialog(“Dosya seçiniz.”);
DialogField dfFileName;
SalesLine txtSalesLine;
InventTable inventTable;
InventItemSalesSetup InventItemSalesSetup;
InventDim txtinventDim;
Amount lAmount,KDV;
;
#File
dfFileName = dialog.addField(typeId(FileNameOpen));
dialog.filenameLookupFilter(["All files", #AllFiles]);
if (dialog.run())
{
fileName = dfFileName.value();
permission = new FileIOPermission(fileName, ‘r’);
permission.assert();
textBuffer = new TextBuffer();
textBuffer.fromFile(fileName);
readText = textBuffer.getText();
etgline = textBuffer.numLines();
while(i < etgline)
{
readLine = strLine(readText, i); // bir satırı okuyoruz
c = str2con(readLine,”\t”); // tab a göre ayırıp container a atiyoruz
// info(strFmt(“%1 %2 %3 %4 %5″, conPeek(c, 1), conPeek(c, 2),conPeek(c, 3),conPeek(c, 4) ,conPeek(c, 5)));
inventTable = InventTable::findbyNameAlias(conPeek(c, 1));
// text dosyasındaki ilk alan InventTableNameAlias alanına denk geliyor bu yüzden findbyNameAlias adında bir metod yazdım sizinde bunu yazmanız gerekmekte
if(inventTable.RecId)
{
txtSalesLine.clear();
txtSalesLine.SalesId =SalesTable.SalesId;
txtSalesLine.initFromInventTable(inventTable);
txtSalesLine.initFromSalesTable(salesTable);
txtSalesLine.ItemId = inventTable.ItemId;
InventItemSalesSetup = InventItemSalesSetup::findNotDefault(inventTable.ItemId);
txtinventDim.clear(); // inventdim oluşturacağız
txtinventDim.InventSiteId = inventDim::find(InventItemSalesSetup.InventDimId).InventSiteId;
txtinventDim.InventLocationId = inventDim::find(InventItemSalesSetup.InventDimIdDefault).InventLocationId;
txtinventDim = InventDim::findOrCreate(txtinventDim);
txtSalesLine.InventDimId = txtinventDim.inventDimId;
if(conPeek(c, 3) == 8 ) // vergi grubunu elle girmek zorunda kaldık siz kendi kodunuza göre değiştirmelisiniz
txtSalesLine.TaxItemGroup = “% 8″;
else if(conPeek(c, 3) == 18)
txtSalesLine.TaxItemGroup = “% 18″;
else
txtSalesLine.TaxItemGroup = “”;
lAmount = conPeek(c, 5);
KDV = conPeek(c, 3);
strlineamount = conPeek(c, 5);
strReplace(strlineamount, “.”, “,”);
if(KDV != 0)
lAmount = any2real(strlineamount) /((KDV / 100) + 1 ) ;
// txt dosyasındaki fiyatar kdv li olduğu için kdv siz fiyatı bulup onu yazıyoruz
else
lAmount = any2real(strlineamount);
txtSalesLine.QtyOrdered = conPeek(c, 4) ;
txtSalesLine.LineAmount = lAmount ;
txtSalesLine.createLine();
}
i++;
}
info(“Aktarım tamamlanmıştır.”);
salesLine_ds.executeQuery();
}
}
Selamlar.