```mermaid
flowchart TB
	CREATE_BILL[Create bill]-->LOCKED{Is locked?}
	LOCKED-->|TRUE|CREATE_APPROVAL_TASK[Accounting approval task]
	LOCKED-->|FALSE|PRINTABLE
	CREATE_APPROVAL_TASK-->ACCOUNTING_APPROVAL{Is ok?}
	ACCOUNTING_APPROVAL-->|FALSE|ACCOUNTING_NOT_APPROVED[Inform OP]
	ACCOUNTING_APPROVAL-->|TRUE|PRINTABLE
	CREATE_BILL-->CREATE_CHECK_TASK[Invoice validation task]
	CREATE_CHECK_TASK-->BILL_CHECK{Is correct?}
	BILL_CHECK-->|TRUE|CHECK_PRICES{High discounts?}
	CHECK_PRICES-->|FALSE|PRINTABLE
	BILL_CHECK-->|FALSE|INFO_WRITER[Inform OP]
	CHECK_PRICES-->|TRUE|CREATE_SALES_APPROVAL_TASK[Sales approval task]
	CREATE_SALES_APPROVAL_TASK-->SALES_APPROVAL{Is ok?}
	SALES_APPROVAL-->|TRUE|CHECK_PRICES_ESCALATED{Over limit?}
	SALES_APPROVAL-->|FALSE|SALES_NOT_APPROVED[Inform OP]
	CHECK_PRICES_ESCALATED-->|TRUE|CREATE_CFO_PRICE_APPROVAL[CFO approval task]
	CHECK_PRICES_ESCALATED-->|FALSE|PRINTABLE
	CREATE_CFO_PRICE_APPROVAL-->CFO_APPROVAL{Is ok?}
	CFO_APPROVAL-->|TRUE|PRINTABLE[Mark printable]
	CFO_APPROVAL-->|FALSE|CFO_NOT_APPROVED[Inform OP + Sales]
	
	CLICK_PRINT[Click print]-->IS_APPROVED{Is approved}
	IS_APPROVED-->|TRUE|PRINT[Print]
	IS_APPROVED-->|FALSE|PRINT_ERROR[Show print error]

	UPDATE_BILL[Update bill]-->CHECK_THREASHOLDS{Change above threshold}
	CHECK_THREASHOLDS-->|TRUE|OPEN_TASKS[Update & re-open tasks]
```

