ERP projelerinde canlı kullanıma geçmeden önce en önemli işlemlerden birisi de veri aktarımlarıdır. Stok kartları, müşteriler, satıcılar gibi hareketler için gerekli olan master verilerin sisteme aktarılması gerekir. Dynamics AX’ ta Müşteri, satıcı, çalışanlar ve iş ilişkileri gibi kişi ve kurum verileri Genel adres defteri yapısında tutulduğu için girilen bir veri birçok tabloya kayıt atar. Örneğin bir satıcı kaydı girdiğinizde tek bir form üzerinden veri girersiniz ancak AX arka tarafta VendTable haricinde DirParty tablolarına da kayıt atar. Kodla adres verilerini aktarırken bu tabloları bilmek ve ona göre kod yazıp veri aktarmak çok zordur. Micrososft bu zorlukları ortadan kaldırmak için hazır classlar ve viewler sunmaktadır. Adres verilerinde işlem yapmak için DirPartyPostalAddressView viewi kullanılır. Bu view içerisinde yer alan metotlarla kolayca adres verilerini aktarabilir veya düzenleyebilirsiniz. Telefon, faks, e-posta gibi iletişim verileri üzerinden işlem yapmak için de DirPartyContactInfoView viewini kullanabilirsiniz.
Örnek bir job ile bu viewlerin nasıl kullanıldığına bakalım. Örneğin bir excelde AX’da kayıtlı olan tedarikçilerin adres verileri olsun.
Bu adres verilerini AX’ da ilgili satıcılara aşağıdaki jobı kullanarak ekleyebiliriz. Öncelikle bu excelin başlık satırı silinerek csv (virgülle ayrılmış) formatında kaydedilmelidir.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
static void SDImportVendorAddress(Args _args) { #File TextIo io; container c; VendTable vendTable; DirPartyTable partyTable; DirPerson person; DirPersonName personName; DirNameSequence nameSequence; DirPartyLocation partyLocation; DirPartyType partyType; str name, vendAccount, state, county, street, tel, fax, mail; RefRecId partyRecId; DirPartyPostalAddressView addressView; DirParty dirParty; LogisticsLocation logisticsLocation; DirPartyContactInfoView dirPartyContactInfoView; int i; ; //excel dosyasına ulaşım io = new TextIo( "C:\\vendaddress.csv" , #io_read); if (!io) { throw error( "Error reading file" ); } io.inFieldDelimiter( ';' ); //This can be any delimiter, I'm just using Semicolon as an example io.inRecordDelimiter(#delimiterCRLF); //CRLF = Carriage Return Line Feed ttsbegin; while (io.status() == IO_Status::Ok) { c = io.read(); if (io.status() != IO_Status::Ok) { break ; } //excelden verileri alma --> vendAccount = conPeek(c, 1); state = conPeek(c, 2); county = conPeek(c, 3); street = conPeek(c, 4); tel = conPeek(c, 5); fax = conPeek(c, 6); mail = conPeek(c, 7); //excelden verileri alma <-- vendTable =VendTable::find(vendAccount); //adres verilerini oluştur --> addressView.clear(); addressView.CountryRegionId = "TUR" ; addressView.State = state; addressView.County = county; addressView.Street = strLRTrim(street); addressView.Party = vendTable.Party; dirParty = DirParty::constructFromPartyRecId(vendtable.Party); if ( addressView.Street || addressView.State || addressView.CountryRegionId) { DirParty.createOrUpdatePostalAddress(addressView); } //adres verilerini oluştur <-- // iletişim bilgileri --> if (tel || fax || mail) { logisticsLocation.clear(); logisticsLocation = LogisticsLocation::create(strFmt( "%1-%2" , vendTable.AccountNum,vendTable.name()), NoYes::No); partyLocation.clear(); partyLocation.Party = vendTable.Party; partyLocation.Location = logisticsLocation.RecId; partyLocation.IsLocationOwner = true ; partyLocation.insert(); } if (tel) { dirPartyContactInfoView.LocationName = 'Birincil telefon' ; dirPartyContactInfoView.Locator = strLRTrim(tel); dirPartyContactInfoView.Type = LogisticsElectronicAddressMethodType::Phone; dirPartyContactInfoView.Party = vendTable.Party; dirPartyContactInfoView.Location = logisticsLocation.RecId; dirPartyContactInfoView.IsPrimary = NoYes::Yes; dirParty.createOrUpdateContactInfo(dirPartyContactInfoView); } if (fax) { dirPartyContactInfoView.LocationName = 'Birincil Faks' ; dirPartyContactInfoView.Locator = strLRTrim(fax); dirPartyContactInfoView.Type = LogisticsElectronicAddressMethodType::Fax; dirPartyContactInfoView.Party = vendTable.Party; dirPartyContactInfoView.Location = logisticsLocation.RecId; dirPartyContactInfoView.IsPrimary = NoYes::Yes; dirParty.createOrUpdateContactInfo(dirPartyContactInfoView); } if (mail) { dirPartyContactInfoView.LocationName = 'Birincil e-mail' ; dirPartyContactInfoView.Locator = strLRTrim(mail); dirPartyContactInfoView.Type = LogisticsElectronicAddressMethodType::Email; dirPartyContactInfoView.Party = vendTable.Party; dirPartyContactInfoView.Location = logisticsLocation.RecId; dirPartyContactInfoView.IsPrimary = NoYes::Yes; dirParty.createOrUpdateContactInfo(dirPartyContactInfoView); } // iletişim bilgileri < -- } ttscommit; info( "bitti" ); } |