Dynamics AX’ta Adres Verileri Aktarımı

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.

adres_excel.jpg

 

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");
}
Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s