Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 422 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

brixxbox documentation

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Praxisbeispiele

Screenshots fertiger Applikationen zur Ansicht.

Die hier gezeigten Screenshots enthalten unser internes CI. Selbstverständlich können Sie unsere White-Label-, und Style-Funktionen nutzen, um die Optik Ihren Bedürfnissen anzupassen.

Erstellen Sie mit brixxbox individuelle, rollenbasierte Dashboards.

click to expand

Unser Kanban-Board kann eine ideale Ergänzung für Ihren Workflow sein.

click to expand

Hier sehen Sie eine mögliche Variante des Adressenstamms.

click to expand

Hier sehen eine mögliche Variante des Kunden-Auftrags.

click to expand

Hier finden Sie einen Beispielfragebogen, der z.B. im Bereich QS eingesetzt werden kann.

Functions

cancelCalendarChanges

(Beta) Cancels the drag or edit operation that triggered the OnEventChange event and moves all events back to their origin position. Must be used inside the OnEventChange event.

Parameters

  1. controlId - The id of the calendar control

Example Usages

    brixxApi.cancelCalendarChanges("myCalendar");

deleteConfigRecordById

Deletes a record of a given config

Parameters

  1. configName - the name of the config

  2. id - the record id you want to delete

Example Usages

   brixxApi.deleteConfigRecordById("address", 123);

deleteRecord

Deletes a record from the database.

Parameters

  1. options - json object

    • id - the record id. Optional. By default, this is the current record id. (The current record id can be accessed here: brixxApi.actualRecordId)

    • noConfirmMessage - Optional. By default, this is false. If set to true, you will not get a confirm MessageBox. the record will be deleted.

Example Usages

1. Simple

2. Simple - No Confirmation

3. Without displaying the record

   brixxApi.deleteRecord(); //deletes the current displayed record
   brixxApi.deleteRecord({id: brixxApi.actualRecordId}); //deletes the current displayed record
   brixxApi.deleteRecord({noConfirmMessage: true}); //deletes the current displayed record without confirmation
   let myRecord = await brixxApi.laodRecord("myKeyControl"); loads a record into myRecord
   brixxApi.deleteRecord({id: myRecord.id}); //deletes the loadedRecord

getUserClaim

Brixxapi allows user to set a claim value. This claim Value gets added when user gets logged in. It is used to identify users claim. For example, to check whether a user is someone who he claims to be or not. By using this function, we can get userClaim and make useful comparisons in our apps.

Parameters

  1. claimName - This is the only paramter this function takes. It is the claiName which should be in the form of string.. Brixxapi allows user to add claim name with or with out "claim_" prefix.

Example

Let suppose we have a claimName parameter "EFitDealer" then Brixxapi will consider both "EFitDealer" and "claim_EFitDealer" as same.

Example Usages

We can use "getUserClaim" function to get user's claim, a way to check user identity. As a parameter, we need to provide the claimName to this function. We can provide only the claimName or the claimName plus "claim_" as prefix. Lets see both of them in action. We have a claimName "EfitDealerNumber", now we want to get userClaim:

Lets first do it without prefix "claim_".

   let dealerNumber = brixxApi.getUserClaim("EfitDealerNumber");
   console.log("The dealer Number is: " + dealerNumber);

It is ame as the previous example but now we use prefix.

   let dealerNumber = brixxApi.getUserClaim("claim_EfitDealerNumber");
   console.log("The dealer Number is: " + dealerNumber);

An important thing to notice here is that it is required by Brixxbox that for using SQL Parameters for claims must have to start with the "claim_" prefix.

For example, Userclaims can also be used as SQL parameters:

   select @claim_EfitDealerNumber

globalSearch

This functions is used to trigger global search of the whole workspace. It only takes one parameter which is a search keyword. This function is directly used in the each Brixxbox workspace. User can find it in top right corner of each workspace page. It is a textbox accompanied by search button. User needs to enter a string in the global search field at the top of the screen and it will trigger the search function. It can be useful if you want to search for a scan result or anything within your workspace in seconds.

Parameters

  1. searchTerm - It is of type string.

Example Usages

User can find this button on top right corner. It looks like this.

User can enter any keyword and it with return thespecific results. User can also use this function in their apps. For this user need to provide a search keyword and can use it to retreive data from the global workspace. If user want to search "address" the code will look like this

   brixxApi.globalSearch("address"); //triggers a search for "address" in global address space.

loadRecordById

Loads a record from brixxbox server and returns a promise. This is a async function. You have to await the result, if you want to use it. This function will not display the record, it will just load and return it. To display the record, use the function result with displayRecord.

Parameters

The first parameter is a record id

Example Usages

Simple (pay attention to the await keyword)

   let myRecordId = 123;
   let myRecord = await brixxApi.loadRecordById(myRecordId);

Einstieg und Feature-Übersicht

Was ist brixxbox?

Die brixxbox ist eine App-Builder Low-Code-Plattform, mit der kommerzielle oder administrative Anwendungen erstellt werden können.

Auszug möglicher Anwendungsfälle:

  • Web-Apps

  • online-Formulare mit Backend

  • B2B-Portale

  • AddOns zu bestehenden Systemen

  • ganzheitliche Systeme, wie z.B: ERP-Systeme, CRM-Systeme, SaaS-Lösungen, etc.

Die Plattform bietet eine intuitive Benutzeroberfläche, mit der man die gewünschten Funktionen per Drag-and-Drop auswählen und anpassen kann. Die erstellten Anwendungen sind cloudbasiert, skalierbar und sicher.

Welche Zielgruppe hat brixxbox?

Zu unseren Kunden gehörten IT-Unternehmen und Freelancer. Unsere Kunden nutzen unsere Plattform für Ihre Kundenprojekte.

Unsere Kunden erstellen Ihre eigenen Lösungen (White-Labeling möglich) und vermarkten Diese an Ihre Kunden.

Hinweise zur Projektmethodik

Dank unserer Low-Code-Technologie können unsere Partner jedes Kundenprojekt individuell betrachten, die bedeutet im Detail:

Spezielle Kundenanforderungen können individuell umgesetzt werden, ohne Rücksicht auf andere Projekte nehmen zu müssen

  • Gerade bei vielen Standard-Anbietern ist dies der Fall und individuelle Wünschen können nur in einem ganz engen Rahmen realisiert werden

  • Anforderungen werden direkt mit dem Berater besprochen, der die Wünsche sodann auch umsetzt.

  • ·Bei Standard-Anbietern werden die Anforderungen in der Regel von der Entwicklung realisiert, was zu Informationsverlust und Verzögerung führen kann

Egal welche Anwendung erstellen wollen, Sie profitieren stets von unseren integrierten Feautures (Auszug):

  • Modernes Design

  • cloudbasierte Webanwendung (responsive)

  • Integrierte MS-SQL Datenbank

  • Rollen und Rechtkonzept bis auf Feldebene

  • Mandanten und Währungsfähigkeit

  • Multi-Language (automatische Übersetzung)

  • Integrierte KI

  • Umfassende Schnittstellen-Technologie

  • Integriertes Archiv


Viele unserer free-Trial User interessieren sich auch für folgende Themengebiete:

  • Technische Übersicht

  • Praxisbeispiele

Technische Übersicht

Hier erhalten Sie einen technischen Überblick. Wenn Sie konkrete Einzelfragen haben, kontaktieren Sie uns gerne.

Technologie

brixxbox setzt auf modernste, zukunftsorientierte Technologien wie das ASP.NET-Core-Framework sowie SQL-Datenbanken und Cloud-Computing von Microsoft.

Ihre Anwendungen erhalten eine eigene, Firewall-geschützte Datenbank in der Microsoft-Azure-Cloud. Ihr Daten werden selbstverständlich verschlüsselt.

Anwendungen, die mit der brixxbox erstellt wurden, sind Web-Anwendungen. Daher gibt es grundsätzlich keinerlei Beschränkungen hinsichtlich Gerätetyp und Betriebssystem. Lediglich eine dauerhafte Internetverbindung muss gewährleistet werden.

Die erstellten Anwendungen sind responsive, so dass eine automatische Anpassung an die Bildschirmgröße erfolgt.

Framework

Da brixxbox von Haus aus etliche Funktionalitäten mitbringt, können Nutzer ohne Umwege direkt mit der eigentlichen Erstellung der Apps und Business-Logik beginnen.

Es ist keine manuelle Einrichtung des Workspaces notwendig.

Zu nennen sind in diesem Zusammenhang insbesondere folgende:

Nutzer und Rechteverwaltung

In brixxbox-Anwendungen vergeben Sie Lese- und Schreibrechte auf Basis von Nutzergruppen oder individuell für einzelne Nutzer – und das auf Wunsch bis ins kleinste Detail. So sieht jeder Nutzer nur genau das, was er für seine Arbeit benötigt. Neue Nutzer laden Sie zudem ganz einfach per E-Mail ein.

Versionsverwaltung

Alle durchgeführten Änderungen können Sie verfolgen und auf Wunsch rückgängig machen. Das gilt auch für die Daten in der fertigen Anwendung: Jede Änderung wird mit Zeitpunkt und Urheber dokumentiert.

Automatische Übersetzungen

Dank automatischer Übersetzung sind Ihre brixxbox-Anwendungen direkt multilingual! Wir empfehlen die Applikationserstellung in Englisch. Bei weiteren Fragen halten Sie gerne Rücksprache.

Keine Kompilierung mit brixxbox nötig!

Mit brixxbox erstellte Anwendungen benötigen keine Kompilierung – sobald Sie Ihre Arbeit gespeichert haben, kann das Programm in der jeweils aktuellen Version verwendet werden!

Auf wünsch können Sie selbstverständlich Echt-, und Testsysteme bzw. andere gängige Sicherheitskonzepte integrieren.

Hinweis:

Die Anwendungsentwicklung mit brixxbox geschieht hauptsächlich anhand grafischer Methoden – so gestalten Sie etwa die Benutzeroberfläche ganz einfach per Drag-and-drop.

Logik bringen Sie über die vereinfachte brixxbox-Sprache ins Spiel: Diese basiert im Grunde auf JavaScript und ist für jeden verständlich, der einigermaßen IT-affin ist.

Im Fachjargon spricht man bei diesem Prinzip von „Low-Code-Entwicklung“: Sie arbeiten hauptsächlich mit vorgefertigten Code-Bausteinen und stecken diese über eine grafische Benutzeroberfläche zusammen.

So realisieren Sie komplexe Anwendungen wie ERP-, Warenwirtschafts- und CRM-Systeme, ohne Experte in einer komplizierten Programmiersprache zu sein. Schließlich stellt Ihnen der brixxbox-Baukasten bereits alle Bausteine zur Verfügung, die Sie für die Entwicklung moderner Anwendungen brauchen – Sie müssen diese nur noch zusammensetzen.

Schnittstellen

Über verschiedene Schnittstellen wie Rest- oder Third-Party-APIs können Ihre Anwendungen mit anderen Systemen kommunizieren.

Node-RED ist ein Flow-Editir, mit dem JavaScript-Funktionen erstellt werden können. Anwendungselemente können zur Wiederverwendung gespeichert oder geteilt werden.

Webservices ermöglichen es, dass Maschinen oder Anwendungen miteinander kommunizieren könnenDie Laufzeitumgebung wurde auf Node. js gebaut und die in Node-RED erstellten Flows werden in JSON gespeichert

Ein Web Service ist eine Software, die über das Internet mit anderen Programmen kommunizieren kann.

Ein Web Service bietet eine standardisierte Schnittstelle, die unabhängig von der Programmiersprache, dem Betriebssystem oder der Plattform ist.

Ein Web Service kann verschiedene Funktionen erfüllen, wie zum Beispiel Daten austauschen, Geschäftsprozesse ausführen oder Anwendungen integrieren.

Eine REST API ist eine Schnittstelle, die es einem Client ermöglicht, mit einem Server zu kommunizieren, indem er HTTP-Anfragen sendet und HTTP-Antworten empfängt.

REST steht für Representational State Transfer, ein Architekturstil, der definiert, wie Ressourcen auf einem Server identifiziert, abgerufen, erstellt, aktualisiert und gelöscht werden können. Eine REST API basiert auf den Prinzipien von Zustandslosigkeit, Einheitlichkeit, Adressierbarkeit und Selbstbeschreibung.

Eine REST API ermöglicht es einem Client, die Funktionalität eines Servers zu nutzen, ohne dessen interne Struktur oder Implementierung zu kennen.

Zusätzlich können natürlich individuelle Schnittstellen besprochen werden.

Infrastruktur

Im Standard hosten wir die Applikationen und Daten in unserer Microsoft-Azure-Cloud. Je nach Setup und konkreten Kundenwunsch sind auch individuelle Konzepte möglich, die je nach Einzelfall geklärt werden müssen. Als Datenbank wird nur der Microsoft SQL-Server unterstützt.

brixxbox unterstützt 2 Setups, die sich primär hinsichtlich der zu Grunde liegenden Datenhaltungsstrategie unterscheiden:

Hinweis: In Ausnahmefällen können wir auch eine komplette on-premise (Daten & Web-Service) Installation durchführen.

klcik to expand
click to expand

Integrierte KI

KI (künstliche Intelligenz) ist in vielen Bereichen der Software-Entwicklung von großer Bedeutung und der Low Code-Anwendungsbereich ist keine Ausnahme. Low Code-Software bietet visuelle Drag-and-Drop-Tools, die es Benutzern ermöglichen, benutzerdefinierte Anwendungen ohne tiefgreifende Programmierkenntnisse zu erstellen und zu verwalten. KI kann in diesen Prozess eingebunden werden, um die Entwicklung von Anwendungen noch schneller und einfacher zu gestalten.

Eines der Hauptanwendungsgebiete von KI in Low Code ist die Automatisierung von Workflows. Mit Hilfe von KI-Technologien wie maschinellem Lernen und natürlicher Sprachverarbeitung können Low Code-Anwendungen automatisiert werden, um Daten einzugeben, Prozesse auszuführen und Benachrichtigungen zu senden. Dies kann die Effizienz von Unternehmen erheblich verbessern und den Bedarf an manueller Arbeit reduzieren.

KI kann auch in der Analyse von Daten eingesetzt werden, um Unternehmen dabei zu helfen, bessere Entscheidungen zu treffen. Low Code-Anwendungen können mit KI-Algorithmen ausgestattet werden, die große Mengen von Daten analysieren und wichtige Insights bereitstellen, die für die Geschäftsführung von großer Bedeutung sein können.

Insgesamt bietet der Einsatz von KI in Low Code-Anwendungen viele Vorteile für Unternehmen. Es kann die Effizienz erhöhen, den Bedarf an manueller Arbeit reduzieren und wichtige Insights liefern, die bei der Entscheidungsfindung helfen. Wenn Sie mehr über die Möglichkeiten von KI in Low Code-Anwendungen erfahren möchten, empfehlen wir Ihnen, sich mit uns in Verbindung zu setzen. Wir stehen Ihnen gerne zur Verfügung, um Ihnen bei der Entwicklung von Low Code-Anwendungen mit KI-Unterstützung zu helfen.

Unser brixxbot ist nur ein Beispiel, wie KI Sie innerhalb der brixxbox unterstützen kann:

click to expand

Multi-Language

Dank automatischer Übersetzung sind Ihre brixxbox-Anwendungen direkt multilingual! Natürlich steht aber auch einem manuellen Feinschliff der Übersetzungen nichts im Weg.

Hinweis:

Wir empfehlen die Konfiguration in englisch vorzunehmen, um die besten Ergebnisse im Hinblick auf die Übersetzung zu erhalten.

Sie können die Übersetzung innerhalb des App-Designers oder im globalen Bereich steuern, siehe Screenshot:

click to expand

Custom Grid Column Date Format

Mandanten und Währungsfähigkeit

Ein IT-System, das mandanten- und währungsfähig ist, bietet viele Vorteile für Unternehmen, die in verschiedenen Ländern oder Märkten tätig sind.

Ein mandantenfähiges IT-System ermöglicht es, mehrere rechtlich selbstständige Einheiten innerhalb eines Systems zu verwalten, ohne dass Daten oder Prozesse vermischt werden. Dies erleichtert die Konsolidierung, das Reporting und die Compliance.

Ein währungsfähiges IT-System ermöglicht es, Transaktionen in verschiedenen Währungen durchzuführen, zu bewerten und abzurechnen, ohne dass manuelle Umrechnungen oder Anpassungen erforderlich sind.

Dies erhöht die Genauigkeit, die Effizienz und die Transparenz. Ein IT-System, das sowohl mandanten- als auch währungsfähig ist, kann also die Flexibilität, die Skalierbarkeit und die Wettbewerbsfähigkeit eines Unternehmens verbessern.

Sofern Ihr Einsatz-Szenario es erfordert können Sie mit brixxbox Mehr-Mandantensysteme erstellen, sowie Systeme die mit mehreren Währungen agieren müssen.

App Erstellung

Welche Vorkenntnisse benötige ich?

Die Erstellung der Benutzeroberflächen/ Apps geschieht hauptsächlich anhand grafischer Methoden – per Drag-and-drop.

(Business-)Logik bringen Sie zum einen über die vereinfachte brixxbox-Sprache ins Spiel: Diese basiert im Grunde auf JavaScript.

Darüber hinaus sollten Sie Grundkenntnisse im Bereich SQL besitzen.

Hinweis:

Wenn Sie im Vorfeld bereits erweiterte Excell-, oder Access-Kenntnisse erlangt haben (z.B. Makros, VBA), ist dies eine ideale Grundlage für die Nutzung unserer Plattform.

Wie möchten Sie starten

Übersicht des Design-Cockpits

How Tos

Grundsätzlich bedeutet die Anwendungsentwicklung mit brixxbox, dass Sie sich unabhängig von Standard-Software machen.

Anpassungswünsche erfüllen Sie mit brixxbox direkt und ohne Kompromisse. Schließlich können Sie Prozesse und Funktionen genau so abbilden, wie Sie sie brauchen – ohne den überflüssigen Ballast, den standardisierte Software zwangsläufig mitbringt.

Das bedeutet aber nicht, dass Ihre Anwendung isoliert ist: Verschiedene Schnittstellen ermöglichen den gegenseitigen Austausch von Daten zwischen Ihrer brixxbox-Anwendung und anderer Software.

Nachfolgender Übersicht können Sie darüber hinaus die Unterschiede zur Individualentwicklung bzw. Standardsoftware entnehmen.

click to expand

Rollen und Rechte

Das brixxbox Rollen- und Rechteskonzept kann bis auf Feldebene definiert werden, um die Zugriffsrechte von verschiedenen Benutzern oder Gruppen auf bestimmte Daten oder Funktionen zu steuern. Die Vorteile eines solchen Konzepts sind:

  • Es erhöht die Sicherheit, indem es verhindert, dass unbefugte Personen sensible oder vertrauliche Informationen einsehen oder manipulieren können.

  • Es verbessert die Effizienz, indem es den Benutzern nur die Daten oder Funktionen anzeigt, die sie für ihre Aufgaben benötigen, und so die Komplexität und den Aufwand reduziert.

  • Es fördert die Zusammenarbeit, indem es den Informationsaustausch und die Kommunikation zwischen verschiedenen Abteilungen oder Bereichen erleichtert, die gemeinsame Ziele verfolgen.

  • Es erleichtert die Verwaltung, indem es eine klare und konsistente Struktur für die Zuweisung und Überprüfung der Zugriffsrechte bietet, und so die Nachvollziehbarkeit und die Einhaltung von Richtlinien gewährleistet.

Integriertes Archiv

Sie können jede erstellte Applikation mit nur einem Click erweitern und eine Archiv-Funktion aktivieren.

Die Daten können manuell oder über einen definierten Workflow zugefügt werden.

Der nachfolgende Screenshot zeigt ein Beispiel im Bereich der Adressdaten:

click to expand
click to expand

Responsive Design

Mit brixxbox erstellte Anwendungen sind responsive, das heißt sie passen sich automatisch an die Bildschirmgröße an.

brixxbox setzt dabei auf die Bootstrap- Methodik.

Bootstrap enthält ein reaktionsfähiges, für Mobilgeräte geeignetes, flüssiges Rastersystem, das mit zunehmender Größe des Geräts oder des Ansichtsfensters auf bis zu 12 Spalten skaliert.

addClassToGridRowCell

This function is used to color a single cell in a grid, or highlight it.

Parameters

  1. eventParameter - this is the special parameter you get in OnRowCreated

  2. columnId - the name (id) of the column

  3. className - the classnaem to set

Example Usages

Example inside OnRowCreated

   brixxApi.addClassToGridRowCell(eventArgs, "cordlnShippedQuantity", "success");

Telerik Page Footer Sum

How to use brixxbox custom functions in telerik

BrixxPageFooterSum

Sums elements in a table up to this footer

Each page sum function can only be used once in a report. Using it multiple times will result in wrong calculated values!

Demo

//This function belongs in a PageFooterSection of a telerik report
=PageExec("textBoxValue",             //put in a textbox from your table row. Typically your value textbox, but whatever is in your row will work. This triggers the accumulation of the values
           BrixxPageFooterSum(
               Fields.yourValue,      //put in the Value Field you want to sum up
               ReportDefinition))     //this is fix (it will tell the sum to reset for each new report)

Printing in LAN

How to print on a local Printer in your LAN

This video explains how to print in a local network, when using the brixxbox cloud service.

businessBrixx

Business Brixxes provides special features for business usecases. Each Brixx has an individual set of parameters plus some parameters that are valid for all businessfunctions.

Parameters

 functionName - the name of the businessBrixx module
 methodName - some businessBrixx functions provide several operations
 silentMode - if you set this to true, the brixxbox will not show a message if something goes wrong. You will still get the errorMessage, to handle the error case in your event code.

Example Usages

   let result = await brixxApi.businessBrixx({
      //Common Parameters for all functions
      functionName:"DhlShiping",
      methodName: "GetLabel",
      silentMode: true,  //false is default. If set to true, the brixxbox will not show an error message box. it is up to you to inform the user.
  
      //Individual paremeters for each business case. DHL Label as an example here.
      shipmentNumber: app.getFieldValue("cordShipmentNumber") //We saved this number before and stored it to our Order
   });
   window.open(result.labelUrl, "_blank");

Business Brixx

  • DhlShiping

    • CreateShipment → Creates a DHL Shipping Label.

    • GetLabel → Shows the shipment Label again.

  • DPD Shipping

    • CreateShipment → Create a DPD Shipping Label.

  • UPS Shipping

    • CreateShipment → Create a UPS Shipping Label.

    • CancelShipment → Removes existing Shipment

    • GetLabel → Shows the shipment Label again.

  • InventoryManagement → Does Inventory Movements within an ERP Setup

    • Move

  • CurrencyConverter

    • Convert → Converts a currency to annother currency.

  • Datev Export

    • DatevExport → This function exports a Datev CSV file for a given timeframe.

      • sqlDataRead Example

      • sqlMainData Example

      • sqlGetCounter Example

  • GS1 Code Splitter

    • Split → Splits a barcode (or 2d code) into its GS1 AIs an Values.

  • Diamant

    • DiamantBusinessBrixx

  • SEPA Export

CreateShipment

Creates a DPD Shipping Label

For accessing the DPD-Shipping brixxbox interface the DPD services need the following setup values (configuration -> settings).

  • DPDUserCredentialsCloudUserID

  • DPDUserCredentialsToken

  • DPDPartnerCredentialsName

  • DPDPartnerCredentialsToken

If no settings are available, a sample label will be generated.

Incomming Information

To create labels three groups of information are available:

  • 1. OrderSettings with the following fields (If the group is not present default values will be assumed)

    • language: Values „de_DE“ or „en_EN“ are allowed. If nothing is set „de_DE“ will be assumed.

    • ShipDate: if not available will be set to „today“

    • LabelSize: „PDF_A4“ or „PDF_A6“. If nothing is set „PDF_A4“ will be assumed.

    • LabelStartPosition: “UpperLeft“, „UpperRight“, „LowerLeft“, „LowerRigh“

  • 2. ShipAddress:

    • Company

    • Gender

    • Salutation

    • FirstName

    • LastName

    • Name

    • Street

    • HouseNo

    • ZipCode

    • City

    • Country

    • State

    • Phone

    • Mail

  • 3. ParcelData:

    • YourInternalID: should be set to your own reference (e.g. order no). if no value is provided a timestamp will be set.

    • Content

    • Weight: in kg

    • Reference1

    • Reference2

    • ShipService: set to a valid DPD-Service. If nothing is set “Classic” will be assumed.

Detailed informationen for field usage can be found at https://esolutions.dpd.com/dokumente/DPD_Cloud_Service_Webservice_Dokumentation_DE.pdf

Returning Information

  • In case of success (status 200) the following fields are returned

    • ParcelNo: The DPD generated ID. This will be used for further references to this shipment.

    • YourInternalID: The same ID that was provided for the request

    • TimeStamp: an informational time stamp when the request was processed

    • LabelData: this is a blob response. It contains the actual label in PDF format and can directly be used for further processing. E.g. “brixxApi.printBlob(LabelPDF);”

  • In case of error (status 400) the following fields are returned:

    • TimeStamp: an informational time stamp when the request was processed

    • ErrorDataList: an array with detailed information what went wrong. Every error will show the following fields

      • ErrorID: an internal error no

      • ErrorCode: an internal error code

      • ErrorMsgShort: Error information short version

      • ErrorMsgLong: Error information long version

Example Usages

/*----------------------------------------------------------------------------------------------
/This example is minimalistic and will create a sample label. 
/You need to check which fields are relevant for your process and assign the values accordingly.
/----------------------------------------------------------------------------------------------*/

var result = await brixxApi.businessBrixx({
      functionName:"DPDShipping",
      methodName: "CreateShipment",
	  ShipAddress : {
		Company: 'Mustermann AG',
		Name: 'Max Mustermann',
		Street: 'Wailandtstr.',
		HouseNo: '1',
		ZipCode: '63741',
		City: 'Aschaffenburg',
		Country: 'DEU'
	  },
	  ParcelData : {
		Reference1: 'Customer email',
		Content: 'Order number',
		Weight: '13.5'
      }
      });
console.log("Parcel Number: " + result.ParcelNo)
brixxApi.printBlob(result.LabelData);


/*----------------------------------------------------------------------------------------------
/This example uses all fields
/You need to check which fields are relevant for your process and assign the values accordingly.
/----------------------------------------------------------------------------------------------*/
var result = await brixxApi.businessBrixx({
      functionName:"DPDShipping",
      methodName: "CreateShipment",
			OrderSettings : {
				language: 'de_DE',
				LabelSize : 'PDF_A4',
				LabelStartPosition : 'UpperLeft',
				ShipDate : app.getFieldValue("SomeFieldValue")
			  },
			ShipAddress : {
				Company: app.getFieldValue("SomeFieldValue"),
				Gender: app.getFieldValue("SomeFieldValue"),
				Salutation: app.getFieldValue("SomeFieldValue"),
				FirstName: app.getFieldValue("SomeFieldValue"),
				LastName: app.getFieldValue("SomeFieldValue"),
				Name: app.getFieldValue("SomeFieldValue"),
				Street: app.getFieldValue("SomeFieldValue"),
				HouseNo: app.getFieldValue("SomeFieldValue"),
				ZipCode: app.getFieldValue("SomeFieldValue"),
				City: app.getFieldValue("SomeFieldValue"),
				Country: app.getFieldValue("SomeFieldValue"),
				State: '',
				Phone: app.getFieldValue("SomeFieldValue"),
				Mail: app.getFieldValue("SomeFieldValue")			  
			  },
			ParcelData : {
				Reference1: app.getFieldValue("SomeFieldValue"),
				Reference2: app.getFieldValue("SomeFieldValue"),
				Content: app.getFieldValue("SomeFieldValue"),
				Weight: app.getFieldValue("SomeFieldValue"),
				YourInternalID: app.getFieldValue("SomeFieldValue"),
				ShipService: app.getFieldValue("SomeFieldValue")			  
			  }
      });
console.log("Parcel Number: " + result.ParcelNo)
brixxApi.printBlob(result.LabelData);

Datev Export

This function exports a Datev CSV file for a given timeframe. The fuction needs 3 customized SQL scripts to process the data.

As this function calls customized SQL scripts, it will add SQL parameters from the function call to the SQL calls.

  • @company

  • @dateFrom

  • @dateUntil

Those parameters can be used within the SQL statements.

Needed output columns from SQL scripts

  • sqlDataRead script

    • Auftragsnummer

    • Artikelnummer

    • ArtikelRecordId

    • Paragraph13b

    • NettoWert

    • BruttoWert

    • Debitorenkonto

    • Kreditorenkonto

    • Sachkonto

    • SteuerID

    • Buchungsschluessel

    • Buchungstext

    • Rechnungsdatum

    • Rechnungsnummer

    • Leistungsdatum

    • AttachementId

    • BuchungszaehlerTabelle (nvarchar that defines the tabel, where the booking counter is stored)

    • BuchungszaehlerSpalte (nvarchar that devines the column for the booking counter)

    • IstAutomatikKonto

    • IstInnerbetrieblich

  • sqlMainData script

    • Kundennummer

    • Konto

    • Firmenname

    • Nachname

    • Vorname

    • Anrede

    • Adresstyp

    • Strasse

    • Hausnummer

    • PLZ

    • Stadt

    • Zusatzinformation

  • sqlGetCounter script

    • This script needs to return the actual booking counter as number.

SQL script examples

  • sqlDataRead Example

  • sqlMainData Example

  • sqlGetCounter Example

Example Usages

 brixxApi.businessBrixx({
    functionName:"DatevExport",
    sqlDataRead:"getDatevData",
    sqlMainData:"getDatevMainData",
    sqlGetCounter:"getDatevBookingCounter",
    exportFromDate: moment().subtract(2,'months').startOf('month').format('YYYY-MM-DD'),
    exportUntilDate: moment().subtract(2,'months').endOf('month').format('YYYY-MM-DD'),
    consultantNumber: 1234567,
    clientNumber: 12345,
    company: 1,
    isDownload: true
 });

Telerik Extension Functions

Telerik Page Header Sum

Sums elements in a table up to this header (carry over from previous footer sum)

Each page sum function can only be used once in a report. Using it multiple times will result in wrong calculated values!

//This function belongs in a PageHeaderSection of a telerik report
=PageExec("textBoxValue",             //put in a textbox from your table row. Typically your value textbox, but whatever is in your row will work. This triggers the accumulation of the values
           BrixxPageHeaderSum(
               Fields.yourValue,      //put in the Value Field you want to sum up
               PageNumber,            //this is fix (the PageNumber variable from your report. this will tell the function when to take a sum)
               ReportDefinition))     //this is fix (it will tell the sum to reset for each new report)

Create Report REST

Example of a HTTP Request to the brixxbox

Create Report REST

You can create a report from 3rd party systems by using a http POST call to the brixxbox.

We created a postman solution to demonstrate the call because you have to login first. Run in Postman

3 Environment Variables have to be set in Postman: "UserEmail" and "UserPassword" for the login call an "Workspace" for the url part of the CreatePdf call

You can specify if the report should be archived or not in the post parameters:

// POST call to https://app.brixxbox.net/w/{{Workspace}}/c/default/reporting/CreatePdf
{
   "reportName": "addresslist", 

   //optional parameters
   "archive": false, //optional, false is default
   "configName": "address", //optional, only if you want to archive
   "documentTypeId": 1, //optional, only valid if configName and parameter 'id' is set and archive is true
   "culture": "de-DE", //optional, report has its defaults
   "parameters": { //optional
       "id": 1
   }
}

addCalendarEventSource

(Beta) Adds an event source object to the calendar

Parameters

  1. controlId - The id of the calendar control

  2. eventSource - the Event source object

Example Usages

   app.addCalendarEventSource("myCal", {
      events: [
         {
            title: 'Sammple Event 1',
            start: '2020-12-08',
         },
         {
            title: 'Sammple Event 2',
            start: '2020-12-10',
         },
      ],
      id: 1,
      color: 'yellow',   // an option!
      textColor: 'black' // an option!
   });

addEventListener

Adds an Event Listener to the brixxbox or one of its controls

Parameters

  1. Events

  2. Control Id (optional)

    • If the event is control specific (e.g. click on a buttton), this has to be the control id of that button

  3. Function

    • The code that should be executed in case of this event

    • The first parameter is the brixxApi

Example Usages

   brixxApi.addEventListener("onRecordSaved", function (brixxApi, eventArgs) {
      alert("Record saved in " + brixxApi.appName);
   });
   brixxApi.addEventListener("onClick", "myButton", function (/*event parameters are optional*/) {
      alert("Button clicked");
   });

Inventory Movement

Stores an inventory movement in a table with a certain structure. The Function handles database transactions and generates movement ids.

Mandatory fields: imItemId, imQuantity

Example Usages

   await brixxApi.businessBrixx({
        functionName:"InventoryMovement",
        movementTable:"inventoryMovement",
        movements:[
    {
                imQuantity: app.getFieldValue("quantityToShip") * -1,
                imAddressId: app.getFieldValue("companyId"),
                imItemId: app.getFieldValue("itemId"),
        imImei: app.getFieldValue("imei"),
        },
        {
                imQuantity: app.getFieldValue("quantityToShip"),
                imAddressId: app.getFieldValue("customerId"),
                imCustomerUserId: app.getFieldValue("customerUserId"),
                imItemId: app.getFieldValue("itemId"),
        imCustomerOrderLineId: app.getFieldValue("orderLineId"),
        imImei: app.getFieldValue("imei"),
        },
        ]
    });

UPS Shiping

Contents

  • 1 Business Brixx UPS Shipping

  • 2 Business Brixx UPS Shipping -> CreateShipment

    • 2.1 Incomming Information

    • 2.2 Returning Information

    • 2.3 Example Usages

  • 3 CancelShipment

  • 4 GetLabel

Business Brixx UPS Shipping

For accessing the UPS-Shipping brixxbox interface the UPS services need the following setup values (configuration -> settings).

  • UPSCustomerID Your customer number with UPS

  • UPSUsername A valid User for accessing the services

  • UPSPassword The corresponding password

  • UPSAccessLicenseNumber A license/access key provided by UPS on this page https://www.ups.com/upsdeveloperkit

If no settings are available, a sample label will be generated.

Business Brixx UPS Shipping -> CreateShipment

Creates a UPS shipping label

Incomming Information

To create labels four groups of information are available:

  • 1. Settings with the following fields (If the group/field is not present default values will be assumed)

    • ServiceCode: default value "11" UPS Standard. Valid values according to UPS service codes.

    • MetricMeasurements: "1" sets to true. This is the default. Measurements will be metric e.g. kg, cm or nonmetric for lbs, inch

    • Language: Language code according to UPS. e.g. deu, eng, spa. this field will be set to user language by default. If the user language is not available for UPS, "eng" will be used.

  • 2. Shipper:

    • Name

    • Street

    • HouseNo

    • ZipCode

    • City

    • CountryCode

    • StateProvinceCode

    • AttentionName

    • Phone

    • EMail

    • FaxNumber

    • TaxIdentificationNumber

  • 3. ShipAddress:

    • Name

    • Street

    • HouseNo

    • ZipCode

    • City

    • CountryCode

    • StateProvinceCode

    • AttentionName

    • Phone

    • EMail

    • FaxNumber

    • TaxIdentificationNumber

  • 4. ParcelData:

    • Description

    • PackageType: Package type according to UPS. If no value is given, the default will be set to: "02" Customer Supplied Package

    • Weight

    • Height

    • Length

    • Width

Returning Information

  • In case of success (status 200) the following fields are returned

    • TrackingNumber: The UPS generated ID. This will be used for further references to this shipment.

    • LabelData: this is a blob response. It contains the actual label in GIF format and can directly be used for further processing. E.g. “brixxApi.printBlob(LabelData);”

  • In case of error (status 400) the following fields are returned:

    • error: a text showing the first error. E.g. “console.log(result.error);”

Example Usages

var result = await brixxApi.businessBrixx({
      functionName:"UPSShipping",
      methodName: "CreateShipment",
			Settings : {
				Language: 'deu',
				MetricMeasurements: 1,
				ServiceCode: "11"
			  },
			Shipper : {
				Name: 'Brixxbox GmbH',
				Street: 'Husarenstraße',
				HouseNo: '34a',
				ZipCode: '41836',
				City: 'Hückelhoven',
				CountryCode: 'DE'
			  },
			ShipAddress : {
				Name: 'Brixxbox GmbH',
				Street: 'Husarenstraße',
				HouseNo: '34b',
				ZipCode: '41836',
				City: 'Hückelhoven',
				CountryCode: 'DE',
				Phone: '+49 1234 5678-9',
				Mail: 'm.mustermann@mustermann.com'			  
			  },
			ParcelData : {
				Description: 'Product name',
				Height : 10,
				Length : 20,
				Width  : 15,
				Weight: '4.5',
				ServiceCode: '9'			  
			  }
      });
	  
console.log("Tracking Number: " + result.TrackingNumber);
brixxApi.printBlob(result.LabelData);

CancelShipment

To cancel an existing shipment only the TrackingNumber is needed.

var result = await brixxApi.businessBrixx({
      functionName:"UPSShipping",
      methodName: "CancelShipment",
	 TrackingNumber: app.getFieldValue("ExistingTrackingNumber")
      });

GetLabel

In case the label is needed again it can be retrieved with an existing TrackingNumber. The result will show LabelData (see CreateShipment results #Returning_Information for details)

var result = await brixxApi.businessBrixx({
      functionName:"UPSShipping",
      methodName: "GetLabel",
	 TrackingNumber: app.getFieldValue("ExistingTrackingNumber")
      });

Client API Reference

brixxApi Functions

The brixxApi provides a set of functions for each brixxbox. These functions can be used inside brixxbox events, to interact with the brixxbox and modify the behaviour of the application.

Common Functions

  • inviteUser(string email)

App Functions

  • setToolbarButtonMode(string toolbarButtonId, string mode)

  • addToolbarButton(toolbarButtonOptions)

  • readOnlyMode(bool readOnly, options)

  • excludeFromReadonly([])

  • startScanner(string controlId, scanOptions)

  • isUserInRole(string role)

  • globalSearch(string searchTerm)

  • getDate(Date date)

  • getUserClaim(string claimName)

  • getSessionToken()

  • getBrowserToken()

  • logAdd()

  • enableNotifications()

  • setToolbarButtonMode(string toolbarButtonId, string mode)

  • addToolbarButton(toolbarButtonOptions)

  • readOnlyMode(bool readOnly, options)

  • excludeFromReadonly([])

  • startScanner(string controlId, scanOptions)

  • isUserInRole(string role)

  • globalSearch(string searchTerm)

  • getDate(Date date)

  • getUserClaim(string claimName)

  • getSessionToken()

  • getBrowserToken()

  • logAdd()

  • enableNotifications()

Field Manipulation

  • setFieldValue(string controlId, value) // Value can be of any javascript value type i.e. string, integer, Date etc.

  • getFieldValue(string controlId)

  • setLabelText(string controlId, string labelText)

  • initAllControls()

  • initControl()

  • setControlUnmodifiedValue(string controlId, string valueToCompare) // Value can be of any javascript value type i.e. string, integer, Date etc.

  • getControlUnmodifiedValue(string controlId[[[[markAllControlsAsUnModified|markAllControlsAsUnModified()]]]]

  • getHtmlElement(string controlId)

  • setVisibility(string controlId, bool visible, string subControl) // visible(default True) and subControlare optional parameters.

  • setEnable(string controlId, bool visible, string subControl) // visible(default True) and subControl are optional parameters.

  • triggerEvent(string eventName, string controlId)

  • refresh(string controlId) // If used without parameter, refreshes all controls.

  • refreshBadges()

  • showTabPage(string controlId)setGridGrouping(string controlId, groupConfiguration) // groupConfiguration can either null, undefined or columnId.

  • setGridAutoRefresh(string controlId, Number autoRefreshSeconds ) // inputDate can be of Date type or a controlId of date/datetime control.

  • getCalcDateTime(inputDate, accuracy) // inputDate can be of Date type or a controlId of date/datetime control and accuracy can be seconds(default), minutes, or hours.

  • enableValidator(string controlId, string validatorName, bool enable) // enable can be true(default)/false.

  • reInitValidation()

  • setFieldUnit(string controlId, string unitName) // If no value is given for unitName then unit will be removed.

  • setDecimalDigits(string controlId, Number value)

  • addClassToGridRowCell(eventParameter, columnId, className)

  • showRowDetailButton(Row, bool show)

  • showRowDetailPanel(Row, bool show)

  • clearGridSelection(string controlId)

  • selectGridRows(string controlId, string columnId, value) // Value can be of any javascript value type i.e. string, integer, Date etc.

  • unselectGridRows(string controlId, string columnId, value) // Value can be of any javascript value type i.e. string, integer, Date etc.

  • toggleGridSelection(string controlId)

  • isRowSelected(string controlId, line)

  • switchTagControl(string controlId, bool editMode) // editMode is optional parameter.

  • setFocus(string controlId, bool select)

  • setTextColor(string controlId, string colorName) // colorName can be "default", "primary", "secondary", "success", "danger", or "warning".

  • setFontWeight(string controlId, string fontWeight) // fontWeight can be normal or bold.

  • setFontStyle(string controlId, string fontStyle) // fontStyle can be italic or normal.

  • setBackgroundColor(string controlId, string colorName) // colorName can be "default", "primary", "secondary", "success", "danger", or "warning".

  • disableGridHyperLinks(string controlId, bool disable)

  • getSignatureImageBlob(string controlId, string type) // Type can be of png(default) or svg.

  • cancelCalendarChanges(string controlId)

  • addCalendarEventSource(string controlId, eventSource) //eventSource is a JSON Object.

  • setFieldValue(string controlId, value) // Value can be of any javascript value type i.e. string, integer, Date etc.

  • getFieldValue(string controlId)

  • setLabelText(string controlId, string labelText)

  • initAllControls()

  • initControl()

  • setControlUnmodifiedValue(string controlId, string valueToCompare) // Value can be of any javascript value type i.e. string, integer, Date etc.

  • getControlUnmodifiedValue(string controlId[[[[markAllControlsAsUnModified|markAllControlsAsUnModified()]]]]

  • getHtmlElement(string controlId)

  • setVisibility(string controlId, bool visible, string subControl) // visible(default True) and subControlare optional parameters.

  • setEnable(string controlId, bool visible, string subControl) // visible(default True) and subControl are optional parameters.

  • triggerEvent(string eventName, string controlId)

  • refresh(string controlId) // If used without parameter, refreshes all controls.

  • refreshBadges()

  • showTabPage(string controlId)

  • setGridGrouping(string controlId, groupConfiguration) // groupConfiguration can either null, undefined or columnId.

  • setGridAutoRefresh(string controlId, Number autoRefreshSeconds ) // inputDate can be of Date type or a controlId of date/datetime control.

  • getCalcDateTime(inputDate, accuracy) // inputDate can be of Date type or a controlId of date/datetime control and accuracy can be seconds(default), minutes, or hours.

  • enableValidator(string controlId, string validatorName, bool enable) // enable can be true(default)/false.

  • reInitValidation()

  • setFieldUnit(string controlId, string unitName) // If no value is given for unitName then unit will be removed.

  • setDecimalDigits(string controlId, Number value)

  • addClassToGridRowCell(eventParameter, columnId, className)

  • showRowDetailButton(Row, bool show)

  • showRowDetailPanel(Row, bool show)

  • clearGridSelection(string controlId)

  • selectGridRows(string controlId, string columnId, value) // Value can be of any javascript value type i.e. string, integer, Date etc.

  • unselectGridRows(string controlId, string columnId, value) // Value can be of any javascript value type i.e. string, integer, Date etc.

  • toggleGridSelection(string controlId)

  • isRowSelected(string controlId, line)

  • switchTagControl(string controlId, bool editMode) // editMode is optional parameter.

  • setFocus(string controlId, bool select)

  • setTextColor(string controlId, string colorName) // colorName can be "default", "primary", "secondary", "success", "danger", or "warning".

  • setFontWeight(string controlId, string fontWeight) // fontWeight can be normal or bold.

  • setFontStyle(string controlId, string fontStyle) // fontStyle can be italic or normal.

  • setBackgroundColor(string controlId, string colorName) // colorName can be "default", "primary", "secondary", "success", "danger", or "warning".

  • disableGridHyperLinks(string controlId, bool disable)

  • getSignatureImageBlob(string controlId, string type) // Type can be of png(default) or svg.

  • cancelCalendarChanges(string controlId)

  • addCalendarEventSource(string controlId, eventSource) //eventSource is a JSON Object.

Printing and Documents

  • print(string controlId) // Id of report control which is to be printed.

  • printBlob(printDoc) // printDoc is a document which is to be printed.

  • showBlob(string controlId, blobData)

  • createReport(reportControlId, createOptions) // CreateOptions is a JSON object. It contains options like print, archive, saveFile etc. for report creation.

Data Storage

  • loadRecord(string controlId)

  • loadRecordById(Number recordId)

  • loadConfigRecordById(string configName, Number recordId)

  • deleteConfigRecordById(string configName, Number recordId)

  • copyConfigRecordById(string configName, Number recordId, additionalValues) // additionalValues is a JSON object, it contains values need to be modified in target record.

  • loadAndDisplayRecord(Number keyFieldId)

  • loadAndDisplayRecordById(Number recordId)

  • displayRecord(myRecord,string myKeyControlId)

  • deleteRecord(options) // options is a JSON object which include properties id, noConfirmationMessage.

  • validateInput()

  • saveCurrentRecord(string configName, record) // record is a JSON like object.

  • saveCurrentRecordWithoutEvents()

  • saveConfigRecord(string configName, Number recordId)

  • newRecord()

  • newGridEntry(string gridControlId)

  • executeStoredProcedure(string procedureName, procedureParameters, queryOptions) // procedureParameters and queryOptions are JSON objects.

  • queryStoredProcedure(string procedureName, procedureParameters, queryOptions) // procedureParameters and queryOptions are JSON objects.

  • refreshDataSource(string controlId) // Refreshes controlId. If used without parameters, it refreshes all controls with datasources.

  • localValue(string keyName, string keyValue)

  • sqlRead(string statementName, additionalParameters, queryOptions) // additionalParameters and queryOptions are JSON objects.

  • sqlWrite(string statementName, additionalParameters, queryOptions) // additionalParameters and queryOptions are JSON objects.

  • sqlReadValue(string statementName, additionalParameters, string columnName queryOptions)

Build in Tools

  • composeEmail(emailOptions) // emailOptions is a JSON object, it contains options like to, cc, bcc, text, and subject etc which can be used to send an email.

  • getGeoLocation()

  • showWikiPage(string pageName, bool global) // If global is true, global wiki page is shown. Otherwise workspace wiki page is shown.

  • showDiscussion(bool show) // Default show value is is true.

  • showAttachments(bool show) // Default show value is is true.

  • showMessage(messageOptions) // messageOptions is a JSON object.

  • showMessageBox(messageBoxOptions) // messageBoxOptions is a JSON object.

  • messageBox(messageBoxOptions) // messageBoxOptions is a JSON object.

  • refreshAttachments()

  • getAttachmentById(Number id)

  • getAttachmentByFileName(string fileName)

  • getAttachmentsForCurrentRecord()

  • getAttachmentId(string fileName)

  • getConfigRecordAttachmentIdByFileName(string appName, Number recordId, string fileName)

  • downloadAttachments(downloadOptions) //downloadOptions is a JSON object. It iscludes resquestedIds list and file name for downloaded file.

  • uploadAttachment(blob data,Number documentTypeId, string fileName) // documentTypeId and fileName are optional parameters.

  • deleteAttachment(Number attachmentId)

  • replaceText(string text, additionalReplacement) // additionalReplacement is a JSON object with key value pairs.

  • callWebHook(string url, string message)

  • getCustomMessage(string messageName, params, string targetLanguage) // params is a JSON object.

  • getCustomSetting(string settingName)

  • serverFunction(string funcName, funcParams, options) // funcParams and options are JSON objects and optional parameters.

Business Brixx

  • DhlShiping

    • CreateShipment → Creates a DHL Shipping Label.

    • GetLabel → Shows the shipment Label again.

  • DPDShipping

    • DPD Shipping

Starting brixxboxes

  • startBrixxbox(startOptions) // startOptions is a JSON object with start parameters.

  • addEventListener(string eventName, string controlId,function func) // ControlId is optional parameter.

  • closeModal()

  • isModal()

  • createPublicAppUrl(options) //options is a JSON object.

  • closePublicAppUrl(options) //options is a JSON object.

  • logout()

Date and Time

  • The moment.js Library

Variables

  • userId

  • recordId

  • record

  • isLoadingRecord

  • isInitializing

Controls

  • NumBox

  • TextBox

  • Button

  • CheckBox

  • ComboBox

  • Grid

  • TabControl

  • TabPage

  • Accordion

  • Badge

  • FullCalendar

  • Camera

  • Chart

  • DateTimeBox

  • DateBox

  • DocViewer

  • AppConfig

  • FileImport

  • FormGroup

  • FormGroupRow

  • GridConfig

  • GroupBox

  • HorizontalLine

  • HtmlTable

  • HtmlTemplate

  • Image

  • Label

  • LinkLabel

  • MultilineTextBox

  • Report

  • Row

  • Scanner

  • SignaturePad

  • Tag

  • TemplateGrid

  • TemplateGridElement

  • TimeBox

  • Unit

  • WedgeScanner

  • Widget

  • WidgetContainer

  • WysiwygText

==

  • Common Functions →

  • App Functions →

  • Field Manipulation → Functions which manipulate properties, values or behaviors of a control.

  • Printing and Documents →

  • Data Storage →

  • Build in Tools →

  • Business Brixx →

  • Starting brixxboxes →

  • Date and Time →

  • Variables →

brixxApi Events

The brixxApi Events are used to react on certain events. This way you can customize the behaviour of the brixxbox to your own purpose. Some events will be raised befor the brixxbox executes their own logic for this event. In that case, you can return 'true' to avoid the brixxbox build in event. Otherwise the brixxbox will do its own logic after your event.

  • onClick → When a control is clicked.

  • onRowClick → When a grid row is clicked.

  • onCellClick → When a grid cell is clicked.

  • onChange → When a control content is changed.

  • onRecordLoad → Before a Record is loaded.

  • onRecordLoaded → After a Record is loaded.

  • onRecordSave → Before a Record is saved.

  • onRecordSaved → After a Record is saved.

  • onRowSelectionChanged → After a the selected row of a grid has changed.

  • onRowCreated → Modify a grid row. Apply a color for the row based on its values for example.

  • onRecordNew → After initializing the Form. The new Record is not saved yet but can be modified with initial values.

  • onRecordDelete → Before a record is deleted.

  • onRecordDeleted → After a record was deleted.

  • onChange → After a control value has changed.

  • onKeyPress → When a key is pressed

  • onKeyUp → When a key goes up

  • onKeyDown → When a key goes down

  • onModalClose → When a modal brixxbox app closes.

  • onAppStart → When the app is started but befor it is initialized.

  • onAppInitialized → When the app is initialized onAppStart has happend).

  • onScan → When a code is scanned.

  • onAttachmentsShow → Just before attachments panel opens.

  • onFileImport → When a file is uploaded for import.

  • onReturnFromModal → When a modal child app is closed, the parent will get this event

  • onAttachmentsShow → When the sidebar for attachments opens

  • onMailHistoryShow → When the sidebar for the mail history opens

  • onSubDataRequest → When the subdatasource of a control is requested

  • onChildAppClosed → When a childapp of your app closes.

  • onTabShown → Fires when a tab page is changing to visible.

  • onAttachmentDeleted → Triggers when the user deletes an attachment in the sidebar.

  • onAttachmentsHide → This event occurs when the attachment sidebar gets closed.

  • onDataTransform → The event can be used to transform a datasource line to a calender event.

  • onEventClick → The event occurs the user clicks on one of the events.

  • onEventChange → The event occurs the user moves or modifies an event.

  • onTimeSelected → The event triggers when the users selects a time period in the calendar.

How Tos

Custorm Grid-Spalte Datumsformat

Create Resport REST

Telerik Extension Functions

Printing in LAN

brixxGPT

Calls the OpenAI integration in brixxbox

OpenAI API Key must be stored in the workspace settings!

OpenAI API Key must

Parameter

gptOptions - Json object with parameters.

  • system - to set the stage. A promt to tell the model, how to behave

  • user - User input, examples and a query. This is the user promt

Example Usages

let response = app.brixxGPT({
    system: "Reply in a HTML snipped Text, that will be inserted in an existing div",
    user: "How to create a for loop in JS?"
});

// "output" is a brixxbox htmlTemplate control     
$(app.getHtmlElement("output")).html(response);

         

CreateShipment

Creates a DHL Shipping Label.

If shipService is omitted the default value ""V01PAK" will be set.

Example Usages

   let result = await brixxApi.businessBrixx({
      functionName:"DhlShiping",
      methodName: "CreateShipment",
      weightInKG: "4",
      lengthInCM: "20",
      heightInCM: "20",
      widthInCM: "10",
      shipService: "V01PAK",
      recipientEmailAddress: "info@acme.com",
         senderAddress:{
         name1: app.getFieldValue("cordCompanyId.cusName"),
         streetName: app.getFieldValue("cordCompanyId.cusStreet"),
         streetNumber: app.getFieldValue("cordCompanyId.cusStreetNumber"),
         zip: app.getFieldValue("cordCompanyId.cusZip"),
         city: app.getFieldValue("cordCompanyId.cusCity"),
         countryCode: "DE",        
         },
         receiverAddress:{
         name1: app.getFieldValue("cordCustomerId.cusName"),
         streetName: app.getFieldValue("cordCustomerId.cusStreet"),
         streetNumber: app.getFieldValue("cordCustomerId.cusStreetNumber"),
         zip: app.getFieldValue("cordCustomerId.cusZip"),
         city:app.getFieldValue("cordCustomerId.cusCity"),
         countryCode: "DE",
         },
      });
   console.log("Shipment Number: " + result.shipmentNumber)
   window.open(result.labelUrl, "_blank");

GetLabel

Shows the shipment Label again.

Example Usages

   let result = await brixxApi.businessBrixx({
      functionName:"DhlShiping",
      methodName: "GetLabel",
      shipmentNumber: app.getFieldValue("cordShipmentNumber")
   });
   window.open(result.labelUrl, "_blank");

DPD Shiping

DPDCreateShipment -> Creates a DPD Shipping Label

Datev Export SqlDataRead Example

Example for a getDatevData script

This is the main script, which is responible for collection all the data, which needs to be exported.

Available Parameters

  1. @company - If you work with multiple companies, you have to export each company by it's own.

  2. @dateFrom - Start date for the export

  3. @dateUntil - End date for the export

Example Usages

 SELECT 
    head.id AS Auftragsnummer,
    ol.cordlnItemId AS Artikelnummer,
    ol.id AS ArtikelRecordId,
    ol.cordlnParagraph13b AS Paragraph13b,
    ol.cordlnNetOrderValue AS NettoWert,
    ol.cordlnGrossOrderValue AS BruttoWert,
    adr.adrDebitor AS Debitorenkonto,
    0 AS Kreditorenkonto,
    cordlnSalesAccount AS Sachkonto,
    adr.adrTaxId AS SteuerID,
    cordlnTaxKey as Buchungsschluessel,
    '' AS Buchungstext,
    head.cordInvoiceDate AS Rechnungsdatum,
    head.cordInvoiceNumber AS Rechnungsnummer,
    head.cordShippingDate AS Leistungsdatum,
    atta.id AS AttachementId,
    'customerOrder' AS BuchungszaehlerTabelle,
    'cordDatevExportId' AS BuchungszaehlerSpalte,
    CASE WHEN fiac.finaccIsAccountSplitting = 1 THEN fiacsplit.facsIsAutomaticAccount ELSE fiac.finaccIsAutomaticAccount END AS IstAutomatikKonto,
    head.cordInterCompanyOrder as IstInnerbetrieblich
 
 FROM dbo.bbv_customerOrderLine AS ol
 LEFT JOIN [dbo].[customerOrder] AS head ON head.id = ol.cordlnOrderId
 LEFT JOIN address AS adr ON adr.id = head.cordAddressId
 LEFT JOIN brixx_Attachments AS atta ON atta.id in (select AttachmentId from brixx_AttachmentLinks where RecordId = head.id AND TableName = 'customerOrder' ) AND atta.DocumentTypeId = 2
 LEFT JOIN financialAccount AS fiac ON fiac.finaccAccountNumber = cordlnSalesAccount
 LEFT JOIN financialAccountSplitting AS fiacsplit ON fiacsplit.facsAccountId = fiac.id AND fiacsplit.facsSplitAccount = fiac.finaccAccountNumber
 WHERE ol.cordlnOrderId IN 
 (
    SELECT id FROM [dbo].[customerOrder] 
    WHERE cordShippingDate >= @dateFrom AND cordShippingDate <= @dateUntil
    AND cordCompanyId = @company
 )
 AND ol.cordlnNetOrderValue > 0
 AND head.cordStatusId >= 4
 
 UNION
 
 SELECT 
    head.id AS Auftragsnummer,
    ol.sordlnItemId AS Artikelnummer,
    ol.id AS ArtikelRecordId,
    ol.sordlnParagraph13b AS Paragraph13b,
    ol.sordlnNetOrderValue AS NettoWert,
    ol.sordlnGrossOrderValue AS BruttoWert,
    0 AS Debitorenkonto,
    adr.adrKreditor AS Kreditorenkonto,
    sordlnitmProcurementAccount AS Sachkonto,
    adr.adrTaxId AS SteuerID,
    sordlnTaxKey AS Buchungsschluessel,
    '' AS Buchungstext,
    head.sordGoodsReceiptDate AS Rechnungsdatum,
    head.sordInvoiceNumber AS Rechnungsnummer,
    head.sordGoodsReceiptDate AS Leistungsdatum,
    atta.id AS AttachementId,
    'supplierOrder' AS BuchungszaehlerTabelle,
    'sordDatevExportId' AS BuchungszaehlerSpalte,
    CASE WHEN fiac.finaccIsAccountSplitting = 1 THEN fiacsplit.facsIsAutomaticAccount ELSE fiac.finaccIsAutomaticAccount END AS IstAutomatikKonto,
    head.sordInterCompanyOrder as IstInnerbetrieblich
 
 FROM dbo.bbv_supplierOrderLine AS ol
 LEFT JOIN [dbo].[supplierOrder] AS head ON head.id = ol.sordlnOrderId
 LEFT JOIN address AS adr ON adr.id = head.sordAddressId
 LEFT JOIN item AS itm on itm.id = ol.sordlnItemId 
 LEFT JOIN brixx_Attachments AS atta ON atta.id in (select AttachmentId from brixx_AttachmentLinks where RecordId = head.id AND TableName = 'supplierOrder' )
 LEFT JOIN financialAccount AS fiac ON fiac.finaccAccountNumber = ol.sordlnitmProcurementAccount
 LEFT JOIN financialAccountSplitting AS fiacsplit ON fiacsplit.facsAccountId = fiac.id AND fiacsplit.facsSplitAccount = fiac.finaccAccountNumber
 WHERE ol.sordlnOrderId IN 
 (
    SELECT id FROM [dbo].[supplierOrder] 
    WHERE head.sordGoodsReceiptDate >= @dateFrom AND head.sordGoodsReceiptDate <= @dateUntil
    AND sordCompanyId = @company
 )
 AND ol.sordlnNetOrderValue > 0
 AND head.sordStatusId = 5

Datev Export sqlGetCounter Example

This is the main script, which is responsible for collection all the data, which needs to be exported.

Available Parameters

  1. @company - If you work with multiple companies, you have to export each company by it's own.

  2. @dateFrom - Start date for the export

  3. @dateUntil - End date for the export

Example Usages

 SELECT MAX(DatevExportId) FROM
 (
    SELECT ISNULL(MAX(cordDatevExportId), 0) AS DatevExportId FROM customerOrder WHERE cordCompanyId = @company
    UNION ALL
    SELECT ISNULL(MAX(sordDatevExportId), 0) AS DatevExportId FROM supplierOrder  WHERE sordCompanyId = @company
 ) AS sub

GS1 Code Splitter

Splits a GS1 code into its AIs and values

This is usually used in the onScan event where you use the plain scan result as the input. The fnc1Char parameter is optional and only used, if the scanner sends an different (visible) character instead of the default fnc1 (CHAR29).

Mandatory fields: gs1Code

Example Usages

 let result = await brixxApi.businessBrixx({
     functionName:"Gs1Splitter",
     methodName: "Split",
     gs1Code: "011234567890123417210521109988"
 });
 console.log(result)

Example Usages with Split Char (FNC1)

Especially with keyboard wedge scanners, it is often usefull to use a visible character as the FNC1 char.

 let result = await brixxApi.businessBrixx({
     functionName:"Gs1Splitter",
     methodName: "Split",
     gs1Code: "011234567890123417210521109988X211234",
     fnc1Char: 'X'
 });
 console.log(result.applicationIdentifiers['10'])

The result variable in this case:

{
   "applicationIdentifiers":{
      "10":"9988",
      "17":"210521",
      "21":"1234",
      "01":"12345678901234",
      "01.packind":"1",
      "01.iln":"2345678",
      "17.date":"20210521"
   }
}

Design-Cockpit

In den folgenden Unterpunkten erklären wir Schritt für Schritt die einzelnen Funktionen innerhalb des Design-Cockpits.

click to expand

Wählen Sie ein Themengebiet aus und starten Sie die Slide-Show.

addToolbarButton

Add Toolbar Buttons with different functionalities.

As we have already discussed in documentation of SetToolbarButtonMode. These are several buttons that are provided by Brixxbox for each app like adding new record, saving new record etc. These buttons provides general functionality needed by most of the apps but in case your app needs extra functionality, Brixxbox also allows this. It is provided by brixxApi function addToolbarButton. It takes a JSON object as a parameter. This JSON contains all the properties that defines this custom button as well as the functionality provided by it. The properties include name, id, and function to execute on clicking this button etc. Adds a custom button to the app toolbar.

Example

   brixxApi.addToolbarButton({
            title: "Print Invoice",
            icon: "print",
            id: "printInvoiceToolbarButton",
            onclick: async function () {
                brixxApi.triggerEvent("click", "printInvoiceBtn");
            }
        });

Parameters

  1. toolbarButtonOptions - It is a JSON Object. In JSON object we passes parameters in the form of key value arguments.It include properties like name, id, function, etc.

Example Usages

As we have already seen a minimal custom print button in above example. Lets now add extra properties like group, css class, and shortcut for our print button. Now we also want this button to be added in our app toolbar on initialization. For this purpose goto current app properties and add onAppInitialized event. Now we need to add following code as a custom code to this event.

   brixxApi.addToolbarButton({
            title: "Print Invoice",
            icon: "print",
            text: "Rechnung drucken",
            group: "invoice",
            id: "printInvoiceToolbarButton",
            cssClass: "btn-success",
            onclick: async function () {
                brixxApi.triggerEvent("click", "printInvoiceBtn");
            },
            shortcut: "Ctrl-Alt-P"
        });

Now when our app is initialized, we can see our custom button on the app toolbar and it should look like this.

Example of the Button

We can also add different custom buttons to our app depending upon our own requirements.

DHL Shiping

  • CreateShipment → Creates a DHL Shipping Label.

  • GetLabel → Shows the shipment Label again.

downloadAttachments

Downloads a list of attachment ids as a zip file.

Parameters

  1. downloadOptions - JSON object

    • requestedIds - list of ids to download

    • fileName - (optional) name of the downloaded file

Example Usages

   brixxApi.downloadAttachments({
      requestedIds:[196, 197, 200]
   });
   brixxApi.downloadAttachments({
      requestedIds:[196, 197, 200],
      fileName: "myDownload.zip"
   });

getCustomSetting

Retrieve a value for a specific custom setting.

Parameters

  1. settingName - the key for the setting

Example Usages

   let settingValue = brixxApi.getCustomSetting("groupOne.setting1");
   console.log(settingValue);

getLastAttachmentByRecordId

Retrieves the most recent attachment for a given record ID as a blob.

This function queries the database to find the latest attachment associated with a specific record ID. If the documentTypeId is 0, the document type filter is ignored.

Parameters

  • tableName: string

    • The name of the table where the record is stored.

  • recordId: number

    • The ID of the record for which the attachment is being retrieved.

  • documentTypeId: number

    • The ID of the document type to filter by. If 0 or null, this filter is ignored.

Returns

  • Promise<Blob>

    • A promise that resolves to a blob containing the attachment, or null if no attachment is found.

Example

  try {
    // Retrieve the last attachment for a record with ID 123 in the 'Orders' table, ignoring document type filter
    const blob = app.getLastAttachmentByRecordId('Orders', 123, 0);
    if (blob) {
      app.printBlob(blob);
    } else {
      console.log('No attachment found for the given record ID.');
    }
  } catch (error) {
    console.error('Error retrieving attachment:', error);
  }

getConfigRecordAttachmentIdByFileName

Returns an id of an attachment of a record in a config.

Parameters

  1. appName - the name of the config with the attachment

  2. recordId - the id of the record with the attachment

  3. fileName - the name of the requested attachment

Example Usages

   brixxApi.getConfigRecordAttachmentIdByFileName("customerOrder", 1234, "invoice.pdf");

changeHelpText

Changes an existing help text for a control at runtime.

Parameters

  1. controlId => Id of the control

  2. helpText => the new text, you want to set or empty to remove an existing text

Example Usages

   brixxApi.changeHelpText("myControl", "Hello World");

Diamant Connector

This brixxbox module allows to retrieve data from the Diamant Accounting Software and post data to it

Get Method

The Method Retrieves the data specified with dataType (like Address, CostCenter and so on). The searchParams and fieldMatch JSON properties are valid for all methods, but the fields mentioned in it are depending on the datatype used. For example: postcode is a valid searchParam for addresses, but not for cost centers.

The Get method will return the data it fetched from Diamant, so you get an array of JSON objects. The fieldMatch prameter will tell the brixxbox to change field names, so that it is more useful in an brixxbox environment.

Example Usages Get

This will retrieve all addresses from diamant. Field names are the original diamand field names

 let result = await brixxApi.businessBrixx({
     functionName:"Diamant",
     methodName: "Get",
     company: "9018",
     dataType: "Address",
 });
 console.log(result)

This will retrieve all addresses with Postcode 61118 from diamant and return the result. Only the fields "key" and "Name1" will be returned.

 let result = await brixxApi.businessBrixx({
     functionName:"Diamant",
     methodName: "Get",
     dataType: "Address",
     searchParams:{
         postcode: "61118"
     },  
     usedFields:["key", "Name1"]

 });
 console.log(result)

Write to Diamant

This code will write an address to Diamant

let result = brixxApi.businessBrixx({
   functionName: "Diamant",
   methodName: "Save",
   dataType: "Address",
   fields: {
      key: "12345",
      addresstype: "F",
      name1: "John Doe",
      street: "Elmstreet 123",
      postcode: "12345",
      town: "Berlin",
   },
});

ImportTable Method

This method allows you to retrieve the data and insert it into the database. Query parameters work the same and are optional but you must user fieldMatch to assign diamant names to brixxbox field names

Example Usages Import Insert

This will retrieve all addresses from diamant and insert it into the table address the table will be wiped right before the import.

 let result = await brixxApi.businessBrixx({
     functionName:"Diamant",
     methodName: "ImportTable",
     dataType: "Address",
     tableName: "address",
     wipeTable: true,
     fieldMatch:{
         postcode: "adrZip",
         name1: "adrName"
     }, 
 });
 console.log(result)

Example Usages Import Upsert

This will retrieve all addresses from diamant and update the records with the same id as in fieldMatch.

 let result = await brixxApi.businessBrixx({
     functionName:"Diamant",
     methodName: "ImportTable",
     dataType: "Address",
     tableName: "address",
     upsert: true,
     wipeTable: true,
     fieldMatch:{
         key: "adrKey,id",
         postcode: "adrZip",
         name1: "adrName"
     }, 
 });
 console.log(result)

Supported dataTypes

More types can be added at request.

Request Data

  • Address (Adressen)

  • CostCenter (Kostenstellen)

  • GenLedgAccount (Sachkonten)

  • CostObject (Kostenträger)

  • PrimCostElement (Primärkostenarten)

  • Project (Projekte)

  • Company (Mandanten)

  • Customer(Konten)

  • Vendor (Vendor)

  • Posting (Buchungen)

Transctions

  • OpenStack

  • Transaction

  • CloseStack

Diamant CloseStack

Closes a booking stack that qas previously open by OpenStack

Example Usages Get

 let result = await app.businessBrixx({
    functionName:"Diamant",
    methodName: "CloseStack",
    stackNumber: app.getFieldValue("myBookungStackNumber")
});

SEPA Export

This module creates a SEPA file in XML format.

   await brixxApi.businessBrixx({
        functionName:'SEPAExport',
        accountName: 'MyCompanyAccountName',
        bic: 'INGDDEFFXXX',
        iban: 'DE89370400440532013000',
        sepaCounter: 32,
        company: 1,
        creditData: [{
             creditName: 'Customer 1',
             bic: 'INGDDEFFXXX',
             iban: 'DE8937040044',
             amount: 129.95,
             description: 'some booking text'
        } , {
             creditName: 'Customer 2',
             bic: 'INGDDEFFXXX',
             iban: 'DE8937040044',
             amount: 129.95,
             description: 'some booking text'
        }]

    });

Currency Conveter

Converts a currency to another currency

Mandatory fields: fromCurrencySymbol, toCurrencySymbol

Example Usages

 let rate = await brixxApi.businessBrixx({
     functionName:"CurrencyConverter",
     methodName: "Convert",
     fromCurrencySymbol: "EUR",
     toCurrencySymbol: "USD",
     date: moment().subtract(7, 'days') // optional, else current date
 });
 console.log(rate)

Datev Export sqlMainData Example

This is the script, which is responsible for collection all the address data, which needs to be exported.

Available Parameters

  1. @company - If you work with multiple companies, you have to export each company by it's own.

  2. @dateFrom - Start date for the export

  3. @dateUntil - End date for the export

Example Usages

 SELECT adr.id AS Kundennummer,
       CASE WHEN adrIsCustomer = 1 THEN adr.adrDebitor ELSE adr.adrKreditor END AS Konto,
       adr.adrName AS Firmenname,
       adr.adrLastName as Nachname,
       adr.adrFirstName as Vorname,
       '' AS Anrede,
       'STR' AS Adresstyp,
       adrLoc.alocStreet AS Strasse,
       adrLoc.alocStreetNumber AS Hausnummer,
       adrLoc.alocZip AS PLZ,
       adrLoc.alocCity AS Stadt,
       adrLoc.alocAdditionalInfo AS Zusatzinformation
  FROM [dbo].[address] AS adr
  LEFT JOIN addressLocation AS adrLoc ON adrLoc.id = adr.adrDefaultInvoiceAddress
  LEFT JOIN country AS country ON country.id = adrLoc.alocCountryId
 WHERE adr.adrIsCustomer = 1 OR adr.adrIsSupplier = 1

Diamant OpenStack

Opens a booking stack and returns the number to the client

Example Usages Get

 let result = await app.businessBrixx({
    functionName:"Diamant",
    methodName: "OpenStack",
});
app.setFieldValue("myBookungStackNumber", result.data); //result.data is the stackNumber

getHtmlElement

Gets the html element for this brixxbox control.

Note: Usually it is not necessary to get the Html element itself. Make sure there is no better way to do the things you want to do by using the brixxApi functions!

Example Usages

   let myField = brixxApi.getHtmlElement("myFieldId");
   myField.disabled = true; // just for demonstration. Please use brixxApi.setFieldEnable("myFieldId", false) instead

createReport

Creates a report on the Server and retrieves it to the client. The only format, currently supported is pdf.

Parameters

  1. reportControlId - the id of the reportControl in your app. This can be invisible, if you don't need a preview.

  2. createOptions - JSON Object with options

    • print - (bool, default = false) if set to true, this will trigger the print dialog after the report is create.

    • archive - (bool, default = false) if set to true, the report is saved as an attachment to the current record,

    • saveFile - if set. the report will be downloaded with a generic file name (brixxbox-print.pdf), except, if saveFileName is set.#

    • saveFileName - if set. the report will be downloaded with that file name.

    • reportId - (optional) if defined, this will overruled the reportId given for the control in the config editor. This is not the controlId, but the id (name) of the report definition

    • cloudPrinter - (optional) the created report will be send to the cloud printer right after creation.

Like a on a dataRequest, all controls of the current app will bo automatically send as report parameters, plus the recordId of the current record as "id", even if you dont have a control "id" in your app.

Example Usages

   brixxApi.createReport("invoiceReport", {print: true}); //will create the invoiceReport as a pdf and prints it on the client side
   brixxApi.createReport("invoiceReport", {
      print: true,
      archive: true,
      documentTypeId: 1,
      saveFileName: "myPrint.pdf"
   }); 
   //will create the invoiceReport as a pdf and prints it on the client side, it will also save the pdf as an attachment to the current record.
   brixxApi.createReport("invoiceReport", {
      print: true,
      reportId: "invoiceReportSimple"
   }); 
   //In this case, we choose a different reportId

Create a report and send it to a cloud printer

   brixxApi.createReport("invoiceReport", {
      cloudPrinter: "HP LaserJet",
   });

cloudQuery

Requests Data from a CloudGateway Enpoint

Parameters

{
    AppName: "MyCloudGateway", //The Name in the ApiKey List
    Endpoint: "LocalFirebird", // Configured Endpoint
    SqlStatementId: "fbGetAddress", //Optional statemnt id, depending on the Plugin
    Parameters: { //Optional Parameters
      "id": 1  
    },
    
}

Example Usages

Query an address from a firebird database

   brixxApi.cloudQuery({
    AppName: "MyCloudGateway",
    Endpoint: "LocalFirebird",
    SqlStatementId: "fbGetAddress",
    Parameters: {
      "id": 1  
    },
    
})

composeEmail

Shows the email compose Dialog, or sends an email without an interface popup.

Parameters

  1. emailOptions - (optional) Json object with email parameters.

    • to - array of email addresses

    • cc - array of email addresses

    • bcc - array of email addresses

    • text - message text

    • subject - subject

    • from - single string with an email address

    • replyTo - single email, that will be used as to reply to

    • autoSend - if set to true, the mail will be send automatically. You will not see a dialog at all. (Default is false)

    • hideToEmail - if set to true. The recipients email address is hidden in the email dialog

    • attachmentIds - an array of attachment ids that will be sent as an attachment,

    • attachmentBlobs - an array of blobs objects that will be sent as an attachment, {name: myFileName, blob: myBlob}

    • recordId - RecordId if you would like to attach the email to an record. If empty, this is the current record Id (available from 18.11.2021)

    • appName - AppName if you would like to attach the email to an record. If empty, this is the current App Name (available from 18.11.2021)

Example Usages

Example 1

Shows the dialog without any predefined values

Shows the dialog text and to addresses

   composeEmail({
      text: `This is the messsage text and this is a link: <a href='http://www.brixxbox.net' target='_blank'>www.brixxbox.net</a>`, 
      to:["john.doe@acme.com", "jane.doe@acme.com"], 
      subject: "This is the mail subject",
      from: "noreply@acme.com"
   });

Example 2

Sends the email without a dialog

   composeEmail({
      text: "This is the messsage text", 
      to:["john.doe@acme.com", "jane.doe@acme.com"], 
      subject: "This is the mail subject",
      from: "noreply@acme.com",
      replyTo: "reply@acmy.com", 
      autoSend: true //Set this to avoid the dialog
   });

Example 3 - attachment blobs

   composeEmail({
      text: "This is the messsage text", 
      to:["john.doe@acme.com", "jane.doe@acme.com"], 
      subject: "This is the mail subject",
      from: "noreply@acme.com",
      autoSend: true,
      attachmentBlobs: [
         {
            name: "Test1.pdf", 
            blob: app.createReport("report")
         },
         {
            name: "Test2.pdf", 
            blob: app.getAttachmentById(2)
         }
      ],
   });

Example 4 - attachment ids

   composeEmail({
      text: "This is the messsage text", 
      to:["john.doe@acme.com", "jane.doe@acme.com"], 
      subject: "This is the mail subject",
      from: "noreply@acme.com",
      autoSend: true,
      attachmentIds: [1, 2, 3]
   });

Diamant Transaction

Creates a transaction in diamant

Example Usage

The data is passed to the interface as a JSON array. All fields available in the documentation can be inserted here! Please not that several data sety can be transferred at the same time.

let result = await app.businessBrixx({
    functionName: "Diamant",
    methodName: "Transaction",
    company: 1,
    transactions: [{
        transactionType: 'AR',
        stacknumberSpecified: false,
        ///...,

        accountAssignmentTab: [{
            accountNo: '12345',
            taxCode: 19,

            //...,

            cAccDataTab: [{
                costCenter: '123a',
                //...
            },
            {
                costCenter: '123b',
                //...
            }],

            oIDataTab: [{
                accountNo: '123456',
                amount: 100.00,
                amountFieldSpecified: true,
                //...
            },
            {
                accountNo: '333456',
                amount: 150.00,
                amountFieldSpecified: true,
                //...
            }]
        },
        {
            transactionType: 'AR',
            stacknumberSpecified: false,
            ///...,

            accountAssignmentTab: [{
                accountNo: '44345',
                taxCode: 19,

                //...,

                cAccDataTab: [{
                    costCenter: '123a',
                    //...
                },
                {
                    costCenter: '123b',
                    //...
                }],

                oIDataTab: [{
                    accountNo: '123456',
                    amount: 100.00,
                    amountFieldSpecified: true,
                    //...
                },
                {
                    accountNo: '333456',
                    amount: 150.00,
                    amountFieldSpecified: true,
                    //...
                }]
            }]
        }]
    }]
});
console.log(result);

closeModal

If the current brixxbox app is startet in a modal window, that window will be closed.

Example Usages

   brixxApi.closeModal();

deleteAttachment

Deletes an attachment and its link to a record.

Parameters

  • attachmentId - the id of the attachment you want to delete

Example Usages

   brixxApi.deleteAttachment(42);

clearGridSelection

Unselects all rows of a data grid.

Parameters

  1. controlId - id of the grid control

Example Usages

   brixxApi.clearGridSelection(myGrid);

copyConfigRecordById

Creates a deep copy from a config record. Typical example is to create a copy of an "order" record, with a copy of all the "orderLines" from that source "order". brixxbox will use the "Cascade Copy" flag of a grid control, to decide if which referenced records will be copied.

Parameters

  1. configName

  2. recordId - the id of the source record

  3. additionalValues - json object of values in the target record that should be modified. e.g. an "orderDate" field. Can be null, in this case you get a 1:1 copy except the record id.

Example Usages

Exact copy:

   let newOrder = brixxApi.copyConfigRecordById("customerOrder", 1376);

Copy with new date for header data and manipulating two columns of line item data:

   let newOrder = brixxApi.copyConfigRecordById("customerOrder", 1376, {
      cordOrderDate: new Date(),
      cordlnOrderQuantity: "1",
      cordlnDeliveredQuantity: null
   });

displayRecord

Displays a record in an brixxbox app. To get a record, you could use e.g. loadRecord

Parameters

  1. the record.

  2. the current control. This control is excluded from the discard changes check, that occurs before the record is displayed

Example Usages

Simple (pay attention to the await keyword)

   await brixxApi.displayRecord(myRecord, "myKeyControlId");

ZUGFeRD

Introduction

This documentation provides a complete overview of the xRechnung object used in the createPdf endpoint for generating ZUGFeRD-compliant invoices. The xRechnung object contains key information required to create a legally compliant electronic invoice, following the specifications of the XRechnung format.

Payload Structure

The xRechnung object is part of the main payload sent to the createPdf endpoint. Below is the structure and detailed explanation of all properties within the xRechnung object.

Main Payload Structure

{
  "report": "string",
  "reportName": "string",
  "configName": "string",
  "archive": true,
  "documentTypeId": 0,
  "culture": "string",
  "parameters": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "mainHostUrl": "string",
  "xRechnung": {
    "invoiceMain": { ... },
    "additionalReferencedDocuments": [ ... ],
    "despatchAdviceReferencedDocument": { ... },
    "profile": 1,
    "tradeLineItems": [ ... ],
    "taxes": [ ... ],
    "serviceCharges": [ ... ],
    "receivableSpecifiedTradeAccountingAccounts": [ ... ]
  }
}

xRechnung Object Details

1. invoiceMain

This object contains the main details of the invoice, including invoice number, dates, buyer, seller, and payment terms.

  • Type: object

  • Properties:

    • invoiceNo (string): The unique identifier of the invoice.

    • invoiceDate (DateTime): The date the invoice was issued.

    • paymentReference (string): Reference used for payments.

    • orderNo (string): The related order number.

    • orderDate (DateTime): The date of the related order.

    • currency (enum): The currency of the invoice. See currency enum.

    • buyer (object): Information about the buyer.

    • seller (object): Information about the seller.

    • notes (array): Notes related to the invoice.

    • paymentTerms (object): The terms of payment.

    • grandTotalAmount (decimal): The total amount of the invoice.

    • duePayableAmount (decimal): The amount due for payment.

    • Other related invoice properties.

2. additionalReferencedDocuments

This array contains documents that reference the invoice, such as orders or contracts.

  • Type: array

  • Properties:

    • id (string): Identifier of the referenced document.

    • issueDateTime (DateTime): Date and time the document was issued.

    • referenceTypeCode (enum): Reference type code. See referenceTypeCode enum.

    • attachmentBinaryObject (string): Base64 encoded binary object of the attachment.

    • filename (string): Filename of the attachment.

    • typeCode (enum): Type code for the document. See typeCode enum.

3. tradeLineItems

This array contains items or services billed in the invoice.

  • Type: array

  • Properties:

    • globalID (object): Global ID of the item or service.

    • sellerAssignedID (string): ID assigned by the seller.

    • name (string): Name of the item or service.

    • billedQuantity (decimal): Quantity billed.

    • lineTotalAmount (decimal): Total amount for the line item.

    • taxCategoryCode (enum): Tax category code. See taxCategoryCode enum.

    • netUnitPrice (decimal): Net unit price of the item.

    • unitCode (enum): Unit code for the item. See unitCode enum.

    • Other related line item properties.

4. taxes

This array contains detailed tax information applied to the invoice.

  • Type: array

  • Properties:

    • basisAmount (decimal): Amount on which the tax is calculated.

    • percent (decimal): Tax percentage.

    • typeCode (enum): Type of tax. See taxType enum.

    • categoryCode (enum): Tax category code. See taxCategoryCode enum.

    • exemptionReasonCode (enum): Reason for tax exemption. See exemptionReasonCode enum.

5. serviceCharges

This array contains additional charges applied to the invoice.

  • Type: array

  • Properties:

    • tax (object): Tax information related to the service charge (similar to taxes object).

    • amount (decimal): Amount of the service charge.

    • description (string): Description of the service charge.

6. receivableSpecifiedTradeAccountingAccounts

This array contains accounting accounts related to the trade, either receivable or payable.

  • Type: array

  • Properties:

    • tradeAccountID (string): ID of the trade account.

    • tradeAccountTypeCode (enum): Type of trade account. See tradeAccountTypeCode enum.

Enumerations

1. currency

Represents currency codes.

Value
Description

0

Euro (EUR)

1

US Dollar (USD)

2

British Pound (GBP)

3

Swiss Franc (CHF)

4

Japanese Yen (JPY)

2. schemeID

Identification schemes for IDs.

Value
Description

0

Unknown

1

GLN (Global Location Number)

2

DUNS (Data Universal Numbering System)

3

VAT ID

4

National Tax ID

5

Other

3. country

Country codes.

Value
Description

0

Germany (DE)

1

Austria (AT)

2

Switzerland (CH)

3

United States (US)

4

United Kingdom (GB)

4. subjectCode

Subject codes for notes.

Value
Description

0

General Information

1

Legal Information

2

Payment Information

5. contentCode

Content codes for notes.

Value
Description

0

Free Text

1

Legal Notice

2

Payment Instruction

3

Delivery Information

6. profile

Invoice profiles.

Value
Description

1

Basic Profile

2

Comfort Profile

3

Extended Profile

4

EN 16931 Profile (XRechnung)

7. type

Invoice types.

Value
Description

0

Invoice

1

Credit Note

2

Debit Note

3

Correction Invoice

8. referenceTypeCode

Reference type codes for documents.

Value
Description

0

Order Reference

1

Despatch Advice Reference

2

Delivery Note Reference

3

Contract Reference

9. taxCategoryCode

Tax category codes.

Value
Description

0

Standard Rate

1

Reduced Rate

2

Zero Rate

3

Exempt

4

Reverse Charge

10. taxType

Tax types.

Value
Description

0

Value-Added Tax

1

Sales Tax

2

Service Tax

11. electronicAddressSchemeID

Electronic address schemes.

Value
Description

88

Email

89

EDI (Electronic Data Interchange)

90

Web Address

12. typeCode

Document type codes.

Value
Description

50

Attachment

51

Image

52

PDF Document

13. unitCode

Unit codes for line items.

Value
Description

0

Piece (PCE)

1

Kilogram (KGM)

2

Liter (LTR)

3

Hour (HUR)

4

Day (DAY)

14. paymentMeansTypeCode

Payment means type codes.

Value
Description

0

Bank Transfer

1

Direct Debit

2

Credit Card

3

Cash

15. tradeAccountTypeCode

Trade account type codes.

Value
Description

0

Debtor Account

1

Creditor Account

2

General Ledger Account

3

Cash Account


This documentation provides a complete and structured overview of the xRechnung object, including all properties and enumerations used in the payload.

getDate

As the name suggests, this functions is to get date. This function when used without any arguments returns a date in this format 'yyyy-mm-dd'.

It is very important to be cautious because different date formats can lead into worng results when in comparison.

Parameters

  1. param - (optional). If empty it will return todays date. User is also allowed to provide a date or moment object of javascript.

Example Usages

Following examples shows all three usages of getDate function. Lets suppose we want to know the new order placement date which is today then we can use 1st or second example. We also suppose that our order delivery date is after one month then we can use the third example and use this date as a delivery date.

   brixxApi.getDate();
   brixxApi.getDate(new Date());
   brixxApi.getDate(new moment().add(1, "month"));

createPublicAppUrl

Creates an url, that leads to a standalone app for pulic use. There is still a valid user logged in. The public user has to be configured in the settings as a "valid external user" for security reason

Parameters

  1. options - Json object with the same properties as [createPublicAppUrl](/globalDoc/function_createPublicAppUrl) options, plus:

    • publicUser - the user email address of the brixxbox user, that will be used for the public app .

Example Usages

   await brixxApi.createPublicAppUrl({appName: "survey", publicUser: "surveyuser@acme.com", id:1});

cloudPrint

Sends a PDF to a printer, that is connected by the BrixxboxCloudGateway. You can sent a document to a cloudprinter by using createReport as well

Parameters

A json object

Example Usages

Print an existing attachment

   brixxApi.cloudPrint({
      printerName: "HP LaserJet", //Printer NAme
      attachmentId: "1", //Attachment id
   });

Print an existing attachment with multiple copies

   brixxApi.cloudPrint({
      printerName: "HP LaserJet", 
      attachmentId: "1", 
      copies: 5 // 1 copy is the default. Needs "cloudPrint Gateway" installer Version 1.0.1 or newer
   });

Print a new created report without archiving

   let myReport = await brixxApi.createReport("myReport");
   brixxApi.cloudPrint({
      printerName: "HP LaserJet", //Printer NAme
      blob: myReport, //The report blob object
   });

getControlUnmodifiedValue

Gets the unmodified value of the control.

Example Usages

   let unmodifiedCompareValue = brixxApi.getControlUnmodifiedValue("myControlId");

getCalcDateTime

Gets a DateTime as a compareable number with a given accuracy.

Parameters

  1. dateTime value or controlId

  2. accuracy - "seconds" (default), "minutes" or "hours"

Example Usages

   brixxApi.getCalcDateTime(myDateTimeControl);
   brixxApi.getCalcDateTime(myDateTimeControl, "minutes");
   brixxApi.getCalcDateTime(myDateTimeControl, "hours");

Example 2 calculation

   let durationInSeconds = brixxApi.getCalcDateTime(myDateTimeEnd) - brixxApi.getCalcDateTime(myDateTimeStart);
   let durationInMinutes = brixxApi.getCalcDateTime(myDateTimeEnd, "minutes") - brixxApi.getCalcDateTime(myDateTimeStart, "minutes");
   let durationInHours = brixxApi.getCalcDateTime(myDateTimeEnd, "hours") - brixxApi.getCalcDateTime(myDateTimeStart, "hours");

getBrowserToken

Gets a GUID Token, that identifies the browser. This token will NOT be different, when you close all browser tabs and start the brixxbox again. But it will be different, when you delete the local storage for that url. You could use this to identify a shopping cart, for example.

Example Usages

   let myToken = brixxApi.getBrowserToken();

brixxApi.getSessionToken

GUID stands for Global Unique Identifier. A GUID is a 128-bit integer (16 bytes) that you can use for authentication purposes. There are many types of GUID tokens, one of them is browser token. We can use this token to identify a user for same browser because his token will NOT be different, when you close all browser tabs and start the Brixxbox again. But it will be different, when you delete the local storage for that url. This function can be used to get GUID for browser. It can then be used to keep user session open. Another usecase is that it could be used to identify a shopping cart. An important aspect here to note is that when when you close all browser tabs and start the Brixxbox again, this token will not be different.

Example Usages

An example user is that user can get access tokens using this getBrowserToken functions from two apps and compare them to confirm user identity i.e after login this can be used as authenticate the user between different browser sessions.

enableValidator

Enables or disables field validator.

Parameters

  1. controlId - The control id of the field

  2. validatorName - the name of the validator

  3. enable - enable (true=default) or disable (false) the validator

Example Usages

   brixxApi.enableValidator("firstName", "notEmpty", false); //disables the validation of notEmpty for the control firstName

getCustomMessage

Returns a custom message from the message manager. It replaces possibly passed parameters in the message. The target language can also be set.

Example Usages

   let msg = brixxApi.getCustomMessage("messageName", {"param1": "text1", "param2": "text2"}, "en-Us");
   brixxApi.setFieldValue("controlId", msg);

executeStoredProcedure

Executes a stored procedure.

Parameters

  1. procedureName - The name of the stored procedure

  2. procedure parameters - If you need to add parameters, you can use this json object to set them

  3. queryOptions - (optional) a json object with options for the request

    • timeout - (optional) timeout for the SQL Request. Default is 30 seconds

    • connectionKey - (optional) a key to a custom settings entry with the connection string to an external MSSQL database

Example Usages

1. Simple (pay attention to the await keyword)

   await brixxApi.executeStoredProcedure("procedureName");

2. With parameters (pay attention to the await keyword)

   let parameterJson = {
      myCustomSqlParameter: 12345
   };
   await brixxApi.executeStoredProcedure("procedureName", parameterJson);

3. Short version (pay attention to the await keyword)

   await brixxApi.executeStoredProcedure("procedureName", {
      myCustomSqlParameter: 12345
   });

4. With Timeout

   await brixxApi.executeStoredProcedure("procedureName", {
      myCustomSqlParameter: 12345
   },{
      timeout: 45
   });

disableGridHyperLinks

Disables (or enables) the hyperlinks in grid cells, automatically generated for combo box controls. This function also refreshes the grid.

Parameters

  1. controlId - The id of the grid control

  2. disable - true, if you want to disable the hyperlinks, false if you want to enable them again.

Example Usages

   brixxApi.disableGridHyperLinks("myGrid", true); //disable links
   brixxApi.disableGridHyperLinks("myGrid", false); //enable links again

enableNotifications

This function is used to disable or enable app messages, that are displayed automatically, like the "record Saved" message, after a successful save operation.

Parameters

  1. param - The type of message. The following messages types are supported

    • "save" - The save Message

Example Usages

   brixxApi.enableNotifications("save", false); //Disable the save message

   brixxApi.enableNotifications("save", true); //Enable the save message (This is the default)

getAttachmentByFileName

Retrieves the blob of an attachment from the attachments of the current record

Parameters

fileName - the file name you are looking for

Example Usages

   brixxApi.getAttachmentByFileName("Invoice1.pdf")

getAttachmentsForCurrentRecord

Returns a list of all the attachments of the current record. The list is ordereb by id desc. so the newest documents will be the first you will find while iterating over the array.

Example Usages

Example 1

   console.log(brixxApi.getAttachmentsForCurrentRecord());

Example 2 Filtering

   let allAttachmentsForThisRecord = brixxApi.getAttachmentsForCurrentRecord();
   let invoices = allAttachmentsForThisRecord.filter(singleAttachment => {return singleAttachment.documentTypeId == 2}); //We assume, that there is just one invoice
   let attachmentBlob = brixxApi.getAttachmentById(invoices[0].id);
   brixxApi.printBlob(attachmentBlob)

getCalcDate

Converts a date to the total days since 1.1.1970 to make it easy comparable. You can use Date, or DateTime as input and even if two datetime values do have different times.

Parameters

inputDate - This can be a date or datetime in any format or a controlId to a date or dateTime control

Example Usages

   let calcDate1 = brixxApi.getCalcDate(brixxApi.getFieldValue("myDateTime1"));
   let calcDate2 = brixxApi.getCalcDate(brixxApi.getFieldValue("myDate2"));
   if(calcDate1 === calcDate2){
      //Do something
   }

Example Results

   brixxApi.getCalcDate(new Date('1995-12-17 03:24:00')) //9481 (days since 1.1.1970)
   brixxApi.getCalcDate('1995-12-17 03:24:00')           //9481
   brixxApi.getCalcDate('1995-12-17 12:44:30')           //9481
   brixxApi.getCalcDate(myControlId)                     //?

getAttachmentId

Returns the id of an attachment of the current record by looking for the given file name.

Parameters

fileName - the name of the file attachmentApp - name of the app for the attachment (optional) recordId - Record id, where the attachment is linked to

Example Usages

   brixxApi.getAttachmentId("Invoice1.pdf", "attachmentApp", 1)

getAttachmentById

Gets and attachment by its unique id.

Parameters

id - id of the attachment

Example Usages

   brixxApi.getAttachmentById(1234);
   let allAttachmentsForThisRecord = brixxApi.getAttachmentsForCurrentRecord();
   let invoices = allAttachmentsForThisRecord.filter(singleAttachment => {return singleAttachment.documentTypeId == 2}); //We assume, that there is just one invoice
   let attachmentBlob = brixxApi.getAttachmentById(invoices[0].id);
   brixxApi.printBlob(attachmentBlob)

callWebHook

Calls a webhook to trigger a system to do anything like posting a message to a teams channel.

Parameters

  1. url - The url of the teams or slack channel, see the video to learn how to get a WebHook url.

2. the message you want to send. That depends on the service, you want to post to. here are some examples for Microsoft Teams(https://docs.microsoft.com/de-de/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using), but it can be as easy as seen in exampel 1

Example Usages

Plain text message

   brixxApi.callWebHook(myUrl, {
      text: "Hello World"
   });

full styled message with actions

   brixxApi.callWebHook(myUrl, {
      "@type": "MessageCard",
      "@context": "http://schema.org/extensions",
      "themeColor": "006E7E",
      "summary": "A new message from brixxbox",
      "sections": [{
         "activityTitle": "![TestImage](https://47a92947.ngrok.io/Content/Images/default.png)A new message from brixxbox",
         "activitySubtitle": "Volkers Sandbox",
         "activityImage": "https://teamsnodesample.azurewebsites.net/static/img/image5.png",
         "facts": [{
            "name": "Assigned to",
            "value": app.userId
        }],
        "markdown": true
      }],
      "potentialAction": [{
         "@type": "ActionCard",
         "name": "Add a comment",
         "inputs": [{
            "@type": "TextInput",
            "id": "comment",
            "isMultiline": false,
            "title": "Add a comment here for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Add comment",
            "target": "http://..."
        }]
      }, {
        "@type": "ActionCard",
        "name": "Set due date",
        "inputs": [{
            "@type": "DateInput",
            "id": "dueDate",
            "title": "Enter a due date for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "http://..."
        }]
      }, {
        "@type": "ActionCard",
        "name": "Change status",
        "inputs": [{
            "@type": "MultichoiceInput",
            "id": "list",
            "title": "Select a status",
            "isMultiSelect": "false",
            "choices": [{
                "display": "In Progress",
                "value": "1"
            }, {
                "display": "Active",
                "value": "2"
            }, {
                "display": "Closed",
                "value": "3"
            }]
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "http://..."
        }]
      }]
   });

excludeFromReadonly

It provides the functionality of excluding controls from being affected by the readOnlyMode.

In our doc for readOnlyMode, we have seen how we can use it to disable all app controls or some of them. For that we will always have to make a call to readOnlyMode function, if we want anything to change. excludeFromReadonly function provides the functionality of excluding controls from being affected by the readOnlyMode. For example, we can set this function in appStart event then it will effect all readOnlyMode function calls after that. It means if we have set some controls to be excluded for readONly Mode function at app start, they will always be excluded from it influence during app life time and we do not have to make calls to this function again and again. If user wants to update excludeFromReadonly controls list then a new call to excludeFromReadonly will overwrite the previous setting.

Exaample

   brixxApi.excludeFromReadonly(["myFirstControl", "mySecondControl"]);

Parameters

  1. Control array - It is a json array of control ids.

Example Usages

As we have seen in ReadOnlyMode the example of address app and how we disabled every control using it without options. Now let say we want "Address Number" and "Name" controls to stay enabled. For this purpose, we will need to add these controls to our excludeFromReadOnly function and put this code in appStart event.

   brixxApi.excludeFromReadonly(["adrNumber", "adrName"]);

As we can see in snapshot below Address number and name controls are editable after the app is started. We can use this functionality with any number of apps.

loadConfigRecordById

Loads a record of a specific app config from brixxbox server and returns a promise. This is a async function. You have to await the result, if you want to use it.

Parameters

  1. configName - the name of the app

  2. id - recordId to load

Result

The result is a brixxbox record object. All fieldvalues of that record are stored in data as key value pairs. (e.g. myRecord.data.addressName). The id of the record can be found in myRecord.id.

Example Usages

Simple (pay attention to the **[await](/globalDoc/glossary_await)** keyword)

   let myAddress= await brixxApi.loadConfigRecordById("address", 15); 
   let addressName = myAddress.data.name;
   let id = myAddress.is;

getGeoLocation

Returns the geo location and additional information like speed and altitude if available. Be aware, that this is an asynchronous function and you have to use await.

The Result looks like this:

   coords
      accuracy: 33
      altitude: null
      altitudeAccuracy: null
      heading: null
      latitude: 51.073834399999996
      longitude: 6.0768204
      speed: null
   timestamp: 1557477072518

Example Usages

   let myGeoLocation = await brixxApi.getGeoLocation();
   console.log(myGeoLocation.coords.latitude);
   console.log(myGeoLocation.coords.longitude);

To Visualize a geo location in google maps, see this documentation(http://www.joerg-buchwitz.de/temp/googlemapssyntax.htm) for possible url parameters, You could use the following commands in an event:

   let myLocation = await brixxApi.getGeoLocation();
   window.open("http://maps.google.de/maps?q=" + myLocation.coords.latitude + "," + myLocation.coords.longitude,'_blank');

initAllControls

Initializes all controls within a brixxbox App to their empty states.

Example Usages

   brixxApi.initAllControls();

isUserInRole

All users in any Brixxbox workspace shoyuld have been assigned a specific user role. isUserInRole takes a string argument role. On the basis of this role parameter, it determines whether a logged user

   brixxApi.isUserInRole("Management");

Parameters

  1. role - It is a string parameter. It is the name of logged in user role which needs to be checked.

Example Usage

We have seen address app in the docs of ReadOnlyMode function. Now we will build upon that functionality. In it we have used readOnlyMode function to disable all ap controls. Now we want tht if user is of admin role then all the controls should be enabled and disabled otherwise. For this we need to update our custom code. It should look like this.

if(brixxApi.isUserInRole("Admin")){
    brixxApi.readOnlyMode(false);
    console.log("raghib")
}
else{
    brixxApi.readOnlyMode();
}

Now If user 'raghib' has an admin role assigned to him then address app will be enabled for him and for all other non admin users. It will be disabled.

getFieldValue

Gets a value to a specific field

Parameters

  1. controlId => String with the control id. Some controls (like Comboboxes) do have sub information. in that case the controlId is combined with a ".". e.g. comboBoxId.subcontrolId

Example Usages

   let myText = "Hello World!";
   brixxApi.setFieldValue("myControlId", myText);
   value = brixxApi.getFieldValue('fieldId');
   let myFieldId = 'fieldId';
   let value = brixxApi.getFieldValue(myFieldId);
   let itemId = brixxApi.getFieldValue('itemCombobox'); //like any other control
   let taxKeyId = brixxApi.getFieldValue('itemCombobox.itmTaxKeyId'); //get the itmTaxKeyId value of the selected entry in acomboBox
   let itemName = brixxApi.getFieldValue('itemCombobox.itmName');
   let taxKeyId = brixxApi.getFieldValue('itemList').itmTaxKeyId; //get the itmTaxKeyId value of the selected entry in a grid
   let allRowsFromMyGrid = brixxApi.getFieldValue('itemList.allRows'); //get an array of all rows in a grid
   let selectedRowsFromMyGrid = brixxApi.getFieldValue('itemList.selectedRows'); //get an array of all selected rows in a grid
   let unselectedRowsFromMyGrid = brixxApi.getFieldValue('itemList.unselectedRows'); //get an array of all unselected rows in a grid
   let myRowJsonObject = brixxApi.getFieldValue('itemList.clickedRow'); //get the clicked row as a json object (only valid in onRowClick and onCellClick events)
   let myCellValue = brixxApi.getFieldValue('itemList.clickedCell'); //get the clicked cells formatted value (only valid in onCellClick events)
   let myCellId = brixxApi.getFieldValue('itemList.clickedCellId'); //get the clicked cells id (only valid in onCellClick events)
   for(let i = 0; i < allRowsFromMyGrid.length; i++){
   console.log(allRowsFromMyGrid[i].itmTaxKeyId);
   }

getSessionToken

GUID stands for Global Unique Identifier. A GUID is a 128-bit integer (16 bytes) that you can use for authentication purposes. We use this token to identify a user for same browser session. This function can be used to get GUID for current user sessions. It can then be used to authenticate user between different apps. Another usecase is that it could be used to identify a shopping cart. An important aspect here to note is that when when you close all browser tabs and start the Brixxbox again, this token will be different.

Example Usages

An example user is that user can get access tokens using this getSessionToken functions from two apps and compare them to confirm user identity i.e after login this can be used as authenticate the user.

   let myToken = brixxApi.getSessionToken();

isRowSelected

Checks if a row in a grid is selected or not.

Parameters

  1. controlId - The id of the grid

  2. line - This can be either a whole line from a "myGrid.allRows" call or a single id from a record.

Example Usages

   let result = brixxApi.isRowSelected("myGrid", myLine)

Used in a loop

   let allRows = app.getFieldValue("myGrid.allRows");
   for(let i = 0; i < allRows.length; i++){
      if(brixxApi.isRowSelected("myGrid", allRows[i])){
         console.log("This is selected: " + line.id);
      }
   }

Used with an id

   let result = brixxApi.isRowSelected("myGrid", 123); //Checks if the line with the id 123 is selected.

isModal

Determens if the current brixxbox app is started in a modal window.

Example Usages

Simple

   if(brixxApi.isModal()){
      alert("the brixxbox app is modal!");
   }

getLabelText

Gets the current or original lable text for a control.

Parameters

  1. controlId - Id of the control

  2. getDefault - (optional) If set to true, the default label text will be returned

const defaultText = app.getLabelText("myControl", true);

loadConfigRecordByValue

Loads a record of a specific app config from brixxbox server by a specified field and returns a promise. This is a async function. You have to await the result, if you want to use it.

Parameters

  1. configName - the name of the app

  2. keyField - the search field

  3. value - value to search for

Result

The result is a brixxbox record object. All fieldvalues of that record are stored in data as key value pairs. (e.g. myRecord.data.addressName). The id of the record can be found in myRecord.id.

Example usage

let myAddress= app.loadConfigRecordByValue("address", "adrCompanyName", "Fake Company"); 
let addressName = myAddress.data.name;
let id = myAddress.is;

initControl

Initializes a control to its empty state

Example Usages

   brixxApi.initControl();

localValue

Stores and retrieves local values, like settings or something, that you want to have persistent on this specific browser. The value will be saved only for the browser you are currently working on. The value will be save in the scope of the current workspace you are working in.

Parameters

  1. key - Key name

  2. value - (optional) value you want to save. If this is empty, brixxbox will return the value, you saved before.

This is not an asynchronous operation. No await needed!

Example Usages

   brixxApi.localValue("myKey", "Hello World"); //Save the value "Hello World" under the key "myKey"
   let x = brixxApi.localValue("myKey"); //Retrieve the Key "myKey". This will result in "Hello World"
   
   console.log(x)

inviteUser

inviteUser(string email)

This function takes a string as a parameter. This string should be an email address of a new user to whom admin of current workspace wants to invite. This function provides functionality of sending an email to a new user.

Example Usage

   var result = brixxApi.inviteUser("john.doe@acme.com");

In order to learn more about this function click here.

loadRecord

Loads a record, based on the current config, from brixxbox server and returns a promise. This is a async function. You have to await the result, if you want to use it. This function will not display the record, it will just load and return it. To display the record, use the function result with displayRecord.

Parameters

The first parameter is a control with the key value, that will be used to find the record (like an address number)

Example Usages

Simple (pay attention to the await keyword)

   let myRecord = await brixxApi.loadRecord("myKeyControl");

loadAndDisplayRecord

Loads a record, based on the value in the control, given as a parameter in the first argument and displays it. This function just combines loadRecord and displayRecord

Example Usages

Simple (pay attention to the await keyword)

   brixxApi.loadAndDisplayRecord(keyFieldID);
   await brixxApi.loadAndDisplayRecord(keyFieldID);

getSignatureImageBlob

Returns the signature of a signature control as a png (default) or svg image blob.

Parameters

  1. controlId - The id of the signature control

  2. type - optional, if not set, the function returns a png image. If set to "svg", the function returns a svg vector image.

Example Usages

loadAndDisplayRecordById

Loads a record, based on the value in the control, given as a parameter in the first argument and displays it. This function just combines and displayRecord

Example Usages

Simple (pay attention to the await keyword)

   let myBlob = brixxApi.getSignatureImageBlob("mySignature"); //gets the blob as PNG
   let myBlob = brixxApi.getSignatureImageBlob("mySignature", "svg"); //gets the blob as SVG
   brixxApi.printBlob(brixxApi.getSignatureImageBlob("mySignature"));
   let recordId = 123;
   brixxApi.loadAndDisplayRecordById(recordId);
   
   await brixxApi.loadAndDisplayRecordById(recordId);
loadRecordById
displayRecord