Efficy SDK build around JSON RPC operations send to endpoint "crm/json", the Efficy Enterprise product style. Multiple RPC operations can be registered in a single request until usage of method executeBatch(). Only after this method was executed, the RPC Response objects have data available in their item and items attributes.

Example

const crm = new CrmRpc(crmEnv);
const comp = crm.openConsultObject("comp", compKey);
const dsComp = comp.getMasterDataSet();
const dsCompCustomer = comp.getCategoryDataSet("COMP$CUSTOMER");
const dsLinkedContacts = comp.getDetailDataSet("cont");
await crm.executeBatch();
const compName = dsComp.item?.compName;

Hierarchy (view full)

Constructors

Properties

constants: {
    access_code: {
        addcontent: number;
        delete: number;
        deletecontent: number;
        fullcontrol: number;
        modifycontent: number;
        nocontent: number;
        read: number;
        search: number;
        secure: number;
        securecontent: number;
        showcontent: number;
        write: number;
    };
    account_kind: {
        group: number;
        resource: number;
        team: number;
        user: number;
    };
    file_type: {
        embedded: number;
        large: number;
        linked: number;
        remote: number;
    };
} = ...

Type declaration

  • access_code: {
        addcontent: number;
        delete: number;
        deletecontent: number;
        fullcontrol: number;
        modifycontent: number;
        nocontent: number;
        read: number;
        search: number;
        secure: number;
        securecontent: number;
        showcontent: number;
        write: number;
    }
    • addcontent: number
    • delete: number
    • deletecontent: number
    • fullcontrol: number
    • modifycontent: number
    • nocontent: number
    • read: number
    • search: number
    • secure: number
    • securecontent: number
    • showcontent: number
    • write: number
  • account_kind: {
        group: number;
        resource: number;
        team: number;
        user: number;
    }
    • group: number
    • resource: number
    • team: number
    • user: number
  • file_type: {
        embedded: number;
        large: number;
        linked: number;
        remote: number;
    }
    • embedded: number
    • large: number
    • linked: number
    • remote: number
crmEnv: CrmEnv = ...
fetchOptions: RequestInit = ...
name: string = "CrmFetch"
remoteObjects: RpcObject[] = []
requestCounter: number = 0
sessionId?: string

Accessors

  • get lastResponseObject(): null | object
  • Returns null | object

  • get lastResponseStatus(): number
  • Returns number

Methods

  • Consult your favorite records.

    Parameters

    • Optional entity: string

      The entity name, e.g. "Comp"

    Returns FavoriteList

    Example

    const compFavorites = crm.consultFavorites("Comp");
    
  • Parameters

    • entity: string

      The entity name, e.g. "Comp"

    • whereFields: string[] = []

      A list of field names to match (used as WHERE criteria), e.g. ["NAME", "OPENED"]

    • whereValues: string[] = []

      A list of values to match, e.g. ["Efficy", "1"]

    • orderByExpression: string = ""

      SQL sort expression, e.g. "K_COMPANY desc"

    Returns ConsultManyObject

    Deprecated

    Selects records that exactly match certain field values

    Example

    const morningMeetings = crm.consultManyEx("Acti", ["PLANNED", "D_BEGIN"], ["1", "2022-03-14 09:00:00"], "D_BEGIN");
    
  • Consult your recent records, optionally extended by additional fields.

    Parameters

    • Optional entity: string = ""

      The entity name, e.g. "Comp"

    • Optional extraFields: string[] = []

      A list of extra fields to consult for each recent entity record, e.g. ["POSTCODE", "CITY"]

    Returns RecentList

    Example

    const compRecents = crm.consultRecent("Comp");
    const compRecentsEx = crm.consultRecent("Comp", ["CITY", "COUNTRY"]);
  • Parameters

    • requestUrl: string
    • Optional requestPayload: ModulePostPayload
    • Optional requestOptions: RequestInit
    • isRetry: boolean = false

    Returns Promise<object>

  • Deletes records

    Parameters

    • entity: string

      The entity name, e.g. "Comp"

    • keys: string[]

      List of keys

    Returns void

  • Executes a database query stored in QUERIES

    Parameters

    • idQuery: string
    • Optional queryParameters: string[]

      The query parameters delivered via a JS Array

    • Optional loadBlobs: boolean = false

      If true, blob fields (e.g. memo, stream) are returned

    • Optional recordCount: number = 0

      If 0, return all records

    Returns QueryObject

    Example

    const tags = crm.executeDatabaseQuery(99990034); // Query "Standard: Top company tags"
    
  • Runs a native (SQL) database query, only if the user has SQL Exec the permissions!

    Parameters

    • sqlQueryText: string

      The SQL query text

    • Optional queryParameters: string[]

      The query parameters delivered via a JS Array

    • Optional loadBlobs: boolean = false

      If true, blob fields (e.g. memo, stream) are returned

    • Optional recordCount: number = 0

      Limit the returned records

    Returns QuerySQLObject

  • Parameters

    • master: number
    • detail: number
    • Optional queryParameters: string[]
    • loadBlobs: boolean = false
    • recordCount: number = 0

    Returns QueryObject

  • Request the accessible categories - for the current user - of the given entity

    Parameters

    • entity: string

      The entity name, e.g. "Comp"

    Returns CollectionObject

    Example

    const compCategories = crm.getCategoryCollection("comp");
    
  • Requests the current value of a given Efficy setting.

    Parameters

    • module: string

      The name of the setting.

    • name: string

      The name of the module (JSON object) that owns the setting.

    • asString: boolean = true

      If true, the settings of type TDateTime will be returned as a string formatted with the ShortDateTime format. If false, it will be returned as a float value.

    Returns SettingObject

    Example

    const workingPeriodFrom = crm.getSetting("user", "WorkingPeriodFrom");
    const workingPeriodFromFloat = crm.getSetting("user", "WorkingPeriodFrom", false);
    await crm.executeBatch();
    workingPeriodFrom.result; // e.g. "30/12/1899 08:00"
    workingPeriodFromFloat.result; // e.g. "0.333333333333333
  • Request a list of system settings. Use the Map object to retrieve settings

    Returns SystemSettings

    Example

    const settings = crm.getSystemSettings();
    await crm.executeBatch();
    settings.map.get("ShortDateFormat"); // e.g. "dd/mm/yyyy"
    settings.map.forEach(console.log); // prints each setting on console
  • Opens a consult context for the record identified by entity and key. A context remains memory-resident (on the web server) until it is closed. Always match with a closeContext() call to avoid memory consumption.

    Parameters

    • entity: string

      The entity name, e.g. "Comp"

    • key: string

      The key of the record. Use key = "" to create a new record.

    Returns ConsultObject

    Example

    const comp = crm.openConsultObject("comp", compKey)
    const dsComp = comp.getMasterDataSet();
    const dsCompCustomer = comp.getCategoryDataSet("COMP$CUSTOMER");
    const linkedContacts = comp.getDetailDataSet("cont");
    await crm.executeBatch();
  • Opens an edit context for the record identified by entity and key. A context remains memory-resident (on the web server) until it is closed. Always match with a closeContext() call to avoid memory consumption.

    Parameters

    • entity: string

      The entity name, e.g. "Comp"

    • key: string = ""

      The key of the record. Use key = "" to create a new record.

    Returns EditObject

  • Post and receive JSON with custom endpoint

    Parameters

    • requestUrl: string
    • requestObject: object

    Returns Promise<object>