0

How to pass filter in navision web services calling from android devices and how to fetch data? I've called the web services using WSDL & ksoap2 with NTML authentication and successfully fetching data, but filter does not work when applied.

The Heist
  • 1,444
  • 1
  • 16
  • 32
  • Described [here with xml sample](http://stackoverflow.com/questions/16542364/date-filter-in-microsoft-dynamics-nav-webservice) and [here](http://stackoverflow.com/questions/3423017/dynamics-nav-navision-webservice-readmultiple-date-filter). – Mak Sim Jan 24 '14 at 12:56
  • I'd gone through these links before, and the issue was between Vector Object and the soapObject. Anyway I solved this issue. Thanks. – The Heist Jan 24 '14 at 13:43
  • Why don't you post solution then? – Mak Sim Jan 27 '14 at 06:37

1 Answers1

0

ADDING THIS TO THE WHERE METHOD IS BEING CALLED

        VectorApp_Setup_Filter vfilter = new VectorApp_Setup_Filter();

        App_Setup_Filter appsetupFilter1 = new App_Setup_Filter();
        appsetupFilter1.field = App_Setup_Fields.Salesperson_Code;
        Log.e("SALES CODE PASSING IN FILTER ", editStrOfflineUserId);
        appsetupFilter1.criteria = editStrOfflineUserId;

        App_Setup_Filter appsetupFilter2 = new App_Setup_Filter();
        appsetupFilter2.field = App_Setup_Fields.Status;
        appsetupFilter2.criteria = "Intrasit";

        vfilter.add(appsetupFilter2);
        vfilter.add(appsetupFilter1);

        appsetup.ReadMultipleAsync(vfilter, null, 0);

READMULTIPLE ASYNC METHOD

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);
    soapEnvelope.implicitTypes = true;
    soapEnvelope.dotNet = true;
    SoapObject soapReq = new SoapObject(
            "urn:microsoft-dynamics-schemas/page/app_setup", "ReadMultiple");

    for (int i = 0; i < filter.size(); i++) {

        soapReq.addProperty("filter", getSOAPVectorAppsetup(filter, i));

    }

    soapReq.addProperty("bookmarkKey", bookmarkKey);
    soapReq.addProperty("setSize", setSize);
    soapEnvelope.setOutputSoapObject(soapReq);

METHOD DETAILS :- getSOAPVectorAppsetup();

private SoapObject getSOAPVectorAppsetup(VectorApp_Setup_Filter filter,
        int position) {
    SoapObject appsetup = new SoapObject(
            "urn:microsoft-dynamics-schemas/page/app_setup", "anyType");

    // for (int i = 0; i < filter.size(); i++) {

    Log.e("Field", 0 + "" + filter.get(position).getProperty(0));
    Log.e("Criteria", 0 + " " + filter.get(position).getProperty(1));

    appsetup.addPropertyIfValue("Field", filter.get(position)
            .getProperty(0));
    appsetup.addPropertyIfValue("Criteria", filter.get(position)
            .getProperty(1));

    // }

    return appsetup;

}

This Solution Worked For ME.

i.n.e.f
  • 1,773
  • 13
  • 22