Logo


Business case

The business case is a very simple wholesale order management application.

The application has one backend user interface which is based on the standard Simplicité® user interface. This user interface is only used by internal users to manage reference data (suppliers, products, customers, ...) and to enter and manage customer orders and contacts.

It also has various public frontend user interfaces which allow customers to place their own orders.

Some business rules, including right rules, applies on all business objects some of which depends on the user profile.

The 2 back office business user profiles are administrator and plain user. Administrators manages all reference data, enters and/or validate orders. Plain users are only responsible for entering and finalizing orders.

Business data

Objects

The data model consist of 5 business objects:

NB: Orders are for 1 customer and 1 product (mono-product orders), a quantity can be set (minimum order quantity is 1)

User profiles

Objects

Thes Administrator profile is a back office profile. He has full access to the order management application: he can manage all data including orders and has also access to users management. He is the only profile to be allowed to validate orders.

The Plain user profile is also a back office profile. He has read only access to reference data. He has write access on orders but is restricted to the orders placed on a product from one of its designated suppliers. He is not allowed to validate pending orders.

The Customer profile is a front office profile. He has only access to dedicated custom user interfaces (web site, mobile app, ...). He is only allowed to place new orders. He can optionally also review the list of all his previous orders.

Business workflows

Order states

Objects

Orders can be in the following statuses:

Contacts states

Objects

Contacts can be in the following statuses:

Place new order screen flow

The screen flow for back office order entry is a 4 step linear screen flow:

Note: this screen flow is only an assisted process doing what can be done using plain business objects user interfaces. This screen flow does not bring any additional business rules.

Business rules

Supplier can only be created and updated by the administrator profile. A single plain user can be designated as the supplier responsible (this link is taken into account for access rights to orders).

A supplier can only be created and updated by the administrator profile. Changes on either product reference, product name or unit price is historized.

A customer can only be created and updated by the administrator profile.

Orders can be placed either by backend users (administrator or plain user) or by frontend users (customers themselves).

An order is for one customer and one product.

Regardless of the order entry origin, the following business rules applies to orders:

A contact is only entered by back office users and must be attached at least to a customer, and optionally to an order of this customer.

Custom components

Simplified order entry page

An optional user interface component is provided to provide a back office "single order entry page".

As for the order entry screen flow, this component is optional and does not include any additional business rules if compared to what can be done with plain business object pages.

Public frontends

Various public frontends are available as dedicated modules.

The web site one allows customers to place new orders. The only authentication mechanism for customers is to enter their customer code. This web site is based on the Bootstrap® web framework.

Others

Pivot tables

Various pivot tables are defined on the order business object:

Publications / integration

An oorder receipt publication is provided for for validated and shipped orders:

The application also provides some custom technical publications and APIs for integration.

Design

Business objects

This is the application's business model:

DemoSupplier business object definition

The supplier business object corresponds to the suppliers of products that can be ordered.

Fields

Name Type Required Updatable Personal Description
demoSupCode regexp(50) yes* yes Supplier unique code (e.g. MYSUP)
demoSupName char(100) yes yes Supplier name
demoSupDescription html(1000000) yes Supplier description
demoSupPhone phone(20) yes Supplier phone number
demoSupFax phone(20) yes Supplier fax number
demoSupWebsite url(100) yes Supplier website URL
demoSupEmail email(20) yes Supplier email address
demoSupLogo image yes Supplier logo
demoSupUsrId link to User id yes User responsible of supplier
Ref. demoSupUsrId.usr_login regexp(100) yes Login
demoSupComments notepad(50000) yes Comments on supplier

DemoProduct business object definition

The product business object corresponds to the products that can be ordered.

Its reference is unique per supplier.

Fields

Name Type Required Updatable Personal Description
demoPrdSupId link to DemoSupplier id yes* yes Product supplier
Ref. demoPrdSupId.demoSupCode regexp(50) Supplier unique code (e.g. MYSUP)
Ref. demoPrdSupId.demoSupName char(100) Supplier name
Ref. demoPrdSupId.demoSupLogo image Supplier logo
Ref. demoPrdSupId.demoSupUsrId id User responsible of supplier
demoPrdReference regexp(10) yes* yes Product reference
demoPrdName char(100) yes yes Product name
demoPrdType enum(50) using DEMO_PRD_TYPE list yes yes Product type
demoPrdDescription text(1000000) yes Product description
demoPrdPicture image yes Product picture
demoPrdEan13 char(13) yes EAN13 code
demoPrdEan13Image image EAN13 code image
demoPrdStock int(11) yes yes Current stock for product
demoPrdUnitPrice float(11, 2) yes yes Unit price of product
demoPrdAvailable boolean yes yes Available product?
demoPrdFeatured boolean yes yes Featured product?
demoPrdDocumentation html(1000000) yes Product documentation
demoPrdBrochure document yes Product brochure
demoPrdOnlineDoc url(255) yes Online product documentation URL
demoPrdComments notepad(50000) yes Comments on product

Lists

Custom actions

DemoClient business object definition

The client business object corresponds to the customer who places order.

His address is geolocalized using GoogleMaps® API.

Fields

Name Type Required Updatable Personal Description
demoCliCode regexp(10) yes* yes Customer code
demoCliFirstname char(100) yes yes yes Customer first name
demoCliLastname char(100) yes yes yes Customer last name
demoCliAddress1 char(100) yes yes yes Customer address (line 1)
demoCliAddress2 char(100) yes yes Customer address (line 2)
demoCliZipCode char(10) yes yes yes Customer postal code
demoCliCity char(50) yes yes yes Customer city
demoCliCountry enum(30) using DEMO_COUNTRY list yes yes yes Customer country
demoCliCoords geocoords yes yes Customer geoccordinates
demoCliEmail email(50) yes yes Customer email address
demoCliHomePhone phone(20) yes yes Customer home phone number
demoCliWorkPhone phone(20) yes yes Customer work phone number
demoCliMobilePhone phone(20) yes yes Customer mobile phone number
demoCliFax phone(20) yes yes Customer fax number
demoCliType enum(30) using DEMO_CLI_TYPE list yes yes Customer type
demoCliComments html(1000000) yes Useful comments on customer
demoCliPlacemapLabel char(100) yes Customer place map label
demoCliTitre char(3) yes -

Lists

DemoOrder business object definition

The order business object corresponds to the product orders placed by clients.

An order is for one single product.

Fields

Name Type Required Updatable Personal Description
demoOrdNumber int(11) yes* Order number (automatically calculated at creation)
demoOrdDate date Order date
demoOrdStatus enum(30) using DEMO_ORD_STATUS list yes yes Order status
demoOrdDeliveryDate datetime yes Order delivery date
demoOrdCliId link to DemoClient id yes* yes Order customer
Ref. demoOrdCliId.demoCliCode regexp(10) Customer code
Ref. demoOrdCliId.demoCliFirstname char(100) yes Customer first name
Ref. demoOrdCliId.demoCliLastname char(100) yes Customer last name
Ref. demoOrdCliId.demoCliEmail email(50) yes Customer email address
Ref. demoOrdCliId.demoCliAddress1 char(100) yes Customer address (line 1)
Ref. demoOrdCliId.demoCliAddress2 char(100) yes Customer address (line 2)
Ref. demoOrdCliId.demoCliZipCode char(10) yes Customer postal code
Ref. demoOrdCliId.demoCliCity char(50) yes Customer city
Ref. demoOrdCliId.demoCliCountry enum(30) using DEMO_COUNTRY list yes Customer country
demoOrdPrdId link to DemoProduct id yes* yes Order product
Ref. demoOrdPrdId.demoPrdReference regexp(10) Product reference
Ref. demoOrdPrdId.demoPrdName char(100) Product name
Ref. demoOrdPrdId.demoPrdType enum(50) using DEMO_PRD_TYPE list Product type
Ref. demoOrdPrdId.demoPrdPicture image Product picture
Ref. demoOrdPrdId.demoPrdSupId id Product supplier
Ref. demoPrdSupId.demoSupCode regexp(50) Supplier unique code (e.g. MYSUP)
Ref. demoPrdSupId.demoSupName char(100) Supplier name
Ref. demoPrdSupId.demoSupLogo image Supplier logo
Ref. demoPrdSupId.demoSupUsrId id User responsible of supplier
Ref. demoOrdPrdId.demoPrdStock int(11) Current stock for product
Ref. demoOrdPrdId.demoPrdUnitPrice float(11, 2) Unit price of product
demoOrdUnitPrice float(11, 2) Product unit price for order
demoOrdQuantity int(11) yes yes Product quantity ordered
demoOrdTotal float(11, 2) Total order amount
demoOrdVAT float(11, 2) VAT for order
demoOrdComments notepad(50000) yes Comments on order

Lists

DemoContact business object definition

The contact object holds the interactions with the clients.

A contact can be linked or not a an order of the selelcted client (when linked to an order the demoCtcOrdId field is set).

Fields

Name Type Required Updatable Personal Description
demoCtcDatetime datetime yes* Contcat date and time
demoCtcType enum(10) using DEMO_CTC_TYPE list yes yes Contact type
demoCtcSubType enum(10) using DEMO_CTC_SUBTYPE list yes Contact sub type
demoCtcCanal enum(10) using DEMO_CTC_CANAL list yes yes Canal used for contact
demoCtcPriority boolean yes yes Contact priority
demoCtcStatus enum(1) using DEMO_CTC_STATUS list yes yes Contact status
demoCtcCliId link to DemoClient id yes* yes Contact customer
Ref. demoCtcCliId.demoCliCode regexp(10) Customer code
Ref. demoCtcCliId.demoCliFirstname char(100) yes Customer first name
Ref. demoCtcCliId.demoCliLastname char(100) yes Customer last name
Ref. demoCtcCliId.demoCliEmail email(50) yes Customer email address
Ref. demoCtcCliId.demoCliHomePhone phone(20) yes Customer home phone number
Ref. demoCtcCliId.demoCliWorkPhone phone(20) yes Customer work phone number
Ref. demoCtcCliId.demoCliMobilePhone phone(20) yes Customer mobile phone number
Ref. demoCtcCliId.demoCliFax phone(20) yes Customer fax number
demoCtcOrdId link to DemoOrder id yes Contact order
Ref. demoCtcOrdId.demoOrdNumber int(11) Order number (automatically calculated at creation)
Ref. demoCtcOrdId.demoOrdDate date Order date
Ref. demoCtcOrdId.demoOrdStatus enum(30) using DEMO_ORD_STATUS list Order status
Ref. demoCtcOrdId.demoOrdCliId id Order customer
Ref. demoOrdCliId.demoCliCode regexp(10) Customer code
Ref. demoCtcOrdId.demoOrdPrdId id Order product
Ref. demoOrdPrdId.demoPrdSupId id Product supplier
Ref. demoPrdSupId.demoSupCode regexp(50) Supplier unique code (e.g. MYSUP)
Ref. demoPrdSupId.demoSupUsrId id User responsible of supplier
Ref. demoOrdPrdId.demoPrdReference regexp(10) Product reference
Ref. demoOrdPrdId.demoPrdName char(100) Product name
Ref. demoCtcOrdId.demoOrdQuantity int(11) Product quantity ordered
demoCtcFile document yes Contact attached file
demoCtcPicture image yes -
demoCtcMessages notepad(50000) yes yes Messages

Lists

State models workflows

Orders

Orders go thru the following state model:

Activity workflows

Order entry

The order entry workflow has the following model:

DemoOrderCreate business process definition

Order entry activity workflow

Activities

Profiles

The application's user profiles are: