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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dijital Dönüşümünüzü AI İle Hızlandırın

Dynamics 365 ve AI destekli çözümlerle iş süreçlerinizi optimize edin, verinizi anlamlı içgörülere dönüştürün ve büyümenizi sürdürülebilir hale getirin.

AI-Ready Enterprise Partner

Microsoft Dynamics 365 ve yapay zekâ çözümleriyle kurumsal sistemlerinizi güçlendirir, operasyonel karmaşıklığı azaltır ve geleceğe hazır bir mimari tasarlarız.

DMR Göztepe Merkez Ofis

Eğitim Mah. Hızırbey Cad. No:118/5 D:1 Kadıköy İstanbul

Marmara Üniversitesi Göztepe Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com

DMR Başıbüyük Ofis

Başıbüyük Mahallesi Süreyyapaşa Başıbüyük Yolu Sk. No: 4/7 Maltepe İstanbul

Marmara Üniversitesi Başıbüyük Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com