Designing User Journey

An app is built for its user, so we should take care of desigining a good user journey.

gohkhoonhiang
Apr 25, 2023 | 22 mins read

User Journey Design

Now that we have determined the domain models of the app, we will move on to designing the user journey, which is the flow of how the user will interact with the data models.

The most common interactions the user will have with the data models are what we call CRUD: create, read, update and delete. With these actions, we can guess that there will be corresponding functions on each data model to handle the CRUD requests.

In this exercise, we will go back to the 1st part where we list down the user requirements, and design the CRUD journey of each requirement. This will then inform us how to connect the various data functions to form the flow of each user journey, which will then be presented with a Sequence Diagram at the system level.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Design an App
    section Requirements Gathering
        Done: 5: Me
    section Domain Modelling
        Done: 5: Me
    section User Journey Design
        Todo: 5: Me

My user journey in designing an app.

Tag-based Time Tracking

Create Work Log

Typically, the user will navigate to the Work Logs page, click on a “Start” button to initiate a new Work Log. Then she will input the start time and description for the entry. For convenience, the system may pre-fill the start time with the current time, but we provide the flexibility to change the time if say, this is a back-filled entry. She may also input the end time, content and tags if this is a back-filled entry, but if not, then she will submit the start time and description right away.

At the end of the work, she will go to the Work Log, and click the “End” button to complete the log. Now, the system may pre-fill the end time, but again, we allow the flexibility for the user to input the value. She may also input the content which can be a detailed log of the work done, and add a few tags, then submit the entry.

This completes the flow of creating a new Work Log.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Work Log
    section Start Work Log
        Go to Work Logs: 5: User
        Click "Start": 5: User
        Input Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Work Log (cont'd)
    section End Work Log
        Go to Work Logs: 5: User
        Click "End": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Work Log journey.

Edit Work Log

It may also be possible that the user wants to update an existing Work Log, eg. when she notices a mistake in the content, or that she would like to refine the description. We will allow the user to do so via the “Edit” button. Then she can make changes to any of the fields, including the start and end time. Here we don’t restrict which fields are editable, because we want to give the user complete control over the log since this is what she will use to invoice her clients.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Work Log
    section Edit Work Log
        Go to Work Logs: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Work Log journey.

Delete Work Log

In an unlikely case, the user may want to remove an existing Work Log, perhaps because she had the intention to start work and initiated a log, but was caught in unexpected situations and could not actually do any work, so she had to remove the log.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Work Log
    section Delete Work Log
        Go to Work Logs: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Work Log journey.

Manage Tags

By default, whenever the user adds a Tag to the Invoice or any record that accepts tagging, the system will automatically create the Tag entry with the default styling. The user can then edit the Tag, or even create new ones without using them at first.

Create Tag

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Tag
    section Create Tag
        Go to Tags: 5: User
        Click "New": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Tag journey.

Edit Tag

The user may also edit a Tag, eg. changing the description and styles. However, since the category and name form the composite primary key, we will not allow editing these fields.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Tag
    section Edit Tag
        Go to Tags: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Tag journey.

Delete Tag

In the event that the user accidentally creates a Tag, she may delete it. Again, if the Tag is already in use, then we will not allow deletion of it.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Tag
    section Delete Tag
        Go to Tags: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Tag journey.

Manage Contacts

Create Contact

Now let’s say the user has found a new client, and would like to setup invoicing for this client. Before she can do so, she would need to create a new Contact entry first.

For a start, the user may only need to input important information such as name, address, and contact details. The other fields are not needed for generating Invoices.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Contact
    section Create Contact
        Go to Contacts: 5: User
        Click "New": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Contact journey.

Edit Contact

We also allow the user to edit an existing Contact, eg. when the client changes address or contact details.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Contact
    section Edit Contact
        Go to Contacts: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Contact journey.

Delete Contact

Normally, the user would not need to delete a Contact, especially if there’re already data associated with the Contact. So if the user attempts to delete an entry that already has associated data, the system will not allow the action.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Contact
    section Delete Contact
        Go to Contacts: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Contact journey.

Manage Currencies

The user may want to configure Currencies for the purpose of tax computation if the client uses a different Currency.

Create Currency

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Currency
    section Create Currency
        Go to Currencies: 5: User
        Click "New": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Currency journey.

Edit Currency

If the user has made a mistake in configuring the Currency, she may edit it accordingly. Or if the Currency exchange rate is no longer effective, then she can update the effective end date.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Currency
    section Edit Currency
        Go to Currencies: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Currency journey.

Delete Currency

If the user has accidentally created a Currency, she may delete it, but only if it is not yet used by any configuration.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Currency
    section Delete Currency
        Go to Currencies: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Currency journey.

Manage Billing and Invoicing

Configure Billing and Invoicing

After creating a new Contact for the client, the user then proceeds to configure invoicing for this client. To make the user experience more seamless, we allow the user to configure invoicing for the Contact in the same Contacts page by just clicking on a “Configure Invoice” button, so there’s no need for her to navigate to a different page.

The page will render each config in a separate section, and the user can independently configure for each as needed.

To configure an Invoice, the user also needs to select the Invoice Template to use. For convenience, we let the user select from a list of built-in templates. If she needs to create new templates, then she can do so separately first, and come back to configuring for this particular Contact. For the Sequence, the user will need to create one separately first before being able to use it in the Invoice.

Along with the Invoice, the user may also configure the Income Receipt that will be generated for the Contact when payment is made. Similarly, there will be built-in templates available for use to generate the Receipt, but she will need to first create the Sequence separately before being able to use it in the Receipt.

Lastly, the user may also want to configure the billing structure for this Contact if she wants the system to automatically generate Invoice Lines instead of having to manually input them.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Configure Invoice
    section Initiate Configuration
        Go to Contacts: 5: User
        Click "Configure Invoice": 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Configure Invoice (cont'd)
    section Create Invoice Config
        Go to Invoice Configs: 5: User
        Click "New Invoice Config": 5: User
        Input Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Configure Invoice (cont'd)
    section Create Receipt Config
        Go to Receipt Configs: 5: User
        Click "New Receipt Config": 5: User
        Input Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Configure Invoice (cont'd)
    section Create Billing Config (Multiple Entries)
        Go to Billing Configs: 5: User
        Click "Add Billing Config": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Configure Billing and Invoicing journey.

Edit Billing and Invoicing

Updating existing Invoice Configs, Receipt Configs and Billing Configs is allowed, but we will restrict the fields that can be edited. For example, we will not allow editing the invoice cycle or due date cycle configs, because then the previously generated Invoice associated with this particular instance will not make sense anymore.

If there is a major change in the invoice cycle, then the user should create a new Invoice Config and use it to generate subsequent Invoices.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Invoice Config
    section Initiate Configuration
        Go to Contacts: 5: User
        Click "Configure Invoice": 5: User
    section Edit Invoice Config
        Go to Invoice Configs: 5: User
        Click "Edit Invoice Config": 5: User
        Change Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Receipt Config
    section Initiate Configuration
        Go to Contacts: 5: User
        Click "Configure Invoice": 5: User
    section Edit Receipt Config
        Go to Receipt Configs: 5: User
        Click "Edit Receipt Config": 5: User
        Change Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Billing Config
    section Initiate Configuration
        Go to Contacts: 5: User
        Click "Configure Invoice": 5: User
    section Edit Billing Config
        Go to Billing Configs: 5: User
        Click "Edit Billing Config": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Billing and Invoicing journey.

Delete Billing and Invoicing

It is unlikely that the user would need to delete an existing Invoice Config, Receipt Config or Billing Config, unless it is created accidentally and she wants to remove it. The user will only be able to delete entries that have no associated data.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Invoice Config
    section Initiate Configuration
        Go to Contacts: 5: User
        Click "Configure Invoice": 5: User
    section Delete Invoice Config
        Go to Invoice Configs: 5: User
        Click "Delete Invoice Config": 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Receipt Config
    section Initiate Configuration
        Go to Contacts: 5: User
        Click "Configure Invoice": 5: User
    section Delete Receipt Config
        Go to Receipt Configs: 5: User
        Click "Delete Receipt Config": 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Billing Config
    section Initiate Configuration
        Go to Contacts: 5: User
        Click "Configure Invoice": 5: User
    section Delete Billing Config
        Go to Billing Configs: 5: User
        Click "Delete Billing Config": 5: User
        Confirm: 5: User

Delete Billing and Invoicing journey.

Manage Invoice and Receipt Templates

Let’s say the user doesn’t want to use the built-in templates and wants to create custom ones for her clients, then she will go to the Templates page to configure them.

For convenience, we will list all templates in a single page, and use a type field to differentiate between Invoice Template and Receipt Template, since both types have the same fields otherwise.

Create Template

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Template
    section Create Template
        Go to Templates: 5: User
        Click "New": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Template journey.

Edit Template

The user may also want to edit an existing template, so we will allow for that. The user can go to the Templates page and click on the “Edit” button for the template she wishes to edit.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Template
    section Edit Template
        Go to Templates: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Template journey.

Delete Template

The user may also want to delete an existing template, but we will only allow deletion of a template that is not used by any Invoice Config or Receipt Config. The user can go to the Templates page and click on the “Delete” button for the template she wishes to delete.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Template
    section Delete Template
        Go to Templates: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Template journey.

Manage Sequences

Create Sequence

The user may also want to customise the Sequence for each Contact, and can do so in the Sequences page.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Sequence
    section Create Sequence
        Go to Sequences: 5: User
        Click "New": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Sequence journey.

Edit Sequence

Once a Sequence has been used in an Invoice or Receipt, it should not be changed anymore. Instead, the user will need to create a new sequence with a different starting number and change the other fields accordingly. So there will be no “Edit” action for Sequences.

Delete Sequence

A user may delete a Sequence that has not been used in any Invoice or Receipt. This can be done in the Sequences page.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Sequence
    section Delete Sequence
        Go to Sequences: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Sequence journey.

Manage Invoices

Generate Basic Invoice Based on Work Logs

Now that the user has configured how to generate Invoices and Receipts, we will have a function for the user to filter the Work Logs to generate a new Invoice. This will be done at the Work Logs page. Typically, the user only needs to include Work Logs for the Invoice, and input the invoice date and due date accordingly.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Generate Invoice
    section Initiate Generation
        Go to Work Logs: 5: User
        Click "Generate Invoice": 5: User
    section Configure Invoice
        Select Invoice Config: 5: User
        Input Work Log Filters: 5: User
        Input Invoice Fields: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Generate Invoice
    section Preview and Generate
        Preview Invoice: 5: User
        Generate: 5: User

Basic Generate Invoice journey.

Generate Invoice with Additional Invoice Lines

In the event that the Work Logs are not the only billable items, the user may add additional Invoice Lines for the additional billing items.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Generate Invoice with Invoice Lines
    section Initiate Generation
        Go to Work Logs: 5: User
        Click "Generate Invoice": 5: User
    section Configure Invoice
        Select Invoice Config: 5: User
        Input Work Log Filters: 5: User
        Input Invoice Fields: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Generate Invoice with Invoice Lines (cont'd)
    section Add Invoice Line (Multiple Entries)
        Click "Add Line": 5: User
        Input Fields: 5: User
        Confirm: 5: User
    section Preview and Generate
        Preview Invoice: 5: User
        Generate: 5: User

Generate Invoice with Additional Invoice Lines journey.

Edit Invoice

If the user is not satisfied with the generated Invoice, she can edit the fields and re-generate the document. This will be done in a separate Invoices page. Note that since the existing Invoice has already filtered the Work Logs and used them for generating the Invoice Lines, it is not feasible to allow editing the data source, so we will only allow editing static fields like invoice date.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Invoice
    section Edit Invoice
        Go to Invoices: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
    section Preview and Generate
        Preview Invoice: 5: User
        Generate: 5: User

Edit Invoice journey.

Void Invoice

In the unfortunate event that the user has generated an Invoice incorrectly, instead of deleting it entirely, we will allow her to void it instead. This is for accountability reason, because there’s a Sequence in the Invoice, any missing number should be accounted for.

Once the user voids an Invoice, it can no longer be edited.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Void Invoice
    section Initiate Void
        Go to Invoices: 5: User
        Click "Void": 5: User
        Confirm: 5: User

Void Invoice journey.

Wrap Up For Now

We’ve covered quite a bit in this exercise, let’s take a break for now and we will continue with the remaining user journeys in the next one.