• Share
    • Twitter
    • LinkedIn
    • Facebook
    • Email
  • Feedback
  • Edit
Show / Hide Table of Contents

Working with companies in API

Audience:
api
•
Version: 10
Some tooltip text!
• 6 minutes to read
 • 6 minutes to read

Company card -screenshot

Companies are in code and database references called contact. Use the context to determine whether contact denotes a real-life company or person. Read more about the SuperOffice view of the world.

Warning

Changing the company table will make it impossible to sign in for all users. The only fix is to restore the database from backup.

Company vs. other entities

The company card uses the contact table and its related tables:

Company tables diagram

There are multiple person records for any contact. A classic many-to-one relationship.

  • A person can only belong to one contact.
  • A contact can have zero or more persons.

It is this relationship that drives the first to fields in the follow-up, sale, and document dialogs. Every time you select a new company, the person list below it has to be re-populated.

Person list

To get the list of persons under a contact:

SELECT * FROM person WHERE contact_id = 123 ORDER BY rank

Rows and entities

A ContactRow refers to a row in the contact database table. Therefore, it consists of basic data types supported by SQL.

The Rows type consists of a collection of rows such as ContactRows type consists of a collection of ContactRow types.

The ContactEntity represents a business object. It contains a set of properties bundled up as a single unit representing a particular business object. Entities contain properties of different data types such as properties of basic data types like int, string, boolean, entities, entity arrays, EntityElement, and LocalizedField.

Note

The Person property of the ContactEntity is a read-only Person item and not a PersonEntity.

Get contact entity

You can get a Contact entity either by using the classes provided in the entities layer or by using the agents in the services layer.

Create contact

  • Create contact (REST) / WebApi agents

Interests

Interest tab on Contact card -screenshot

Interests are stored on contacts and persons - there are two separate sets of interests and a separate set of link tables.

InterestLinkTable diagram

The link table (contactinterest) allows a single contact to have zero or more interests checked off.

The ContInt table is an MDO table, so interests can be grouped and organized under headings. The position under a heading does not matter to the linkage to a contact.

SELECT * FROM contint
ContInt_id name rank tooltip deleted registered registered_associate_id
854 Hansa 136 Hansa 0 28.10.2021 13.14:59 94
855 IFS 137 IFS 0 28.10.2021 13.18:17 94
856 Agresso 133 Agresso 0 28.10.2021 13.19:23 94
857 AS400 134 AS400 0 28.10.2021 13.20:22 94
SELECT * FROM contactinterest
contactinterest_id contact_id cinterest_idx startDate endDate flags registered
53459 1 594 31.12.2021 02:13:49 0 28.10.2021 13.14:59
53640 1 1569 31.12.2021 02:13:49 0 28.10.2021 13.14:59
45770 4 965 31.12.2021 02:13:49 0 28.10.2021 13.14:59
45259 9 965 31.12.2021 02:13:49 0 28.10.2021 13.14:59

You can extend the list of interests for a contact by creating and adding a new interest to that list.

Contact cached value

The contact table has a counter field that stores the number of active interests. This field is used to cache the count. It is updated whenever the user edits the company. The field is used to quickly check whether the interests tab needs to indicate the presence of interests or not.

Interest code examples

  • List interests - services
  • Set interest on/off - services
  • ContInt MDO provider

Email and URL

To put together a list of the URLs and emails that belong to a contact:

SELECT * FROM url WHERE contact_id = 123 ORDER BY rank

SELECT * FROM email WHERE contact_id = 123 ORDER BY rank

There may be several URLs all referencing the same project_id. This is OK. The URLs will be presented in rank order. The first rank will always be 1.

These are simpler relationships than the owner ID + type relations used on phone and address.

CategoryList

The category list is used to classify a contact. The Contact.Category_id refers to an item on this list.

There are several methods of getting a category list:

  • ListAgent
  • MDOAgent
Note

All list objects in the NetServer services API have a common interface. They can be accessed or modified using a ListAgent or an MDOAgent. The MDO agent provides a generic mechanism for reading lists. The List agent provides a strongly types API that is simpler to program with.

Explore the options and select the most appropriate method for your application. Consider using the CategoryCache.

Related content

  • Associates
  • Contacts - overview (person table)
  • Documents - overview
  • Follow-ups - overview (appointment table)
  • Projects - overview
  • Sales - overview
  • Address and phone: owner-id and type
  • Working with companies in CRMScript
  • Working with companies in web NetServer services and REST
  • Working with companies at the data layer (entities)
  • Working with companies using rows
  • Working with companies in Objectified SQL
  • Raw SQL queries
In This Article
© SuperOffice. All rights reserved.
SuperOffice |  Community |  Release Notes |  Privacy |  Site feedback |  Search Docs |  About Docs |  Contribute |  Back to top