Using Tryton for Product Lifecycle Management and Prototype Manufacturing

Two characteristics of high-tech product development are:

  • The road to large scale production is iterative, typically starting with a feasibility or proof-of-concept prototype, then one to three development prototypes, one or more pilot manufacturing builds, and finally production. 
  • Many of the parts incorporated in a product are Commercial-off-the-Shelf (COTS) items, manufactured by an Original Equipment Manufacturer (OEM) and sold through distributors and other re-sellers.

The process of design is itself iterative, working from the known, such as it needs to do this, it should be about X big, it must be able to provide X much output power, it must last X long between charges, the display must be X inches in size, it must be waterproof, it must be loud (or quiet), etc.

During development what is unknown will become known, and a design will emerge that meets requirements. At some point, it may become necessary to build a prototype to understand some aspect of the design in more detail, and design decisions made based on the prototype (generally either “that actually works great, don’t change a thing” or “that’s not good enough, find another solution”).  Building low volume prototypes efficiently is a detailed persnickedly job, missing only one is all that is needed to bring a finely tuned development or new product introduction (NPI) process to a grinding halt. 

A product is typically made from a mix of COTS parts and custom parts. Custom parts are used when no suitable COTS part exists or is unsuitable for one reason or another. Often custom parts are used to create a product identity, such as the enclosure, labelling, and user accessories, but they may also may be hidden, such as an internal mounting bracket or an integrated circuit that implements new technology. COTS items are typically general purpose electronics parts (e.g. resistors, capacitors, transistors, switches, display panels, many integrated circuits,  etc.) as well as general purpose hardware (e.g. screws and washers). The same OEM product is often available from several vendors, and often severa; OEM manufactures will produce a product similar enough be used interchangeably.  Custom parts will be sourced from the vendor selected to manufacture the custom part, while for COTS parts the designer must specify a source. Providing more sources will provide greater purchasing flexibility, which can be critical to staying on schedule when parts are in short supply or time is of the essence (or both).

A spreadsheet is often the first tool reached for to manage New Product Introduction (NPI) and new product bill of materials (BOMs).  If the product and part supply chain are simple, a spreadsheet approach will be manageable. However, a complex product structure, with separate sub-assemblies re-using common parts each with potentially multiple alternates and vendors, quickly eclipses a spreadsheet solution and a domain-specific Product Lifecycle Management (PLM) tool becomes necessary to prevent bottlenecks.

Tryton

Tryton (tryton.org) is a mature well-respected open source business software project, the type of software generally called ERP (Enterprise Resource Planning). Tryton is composed of a set of core modules with additional modules included as needed for less common functionality not all situations will require (in the world of software, generally less is better).

The figure below shows the Tryton standard modules. The modules needed for basic PLM and prototype manufacturing have been circled, and will support basic PLM and manufacturing. PLM support includes defining and managing parts and hierarchical BOMs, specifying approved sources for purchase, providing common access to part documentation such as OEM datasheets, engineering drawings and work instructions, and include a controlled change management  process when a design change is needed. Manufacturing support includes Material Requirements Planning (MRP), managing vendor Request-for-Quotations (RFQs), purchasing raw material, manufacturing and QA testing, product serialization if needed, and sales. The project management module has been included to report on product development, release and maintenance project costs, for control and business decision making.

Standard Tryton Modules Required for PLM and Prototyping Manufacturing

 

Swift Construction Company

The fictional Swift Construction Company (SCC) manufactures a radio receiver product called the Aircraft Wireless. The SCC designed the Aircraft Wireless, does the final product assembly and ships finished product to customers. The Aircraft Wireless contains a printed circuit assembly (PCA) with the radio electronics, which is assembled by an electronic contract manufacturer (ECM). The ECM is provided with a BOM for the electronics PCA,  and depending on the situation the ECM may be provided with a kit of parts, or the ECM may have to purchase the parts themselves (turn-key production).

The Aircraft Wireless product as sold to customers is SCC part number 100-0003 . This is the top-level part number and includes not only the Aircraft Wireless itself, but also the shipping box, user manual and included accessories.

The SCC has historically used a software PLM application called Parts&Vendors[1] (P&V) to document engineering designs. P&V was the eminant engineering PLM database of the 90’s for startups and small-to-medium (SME) businesses, but unfortunately Trilogy Design no longer exists and the SCC knows it is running on borrowed time and is looking for a suitable replacement. The SCC has selected Tryton as a potential replacement for P&V, and is starting a detailed evaluation process using their historical P&V workflows for reference.

Top-Level PN 100-0003 Assembly Tree

 

Workflows and User Stories

A variety of common worflows and user stories have been identified to explore using Tryton to understand Tryton’s basic behavior and identify any constraints.  A general description is provided here, each workflow will be described in detail in a separate post and linked from the heading once it is avaiable.

Please post a comment at the bottom giving any specific behaviors you would like to see explored.

Building a Tryton Server

Tryton will be installed on a basic server using the Ubuntu Linux operating system and installing Tryton using a Docker container provided by the Tryton project.

Create a Part with Alternates and Sources

Identify one or more Mfr/MfrPN with a part, as well as one or more vendors that the Mfr/MfrPN can be purchased from and for what price.

PN 900-0006 is an axial diode, with three alternates specified, and a different vendor for each Mfr/MfrPN. The concept and basic requirements can be understood from how sources are managed in Parts&Vendors[2] (P&V).

P&V provides for a Vendor to be marked as the Primary vendor, and the cost of the item is driven by the entered vendor cost. This is effective during the engineering stage of a project when sources are first being identified, long before actual purchase, but having cost forecasts of known accuracy is vital to validate development. When the product transitions from design to production, costing will transition to standard model driven by purchase orders and receipt of product into inventory.

Sources for PN-900-0006 Diode
Sources for PN 900-0006 Diode

 

Parts generally need multiple units of measure (UOM) to be defined, and the relationship between them, for example the “use unit of measure” on a BOM for a particular epoxy catalyst might be in milli-litre, the “stock unit of measure” is 100ml bottles, and the “purchase unit of measure” is a case of 12 bottles. The units and their relationships must be defined corrrectly, and it may be necessary to consider round-off and calculation errors when chosing units, such as when wire purchased in a 19,300 foot spool and used in centimeters. 

New Units of Measure (UOM)

Capture Supporting Part Documents

It is convenient to capture documents associated with a part (such as manufacturer’s datasheets and engineering drawings) with the part for convenient access. As well, keeping ad hoc notes on a part can often provide crucial information to unravelling a future issue. 

Files associated with PN 900-0006 DIODE

Create a Bill of Materials BOM

PN 200-0001 (IND,830UH,AIRCRAFT WIRELESS) is the lowest-level sub-assembly in the  hierarchical Aircraft Wireless BOM.

PN 200-0001 Parts List

Make a Major Release (Revision)

Update a part or bill of materials using a controlled atomic workflow. Generate a report showing which parts not yet “released” (approved for use) within a product structure.  

Support an Alternate Assembly

If there are no true second sources for a Part, it may be possible to design the product such that the same function is maintained by use of some other non-interchangeable part. Using alternates in a controlled process will maintain traceability, which various regulated industries may require. 

As an example, assume a product with an internal power supply printed circuit board (PCB), which uses a particular monolithic AC/DC power supply module. The module is an “old” design, and has no direct alternates (mechanical and electrical) available, and the best electrical  alternate would require a new incompatible PCB. It also seems the module is getting harder to purchase, and because supply risk is increasing, which affects the abiliity of the enterprise to product product, it is desired to have an alternate process in place should the current module be unavailable, which is also a growth strategy until then.

A simple solution chosen is often to simply design a new PCB for the the best electrical alternate, up-rev the BOM to use the new PCB and module and don’t look back.  A better solution would be to create a new part number for a new PCB assembly, using the new AC/DC power supply brick and its own BOM and fab file set for the PCB, and recognise the new part number as an alternate for the original part number. This will allows running out of  raw and WIP materials as efficiently as possible, and provides traceability should the old PCB assembly be buld again (don’t say it will wouldn’t happen, I won’t believe you anyway).

Perform Simple Purchasing

A lot of PN 200-0001 (IND, 830UH, AIRCRAFT WIRELESS) must be manufactured to have in stock before the Aircraft Wireless PCA can be manufactured. Tryton production planning can be used to issue purchase orders for the raw material, but as there are only three parts it will be faster to purchase them manually.  

Manufacture an Edge Assembly

An edge assembly is one that does not contain sub-assemblies. The lowest level manufactured sub-assembly in the Aircraft Wireless is PN 200-0001, a custom 830uH inductor manufactured in-house by the SCC. 

Determine BOM Shortages for Manufacturing

Capture stock on hand by importing a stock count, and enter part purchase orders with expected delivery date. For a given date of manufacturing, generate a report showing required material taking into account stock-on-hand and parts on order.. 

Purchase an Assembled Printed Circuit Assembly

The assembled printed circuit assembly, or PCA (part number 200-0003) in the Aircraft Wireless is purchased in lots of 5 from an ECM. The SCC kits the necessary raw material for the build and consigns it to the ECM. When the finished PCAs are returned by the ECM, tey are received by the SCC, inspected, serialized and stocked in inventory.

Purchase Using a BOM

Generate a report of material required to manufacture a multi-level hierarchial BOM, taking into account stock on hand. Optionally generate purchase orders for required material taking into account minimimum stocking levels, minimum order quantities, price-quantity breaks, and order in multiples requirements. 

Sell a Serialized Product

This workflow explores serialized stock in the context of a customer purchase. B&E Submarines desires to purchase a spare parts kit for the Aircraft Wireless unit they previously purchased. A serialized circuit board is used in the assembly of the spare parts kit (preferably a phantom-type BoM to make the parts in it visible), which is then sold and delivered to B&E.

Sometime later, Ed Bentley calls from B&E. He says he found a circuit board, but he doesn’t know if it is the circuit board from the spares kit. Ed is not sure, but he thinks the original board might have failed and he swapped it with the one from the spare parts kit. Ed wants to know if the serial number on the board is the same as the board shipped in the spare parts kit he bought.

Report Use of Serialized Stock

Explore serial numbers in the context of a project. B&E Submarines plans to upgrade 5 of their submarines with Aircraft Wireless systems. A contract is negotiated between the SCC and B&E, and the SCC initiates a Project to capture all related activity (of which the physical receiver units are only one portion). Complete radio receivers PN 10000003 are manufactured, each with its own serial number, traceable to the serialized electronics circuit board within. The completed radio receivers are sold and delivered to B&E as part of the overall project.

Sometime later, Ed Bentley calls from B&E. He has a circuit board in his hand again, and wants to know where the serial number came from. Ed asks if the circuit board was from one of the 5 receivers delivered as part of the upgrade project.

Rent, Return, Inspect and Re-Stock a Field Support Kit

  • Create manufacturing order
  • Issue material to order (serialized PCA)
  • Deliver order to customer
  • Return order from customer
  • Inspect items, replace or repair as needed
  • Return material to stock (serialized PCA)

Act on Data from an IIoT Device

It is possible for an Industrial Internet of Things (IIoT) type device to interact directly with Tryton for a variety of tasks:

  • Create a service order when a device reports service is required in the case of non-optimal machinery operation.
  • Recognise asset transfer according to usage data a device  repots, such as sale of commodity such as electricity or oil, and automatically perform monthly customer billing.

References

[1] http://www.trilogydesign.com/ (active as of 2021-08-12)

 

 

Building a Tryton Server

I will be creating a new Ubuntu 20.04 LTS virtual machine using VirtualBox on FreeBSD, and install Tryton using the Docker container provided by the Tryton project. Of course there are other options.

Create Virtual Machine

Install Ubuntu 20.04 using the Ubuntu distribution DVD ISO and using the startup wizard configure appropriately.

Copy your user ssh key to the new server and disable password login.

Configure vm port forwarding.  Port forwarding with VirtualBox must be done with the vm powered off.

Name: ssh
Protocol: TCP
Host Port: 8000
Guest Port: 8000

Update Server OS

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

Install Docker

$ sudo apt install docker.io

Install Tryton

$ sudo docker pull tryton/tryton

Start a PostgreSQL instance

The Tryton image will be pulled from library/postgres

$ sudo docker run --name tryton-postgres -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_DB=tryton -d postgres

Setup the database

$ sudo docker run --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -it tryton/tryton trytond-admin -d tryton --all

The script will prompt for:

  • “admin” email for “tryton”
  • “admin” password for “tryton”

Store the password in a key vault for safe future reference.

Start Tryton Instance

$ sudo docker run --name tryton -p 8000:8000 --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -d tryton/tryton

Start Tryton cron Instance

$ sudo docker run --name tryton-cron --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -d tryton/tryton trytond-cron -d tryton

Create bash Startup Script

Without further configuration the Docker container will not start automatically when the server starts. While it is possible to configure Tryton to automatically start, I have created a simple bash script for convenience to start Tryton manually.

dale@starlord:~$ cat start-tryton.sh
#!/bin/bash
# run using sudo
docker start tryton-postgres tryton tryton-cron
dale@starlord:~$

Install Tryton Modules

Modules are installed using the Tryton client, either the native client or the web client.

Login into Tryton as the admin user and access the menu: Administration > Modules > Modules. Mark the following modules for install (double-click in the Mark for Install column):

  • account
  • product
  • production
  • project
  • purchase
  • sale
  • stock

(other modules will be included automatically if they are dependencies)

To install the marked modules, either:

  • Select Launch Action icon in the Modules menu bar and then Perform Pending Installation/Upgrade, or
  • Execute the Perform Pending Installation/Upgrade Wizard from the main Tryton menu.

After the install/upgrade completes, the Module Configuration wizard runs and will query you to configure the installed modules.

Create a Company

A company is a type of ‘party’. To identify a party as a company in a new database you must first create a new party, then select it as the new company.

  • Name
    • Swift Construction Company
  • Addresses
    • Name: Default
    • Street: 1 Swift Way
    • Zip: 13054
    • City: Shopton
    • Country: United States
    • Subdivision: New York
  • Language
    • English

Configure the Company

  • Enter Company > Currency
    • US Dollar
  • On the Company > Employees > Party view
    • select the new company (e.g. Swift Construction Company)
    • select Add

Create a Chart of Accounts

  • Company: Swift Construction Company
  • Account Template: Minimal Account Chart
  • Create Default Properties
    • Default Receivable Account: Main Receivable
    • Default Payable Account: Main Payable

You will need to reload the menu in the Tryton client if it isn’t now displaying menu choices for the new modules (i.e. access menu: User > Menu Reload (Ctrl-T).

The Tryton server has been installed and you can connect to it from a Tryton client. You have also created a new Tryton database with the modules necessary to implement Maestro workflows.

Other Stuff

Command arguments

if COMMAND starts with a -, it is appended as argument to the default COMMAND. To see all arguments available run:

$ sudo docker run --rm -ti tryton/tryton --help

References

 

Building a Tryton Server on FreeBSD

This article is part of a series on the Tryton framework, to complement the Maestro project on GitHub. This article describes installing the Tryton server (trytond) on FreeBSD.

Caution – this is a Work in Progress  updating original 2014-05-24 post for Tryton 5.2 on FreeBSD 12.0 using Virtualenv.

Install FreeBSD

Boot vm from boot CD/DVD and follow the standard install procedure, including creating an admin user and including it in the wheel group.

I always configure remote access using ssh keys only for for security, Copy the public ssh key for the admin user to ~/.ssh, edit /etc/ssh/sshd_config to add “AllowUsers adminusername” and restart sshd.

Check for and install available FreeBSD OS updates, and install the pkg packaging system port..

# freebsd-update fetch
# freebsd-update install
# pkg update   

You can check the installed packages for reported vulnerabilities (-F is required for initial use only to download a new vulnerability database).

# pkg audit -F

Install PostgreSQL

The files belonging to the Postgresql database system will be owned by user “postgres”, who must also own the server process.

# pkg install postgresql93-server-9.3.4
# echo "postgresql_enable=YES" >> /etc/rc.conf
# /usr/local/etc/rc.d/postgresql initdb
# /usr/local/etc/rc.d/postgresql start

The default configuration file (/var/db/postgres/data96/postgresql.conf is acceptable and does not need editing. Only localhost will have access to PostgreSQL, which is adequate as Tryton will be served from the same server. 

Add a PostgreSQL “tryton” super-user.

dale@casper:~ % sudo su postgres
$ createuser -sdrP tryton
Enter password for new role:
Enter it again:
$ exit
dale@casper:~ %

The “tryton” super-user password will ned to be entered in trytond.conf (the trytond daemon configuration file) for Tryton to access its database.

Restart PostgreSQL.

dale@casper:~ % sudo /usr/local/etc/rc.d/postgresql restart
LOG:  ending log output to stderr
HINT:  Future log output will go to log destination "syslog".
dale@casper:~ %

Confirm localhost can connect to the PostgreSQL server (“-W” causes psql to prompt for the user password).

dale@casper:~ % psql --username=tryton -W --list
Password for user tryton:
List of databases
Name       | Owner    | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres   | postgres | UTF8     | C       | C     |
template0  | postgres | UTF8     | C       | C     | =c/postgres +
           |          |          |         |       | postgres=CTc/postgres
template1  | postgres | UTF8     | C       | C     | =c/postgres +
           |          |          |         |       | postgres=CTc/postgres
(3 rows)
dale@casper:~ %

Install Tryton Dependencies

Install Python and other dependencies using pkg.

% sudo pkg install python
% sudo pkg install py36-pip
% sudo pkg install bash
% sudo pkg install py36-virtualenv
% sudo pkg install py36-virtualenvwrapper
% sudo pkg install libxml2
% sudo pkg install libxslt
% sudo pkg install graphviz

Install the Python pydot package, the Python interface to Graphviz, and psycopg2, the Python interface to PostgreSQL.

% sudo pip install pydot
% sudo pip install psycopg2

Create a trytond system user

The “tryton” system user will execute the trytond daemen. The tryton user’s home directory (/home/tryton) will be configured as the root of the Tryton file system for storing document attachments. 

dale@casper:~ % sudo adduser
Username: tryton
Full name: trytond system user
Uid (Leave empty for default):
Login group [tryton]:
Login group is tryton. Invite tryton into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]:
Home directory [/home/tryton]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]: no
Username   : tryton
Password   : <disabled>
Full Name  : tryton system user
Uid        : 1002
Class      :
Groups     : tryton
Home       : /home/tryton
Home Mode  :
Shell      : /bin/sh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (tryton) to the user database.
Add another user? (yes/no): no
Goodbye!
dale@casper:~ % 

Create a Tryton source directory

Create a sub-child directory in  the tryton user directory for Tryton source code.

dale@casper:~ % sudo mkdir /home/tryton/tryton
dale@casper:~ %

Configure a virtual environment

Create a “default” virtual environment to use for execution.

dale@casper:~ % su - Password:
root@casper:~ # bash
[root@casper /root]# cd /home/tryton/tryton 
[root@casper /home/tryton/tryton]# virtualenv default
Using base prefix '/usr/local'
New python executable in /usr/home/tryton/default/bin/python3.6
Also creating executable in /usr/home/tryton/default/bin/python
Installing setuptools, pip, wheel...done.
[root@casper /home/tryton/tryton]# source default/bin/activate
(default) [root@casper /home/tryton/tryton]# 

Install trytond and modules

Install trytond – the Trytond server daemon.

(default) [root@casper /home/tryton/tryton]# pip install trytond

trytond modules provide areas of functionality to trytond. You can generate a list of all available modules using pip.

(default) [root@casper /home/tryton/tryton]# pip search tryton

Install the trytond_sale module to provide a basic set of functionality.

(default) [root@casper /home/tryton/tryton]# pip install trytond_company

Modules often have dependencies. To see all the trytond modules which were installed, you can use pip to list installed modules and grep to filter for trydond.

(default) [root@casper /home/tryton/tryton]# pip list | grep trytond
trytond 5.2.6
trytond-account 5.2.3
trytond-account-invoice 5.2.2
trytond-account-invoice-stock 5.2.0
trytond-account-product 5.2.0
trytond-company 5.2.0
trytond-country 5.2.0
trytond-currency 5.2.1
trytond-party 5.2.0
trytond-product 5.2.1
trytond-sale 5.2.0
trytond-stock 5.2.1
(default) [root@casper /home/tryton/tryton]#

Create log directory for trytond

dale@casper:~ % sudo mkdir /var/log/trytond
dale@casper:~ % sudo chown -R tryton:tryton /var/log/trytond

Create json-rpc data directory for trytond

dale@casper:~ % sudo mkdir /var/run/trytond
dale@casper:~ % sudo chown -R tryton:tryton /var/log/trytond

Create trytond.conf

The Tryton configuration file trytond.conf is read by the Tryton server daemon trytond when it starts, and includes such site-specific data as:

  • computer addresses to respond to (jsonrpc).
  • username and password for the PostgreSQL “tryton” super-user.
  • Tryton “administrator” password (required to create, drop, backup or restore a database).
  • specify FreeBSD-specific directory paths

Unfortunately, the pip install for trytond currently does not copy the default trytond.conf file in the package to a suitable location (or rather, to any location). Download the trytond server distribution from PyPi, extract and copy trytond/etc/trytond.conf to /usr/local/etc/trytond.conf.

Edit parameters in /usr/local/etc/trytond.conf using the following as reference:

jsonrpc = *:8000,0.0.0.0:8000
jsondata_path = /var/run/trytond

db_type = postgresql
db_host = localhost
db_port = 5432
db_user = tryton
db_password = appleton

admin_passwd = appleton

pidfile = /var/run/trytond/trytond.pid
logfile = /var/log/trytond/trytond.log

data_path = /home/tryton

Create tryton rc script

An rc.d script will be created to manage starting and stopping trytond, and to start trytond after booting. I’m using a basic rc.d startup script created by Christoph Larsen for the GNU Health project, and added support for status reporting. Copy the following code to /usr/local/etc/rc.d/trytond

#!/bin/sh

#
# PROVIDE: trytond
# REQUIRE: DAEMON
# BEFORE:  LOGIN
#
# Originally created by: Christoph H. Larsen
# http://lists.gnu.org/archive/html/health-dev/2011-11/msg00008.html
#

. /etc/rc.subr

name=trytond
rcvar=`set_rcvar`

load_rc_config $name

: ${trytond_enable="NO"}
: ${trytond_user="tryton"}
: ${trytond_group="tryton"}

start_cmd=${name}_start
stop_cmd=${name}_stop
restart_cmd=${name}_restart
status_cmd=${name}_status

command="/usr/local/bin/trytond"
required_files="/usr/local/etc/trytond.conf"

trytond_start() {
  su tryton -c "$command --config=/usr/local/etc/trytond.conf" &
}

trytond_stop() {
if [ -f /var/run/${name}/${name}.pid ]; then
  kill `cat /var/run/${name}/${name}.pid`
  fi
}

trytond_restart() {
  if [ -f /var/run/${name}/${name}.pid ]; then
  kill `cat /var/run/${name}/${name}.pid`
  sleep 1
  fi
  su tryton -c "$command --config=/usr/local/etc/trytond.conf" &
}

run_rc_command "$1"

Make /usr/local/etc/rc.d/trytond executable

# chmod u+x /usr/local/etc/rc.d/trytond

Add trytond_enable to /etc/rc.conf

# echo "trytond_enable=YES" >> /etc/rc.conf

Start trytond

Start trytond using the rc script:

# /usr/local/etc/rc.d/trytond start

Once started, you can check if trytond is running with the status option:

# /usr/local/etc/rc.d/trytond status

or stop the server if needed:

# /usr/local/etc/rc.d/trytond stop

Create and configure a new Tryton database

Download and install the Tryton desktop client for your system. Launch the Tryton client and access menu: File > Databases > New database.

Enter the Tryton server admin password (“admin_passwd” in trytond.conf) in the password field, then click Change beside the IP address and change the address to that of your server.

You must enter the password first, before changing the server address, because the Tryton client will attempt to connect to the server immediately after the server address is changed, and will report “Unable to connect” if the admin password was not already entered.

Enter the name of the database to create (e.g. “scc”) and the admin password for the database, then click Create.

Login to the new database as user “admin” and the password you entered to create the database. The Module Configuration Wizard will run automatically after login to configure the new database.

  • Add user (e.g. “Dale Scott”, login “dale”), optionally add permissions (you may need to update user permissions after installing modules, so this is optional at this point),
    • add Permissions: “Administration” (which will be the only permission group available)
    • add Rule: Read, Write, Create, Delete, Model: View Search (which will be the only rule available available)

Install Tryton modules into the database

Mark modules for install

The Tryton modules previously installed to the server will not be installed in a Tryton database.

In the Tryton client, access the menu: Administration > Modules > Modules. Mark the following modules for install (double-click in the Mark for Install column):

  • dashboard
  • product
  • product-attribute
  • production
  • project
  • project-plan
  • purchase
  • sale
  • stock
  • stock-lot
  • stock-split

Install marked modules

There are two ways to install the marked modules, you can either:

  • Select Launch Action icon in the Modules menu bar and then Perform Pending Installation/Upgrade, or
  • Execute the Perform Pending Installation/Upgrade Wizard from the main Tryton menu.

After the install/upgrade completes, the Module Configuration wizard runs and will query you to configure the installed modules.

Create a Company

A company is a type of ‘party’. To identify a party as a company in a new database you must first create a new party, then select it as the new company.

  • Name
    • Swift Construction Company
  • Addresses
    • Name: Default
    • Street: 1 Swift Way
    • Zip: 13054
    • City: Shopton
    • Country: United States
    • Subdivision: New York
  • Language
    • English

Configure Company

  • Enter Company > Currency
    • US Dollar
  • On the Company > Employees > Party view
    • select the new company (e.g. Swift Construction Company)
    • select Add

Create Chart of Accounts

  • Company: Swift Construction Company
  • Account Template: Minimal Account Chart
  • Create Default Properties
    • Default Receivable Account: Main Receivable
    • Default Payable Account: Main Payable

You will need to reload the menu in the Tryton client if it isn’t now displaying menu choices for the new modules (i.e. access menu: User > Menu Reload (Ctrl-T).

The Tryton server has been installed and you can connect to it from a Tryton client. You have also created a new Tryton database with the modules necessary to implement Maestro workflows.

Miscellaneous

Update FreeBSD periodic databases

I don’t know if installing packages triggers the periodic databases to update, but since I often don’t run a virtual machine long enough to cross day, week or month boundaries (when they update automatically), I typically manually update them after major system changes.

# periodic daily
# periodic weekly
# periodic monthly

References

Full Custom – sometimes the only solution

Maestro is again a ground-up Yii-based application, and has been merged with the previously separately developed SCC dataset in a single Maestro repo.

Recent explorations of OpenERP (now Odoo), Tryton and ERPNext provided useful insights into user interface and implementation alternatives. However all were found missing fundamental relationships critical for Maestro, such as issues to parts, issues to stock items, stock items to projects, and general management of serialized stock items. Further, although these “high-level frameworks” have many advantages, the time and effort required to become useful developing with them was found to be not insignificant. Finally it was deemed more efficient to scale back requirements in return for more immediate progress towards a minimum viable product.

A new demo system has been created on swiftconstructioncompany.net. The code currently running is from early 2014 (before development was halted to investigate OpenERP, Tryton and ERPNext), but will be updated after overhauling the database schema. When the demo is complete, it will include a local email server with webmail client for viewing user mail, and an LDAP server for user authentication.

A virtual machine will also be made available for download if there is enough interest (please indicate interest using the contact form).