खोज…


परिचय

यह विषय प्रदर्शित करेगा कि रस्ट कॉन्ट्रैक्ट-आधारित एपीआई के माध्यम से एक्यूमैटिक ईआरपी से रिकॉर्ड कैसे निर्यात किया जाए। एक्यूमैटा ईआरपी के स्क्रीन-आधारित एपीआई के विपरीत, अनुबंध-आधारित एपीआई दोनों SOAP और REST इंटरफेस प्रदान करता है। अनुबंध-आधारित एपीआई के बारे में अधिक जानकारी के लिए, एक्युमैटा ईआरपी प्रलेखन देखें

टिप्पणियों

Acumatica ERP के REST कॉन्ट्रैक्ट-आधारित API के साथ संवाद करने के लिए आपके क्लाइंट एप्लिकेशन को हमेशा निम्न 3 चरण करने चाहिए:

  1. Acumatica ERP उदाहरण में लॉग इन करें और उपयोगकर्ता सत्र जानकारी के साथ कुकी प्राप्त करें

  2. एक्यूमैटिक ईआरपी उदाहरण पर उपलब्ध कॉन्ट्रैक्ट-आधारित एपीआई एंडपॉइंट में से एक के साथ बातचीत

  3. उपयोगकर्ता सत्र बंद करने के लिए Acumatica ERP से लॉग आउट करें

इस विषय में प्रदान किए गए सभी नमूनों को डिफ़ॉल्ट समापन बिंदु के साथ बनाया गया था, हमेशा मानक एक्युमैटिक ईआरपी स्थापना प्रक्रिया के हिस्से के रूप में तैनात किया गया था। वेब सेवा समापन बिंदु स्क्रीन (SM.20.70.60) पर आप मौजूदा समापन बिंदुओं का विवरण देख सकते हैं या Acumatica ERP अनुबंध-आधारित वेब सेवाओं के अपने कस्टम समापन बिंदुओं को कॉन्फ़िगर कर सकते हैं:

यहाँ छवि विवरण दर्ज करें

आपके संदर्भ के लिए, नीचे दिए गए सभी सैंपलों में इस्तेमाल किए गए रेस्टसर्विस वर्ग का कार्यान्वयन एक्यूमैटिक ईआरपी के अनुबंध-आधारित वेब सेवा के साथ बातचीत करने के लिए किया गया है:

public class RestService : IDisposable
{
    private readonly HttpClient _httpClient;
    private readonly string _acumaticaBaseUrl;
    private readonly string _acumaticaEndpointUrl;

    public RestService(string acumaticaBaseUrl, string endpoint,
        string userName, string password,
        string company, string branch)
    {
        _acumaticaBaseUrl = acumaticaBaseUrl;
        _acumaticaEndpointUrl = _acumaticaBaseUrl + "/entity/" + endpoint + "/";
        _httpClient = new HttpClient(
            new HttpClientHandler
            {
                UseCookies = true,
                CookieContainer = new CookieContainer()
            })
        {
            BaseAddress = new Uri(_acumaticaEndpointUrl),
            DefaultRequestHeaders =
            {
                Accept = {MediaTypeWithQualityHeaderValue.Parse("text/json")}
            }
        };

        var str = new StringContent(
            new JavaScriptSerializer()
                .Serialize(
                    new
                    {
                        name = userName,
                        password = password,
                        company = company,
                        branch = branch
                    }),
                    Encoding.UTF8, "application/json");

        _httpClient.PostAsync(acumaticaBaseUrl + "/entity/auth/login", str)
            .Result.EnsureSuccessStatusCode();
    }

    void IDisposable.Dispose()
    {
        _httpClient.PostAsync(_acumaticaBaseUrl + "/entity/auth/logout",
            new ByteArrayContent(new byte[0])).Wait();
        _httpClient.Dispose();
    }

    public string GetList(string entityName)
    {
        var res = _httpClient.GetAsync(_acumaticaEndpointUrl + entityName)
            .Result.EnsureSuccessStatusCode();

        return res.Content.ReadAsStringAsync().Result;
    }

    public string GetList(string entityName, string parameters)
    {
        var res = _httpClient.GetAsync(_acumaticaEndpointUrl + entityName + "?" + parameters)
            .Result.EnsureSuccessStatusCode();

        return res.Content.ReadAsStringAsync().Result;
    }
}

एक एकल कॉल में डेटा निर्यात

इस उदाहरण में आप पता लगाएंगे कि रस्ट कॉन्ट्रैक्ट-आधारित डेटा के माध्यम से एकल कॉल में एक्यूमैटिक ईआरपी से निम्न डेटा को कैसे निर्यात किया जाए:

  • सभी स्टॉक आइटम आवेदन में मौजूद हैं
  • IN प्रकार के सभी बिक्री क्रम

यदि आपको Acumatica ERP से रिकॉर्ड निर्यात करने की आवश्यकता है, तो निम्न URL का उपयोग करें: http://<Acumatica ERP instance URL>/entity/<Endpoint name>/<Endpoint version>/<Top-level entity>

<Top-level entity> उस इकाई का नाम है जिसे आप निर्यात करने जा रहे हैं

एक ही कॉल में सभी स्टॉक आइटम निर्यात करने के लिए:

संस्करण 6.00.001 के डिफ़ॉल्ट समापन बिंदु का उपयोग करके स्थानीय AcumaticaERP उदाहरण से स्टॉक आइटम रिकॉर्ड निर्यात करने के लिए, आपको निम्न URL का उपयोग करना चाहिए: http://localhost/AcumaticaERP/entity/Default/6.00.001/StockItem

नीचे दिए गए नमूने कोड को सी # में लिखा गया है, सभी स्टॉक आइटमों को निर्यात करने के लिए संस्करण 6.00.001 के डिफ़ॉल्ट एंडपॉइंट पर एक सिंगल रीस्ट कॉल भेजें :

using (RestService rs = new RestService(
    @"http://localhost/AcumaticaERP/", "Default/6.00.001",
    username, password, company, branch))
{
    string stockItems = rs.GetList("StockItem");
}

एक प्रकार के कॉल में IN प्रकार के सभी बिक्री क्रम को निर्यात करने के लिए:

संस्करण 6.00.001 के डिफ़ॉल्ट समापन बिंदु का उपयोग करके स्थानीय AcumaticaERP उदाहरण से IN प्रकार के विक्रय आदेशों को निर्यात करने के लिए, आपको निम्न URL का उपयोग करना चाहिए: http://localhost/AcumaticaERP/entity/Default/6.00.001/SalesOrder?$filter=OrderType eq 'IN'

नीचे दिए गए नमूना सी # में लिखे कोड संस्करण 6.00.001 का डिफ़ॉल्ट समाप्ति बिंदु को एक भी REST कॉल भेजकर में प्रकार के सभी बिक्री आदेश निर्यात करने के लिए है:

using (RestService rs = new RestService(
    @"http://localhost/StackOverflow/", "Default/6.00.001",
    username, password, company, branch))
{
    var parameters = "$filter=OrderType eq 'IN'";
    string inSalesOrders = rs.GetList("SalesOrder", parameters);
}

एकाधिक अनुरोधों पर पृष्ठांकन लागू करना

इस उदाहरण में आप पता लगाएंगे कि रैस्ट कॉन्ट्रैक्ट-आधारित एपीआई के माध्यम से बैचों में एक्युमैटिक ईआरपी से निम्न डेटा को कैसे निर्यात किया जाए:

  • स्टॉक आइटम 10 अभिलेखों के बैचों में मौजूद हैं
  • 100 रिकॉर्ड के बैचों में सभी बिक्री के आदेश

कई रिकॉर्ड कॉल के साथ 10 रिकॉर्ड के बैच में स्टॉक आइटम निर्यात करने के लिए:

संस्करण ६.००.००१ के डिफ़ॉल्ट समापन बिंदु का उपयोग करके स्थानीय AcumaticaERP उदाहरण से पहले १० स्टॉक आइटम निर्यात करने के लिए, आपको निम्न URL का उपयोग करना चाहिए: http://localhost/AcumaticaERP/entity/Default/6.00.001/StockItem?$top=10 Top http://localhost/AcumaticaERP/entity/Default/6.00.001/StockItem?$top=10

तदनुसार, 10 से 20 तक स्टॉक आइटम का अनुरोध करने के लिए, आप बस फ़िल्टर पैरामीटर के साथ ऊपर दिए गए URL का विस्तार करें: http://localhost/AcumaticaERP/entity/Default/6.00.001/StockItem?$top=10&$filter=InventoryID gt '<InventoryID>'

<InventoryID> पिछले REST कॉल के साथ निर्यात किए गए अंतिम स्टॉक आइटम की आईडी है

नीचे दिए गए नमूने कोड को C # में लिखा गया है, सभी स्टॉक आइटमों को 10 रिकॉर्ड के बैचों में निर्यात करने के लिए, एकाधिक रीस्ट कॉल को 6.00.001 के डिफ़ॉल्ट समापन बिंदु पर भेजकर :

using (RestService rs = new RestService(
    @"http://localhost/StackOverflow/", "Default/6.00.001",
    username, password, company, branch))
{
    var json = new JavaScriptSerializer();
    string parameters = "$top=10";
    string items = rs.GetList("StockItem", parameters);
    var records = json.Deserialize<List<Dictionary<string, object>>>(items);

    while (records.Count == 10)
    {
        var inventoryID = records[records.Count - 1]["InventoryID"] as Dictionary<string, object>;
        var inventoryIDValue = inventoryID.Values.First();
        string nextParameters = parameters + "&" + 
            "$filter=" + string.Format("InventoryID gt '{0}'", inventoryIDValue);
        items = rs.GetList("StockItem", nextParameters);
        records = json.Deserialize<List<Dictionary<string, object>>>(items);
    }
}

कई रिकॉर्ड कॉल के साथ 100 रिकॉर्ड के बैचों में सभी बिक्री आदेश निर्यात करने के लिए:

किसी स्थानीय AcumaticaERP उदाहरण से पहले 100 बिक्री आदेशों को निर्यात करने के लिए संस्करण 6.00.001 के डिफ़ॉल्ट समापन बिंदु का उपयोग करके, आपको निम्न URL का उपयोग करना चाहिए: http://localhost/AcumaticaERP/entity/Default/6.00.001/SalesOrder?$top=100 Top http://localhost/AcumaticaERP/entity/Default/6.00.001/SalesOrder?$top=100

चूंकि बिक्री आदेश इकाई की प्राथमिक कुंजी ऑर्डर प्रकार और ऑर्डर नंबर द्वारा बनाई गई है, इस उदाहरण में आप ऑर्डर प्रकार और ऑर्डर नंबर फ़ील्ड के लिए फ़िल्टर मापदंडों के संयोजन का उपयोग करेंगे:

  • एसओ प्रकार के 100 से 200 तक बिक्री के आदेशों का अनुरोध करने के लिए, आपको निम्नलिखित URL का उपयोग करना चाहिए: http://localhost/AcumaticaERP/entity/Default/6.00.001/SalesOrder?$top=100&$filter=OrderType eq 'SO' and OrderNbr gt '<OrderNbr>'

<OrderNbr> पिछले REST कॉल के साथ निर्यात किए गए अंतिम बिक्री क्रम की संख्या है

  • तदनुसार, एसओ प्रकार के अगले 100 बिक्री आदेशों का अनुरोध करने के लिए, आपको निम्न URL का उपयोग करना चाहिए: http://localhost/AcumaticaERP/entity/Default/6.00.001/SalesOrder?$top=100&$filter=OrderType gt 'SO' and OrderNbr gt ''

नीचे दिए गए नमूने कोड को C # में लिखा गया है, सभी बिक्री आदेशों को 100 रिकॉर्ड के बैचों में निर्यात करने के लिए एकाधिक REST कॉल के साथ संस्करण 6.00.001 के डिफ़ॉल्ट समापन बिंदु पर:

using (RestService rs = new RestService(
    @"http://localhost/StackOverflow/", "Default/6.00.001",
    username, password, company, branch))
{
    var json = new JavaScriptSerializer();
    string parameters = "$top=100";
    string items = rs.GetList("SalesOrder", parameters);
    var records = json.Deserialize<List<Dictionary<string, object>>>(items);

    bool sameOrderType = true;
    while (records.Count > 0 && (records.Count == 100 || !sameOrderType))
    {
        var orderType = records[records.Count - 1]["OrderType"] as Dictionary<string, object>;
        var orderTypeValue = orderType.Values.First();
        var orderNbr = records[records.Count - 1]["OrderNbr"] as Dictionary<string, object>;
        var orderNbrValue = orderNbr.Values.First();

        string nextParameters = parameters + "&" + "$filter=" +
            string.Format("OrderType {0} '{1}'", sameOrderType ? "eq" : "gt", orderTypeValue) + " and " +
            string.Format("OrderNbr gt '{0}'", sameOrderType ? orderNbrValue : "''" );
        items = rs.GetList("SalesOrder", nextParameters);
        records = json.Deserialize<List<Dictionary<string, object>>>(items);
        sameOrderType = records.Count == 100;
    }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow