/
Work Flow
Work Flow
OBS ERP allows you to create custom processes in the context of an ERP module. For example, in module "Tasks" you can have the following process:
The steps of each process can be changed and automation functions can be applied. For example, you can force OBS ERP to send out email message on completion of a step. Some of the automation functions include:
Automation functions:
AddQtyToAssetWareHouse
No description available.
AddQtyToWareHouse
This function is used to add quantities in stock. It can be triggered only in module warehouse_slips.
ApplyDigitalSignature
This function will require the user to input login password in order to complete the step.
ApproveRelatedExpenses
This function is used to approve all expense rows.
BlockQTY
Block quantities in stock
BlockQtyInWarehouse
This function blocks quantities in the warehouse.
CallAPIEndpoint
Example:
/api/~~col_name~~/~~col_name1~~
ChatMessage
Sends a chat message through the firebase platform. The message is sent to mobile devices running Android or iOS
Parameters:
message|recipient_1|recipient_2|recipeint_N
Where:
message - the text message that will be sent
recipient_N - Can be one of the following:
- column name - a column that points to the users module, e.g. user_id (integer references users)
- management_chain - two levels above the employee
- first_level_management_chain - one level above the employee
- staff_json - looks for a column called 'staff_json'. The column must be type JSON and must contain the following json structure [ID, ...], e.g. [1,2,3], where 1, 2, 3 are IDs of employees in module "Staff".
- __PRIV__PrivilegeName - e.g. __PRIV__Accouting. This will send email to employees in this privilege group
- a list of user ids
CheckExpense
Check If related expenses are paid.
CheckForAttachedEmail
This function checks if there at least one related email to a record.
Requirements:
The module should be configured with "Mailings" set to ON.
CheckForAttachment
It checks if the record has at least one file attached
Parameters
file1|file2|....|fileN
CheckIfAllTasksAreCompleted
Checks if all assigned tasks are in status completed or rejected
CheckIfConditionIsMet
// Condition format: field_name[module.field_name <>= value]
CheckIfExpensesAreApproved
Can be used only in module "Quotations"
It checks if all expenses related to a quotation have been approved
CheckIfFieldIsNotEmpty
This function checks if the field specified as function parameter is empty. If it is, the function returns an error.
Parameters:
1. Field Name
Example:
feedback
Update: now you can check more than one field. List the field names with pipe delimiter.
Example:
contact_id|email
CheckIfRelatedAreCompleted
Checks if the related records contain boolean columns and returns true if all of them are checked.
CheckIfWarehouseSlipExists
This function checks if a warehouse slip related to the selected document exists
Function params: The status id of the warehouse slip.
For example, if you need the warehouse slip to be in status articles_accepted, select 4
CheckIncome
This function can be used to check if all related invoices to a record have been paid
CheckTaskCheckList
This function checks if all checklist items have been completed. If they are not, the task cannot be completed.
CheckTaskDependencies
Description:
Checks if the dependent tasks are in the required status. Implements the following dependencies:
- Start-To-Start
- Start-To-Finish
- Finish-To-Start
- Finish-To-Finish
Requirements:
- Module "task_dependecies" must be populated with information:
- name of the dependency - one of the following Start-To-Start, Start-To-Finish, Finish-To-Start, Start-To-Start
- code of the dependency - SS, SF, FS, FF
- predecessor statuses - comma-separated list of integers. The integers are the ids of the columns in module "Task Statuses"
- successor statuses - comma-separated list of integers. The integers are the ids of the columns in module "Task Statuses"
- Fields in module tasks:
- predecessors - comma-separated list of WBS elements. It could contain the code of dependency, e.g. 1.1[FF],1,2
- WBS element
CompleteSurvey
Used only in module "Tenders" !
This functions starts a negotiation with the selected winner of a tender. The administrator of the tender needs to define final prices for each question before triggering this function. In addition, winner should be selected.
The email template sent to the winner contains a confirmation link allowing the winner to give their formal consent that the final price is accepted and they can start working on the subject of the tender.
System email is used to send the email template.
ContactValidation
This function checks if the fields listed as parameters are populated.
Parameters:
Example - record_id->contract_clients->client_id:field1|field2|field3|fieldN
ConvertDocument
This function transfers a document from one module to another based on column mapping defined in module_conversion_mapping.
You need to set up manually the mapping in order the function to work
Parameters:
NameOfMapping
CopyRecord
This function copies the current record. The new record is set with status_id = 1
CreateBulkPurchaseOrderFromOrder
This function creates purchase orders in module "Expenses". The created purchase order is for materials that are not in stock. The software calculates the ordered quantity based on the settings in module "Materials" using the following formula.
Ordered Quantitiy = Min_quantity_in_stock + Min_order_quantity - Quantitiy in stock
Min_quantity_in_stock and Min_order_quantity are parameters in module "Materials"
CreateEmploymentContractFromStaff
This function generates an employment contract from an employee record.
It works only in module "Staff"
Requirement: A template named "employment_contracts" residing in module "Templates"
CreateExpenseFromContract
Creates an expense document based on a contract ( useful for banks )
Params:
key:value|key1:value1|...
CreateInvoiceFromOrder
This function creates an invoice from an order
CreateInvoiceFromWorksheet
500
CreateInvoicesFromContractPayments
This function works only for module "Contracts". It generated invoices based on payment plan. It takes all payments one by one and produces documents in module "Invoices".
CreatePDFSnapshot
Creates PDF Snapshot of the record
CreateProject
It creates a project based on a record.
Requirements:
- If source module is quotations than all related expenses should be approved
- The source module should contain the following fields:
- project_id
- deadline
- issuer
- contact_id
- company_id
These fields are mandatory to create a project record.
CreateProjectFromQuotationWithItems
This function creates a project based on a quotation including the materials and products
CreateQuoteFromBudget
Creates a quotation base on budget input data
CreateQuoteFromProject
This function creates a quotation without quotation items from project. It updates the quotation_id field in the project
CreateStaffFromPotentialCandidate
Creates an employee from a potential candidate.
This function can be triggered only through module "Potential candidates"
CreateSubRecords
..ajksndasd
CreateWhSlipsFromTransfer
Creates two warehouse slips from a warehouse transfer document
InformRecipients
This function can be used only in modules "Tenders" and "Surveys"
It selects all participants and sends an email containing the tender or survey email template.
System email is used to send the email. The email template is defined in "survey_email"
TBD: survey_email to be moved to email_templates module
ManufactureProduct
This functions should be triggered through manufacturing requests.
Params: SourceWarehouseID -> DestinationWarehouseID
Example: 1 -> 2
Module: manufaturing_requests
ManufactureProductFIFO
Similar to ManufactureProduct. The materials in the recipe are obtained on FIFO basis.
ManufactureProductLIFO
Similar to ManufactureProduct. The materials in the recipe are obtained on LIFO basis.
ManufactureProductsAndTransferMaterials
This function can be used only in module activity_report. It is used to check if the selected material quantities are in stock. If product is selected, its materials are checked recursively as well. If all materials are in stock, the system generates manfucturing requests for the selected products and warehouse transfer documents for the rest of the materials
MarkPaid
Updates the record setting paid to true
OrderReversal
To be documented
PickMaterialFromGroup
This function will check if there is material groups in the recipe. If that is the case, the system will return an error and request the user to pick specific material belonging to the selected group.
RawSQL
This runs an SQL function and checks for exceptions. If no exceptions are found, the function is successful. The function must accept one integer parameter - the id of the record
Parameters: SQL function name.
RawSQLWithUser
This runs an SQL function and checks for exceptions. If no exceptions are found, the function is successful. The function must have two parameters
- record_id integer - the id of the record
- user_id integer - the user changing the status
Parameters: SQL function name.
ReleaseQTY
Releases blocked quantities
RemoveQtyFromAssetWarehouse
No description available.
RemoveQtyFromWarehouse
This function removes qtys from warehouse
RemoveRelatedRecord
Removes a related record. The parameter should be a field name which points to the record that should be removed.
RequestApproval
This function implements an approval process. It submits an email request to the management chain of the requestor. The managers have the option to approve or reject the request by clicking buttons embedded in the email notification request. As soon as the approval or rejection is made, the status of the document is changed to "approved" or "rejected" depending on the management decision.
Requirements:
- The module should contain the following fields (they can be created automatically in the "Constructor" by turning on the "Approvals" option):
- approved = true/false
- rejected = true/false
- approved_by = integer (references module staff)
- The module should contain a field called status_id referencing a module called module_statuses
- module_statuses should contain statuses named "approved" and "rejected" (approved_, approved__, rejected_, rejected__ are also allowed). Both statuses must have "Manual Step" set to "False"
- The requestor must be registered in modules "Staff" and "Users"
Function parameters:
- One of the following options are possible, but none of them is mandatory:
- FieldName - the field must reference module "Staff". If such a parameter is defined, the system will send the request to the selected person as well as the managers. This does not mean that this person is authorized to approve the request
- EmailTemplate - a name of an email template residing in module email_templates
- EmailTemplate|FieldName|EmailTemplate...... - a combination of the above
Email notifications:
- Approval request email notification template
- by default, the system uses an email template called "request_for_approval". This email template contains information about the approval request and it contains a link to the approval interface.
- Another template can be used by specifying a function parameter.
- The Requestor's personal email is used to send the email notification.
- The request is sent to the following recipients: TO: manager_email, replacement_id_email (if applicable); CC: employee_email, manager_of_manager_email. Additional emails can be added if function parameters are defined
- Resolution email notification
- by default, the system generates an email template containing the manager's decision and additional information
- a custom email notification template can be defined in every module using the following convention:
- approval email template name: module_approve
- rejection email template name: module_reject
- Upon approval or rejection, the system uses the system email to inform the requestor about the resolution
Approvers:
- The approvers must be part of the management chain above the requestor.
- If you set "first_level_management" as a parameter, the system will notify first line managers only
Delegations:
- The approvers must be part of the management chain above the requestor.
RequestApprovalWithSystemEmail
This function implements an approval process. It submits an email request to the management chain of the requestor. The managers have the option to approve or reject the request by clicking buttons embedded in the email notification request. As soon as the approval or rejection is made, the status of the document is changed to "approved" or "rejected" depending on the management decision.
Requirements:
- The module should contain the following fields (they can be created automatically in the "Constructor" by turning on the "Approvals" option):
- approved = true/false
- rejected = true/false
- approved_by = integer (references module staff)
- The module should contain a field called status_id referencing a module called module_statuses
- module_statuses should contain statuses named "approved" and "rejected" (approved_, approved__, rejected_, rejected__ are also allowed). Both statuses must have "Manual Step" set to "False"
- The requestor must be registered in modules "Staff" and "Users"
Function parameters:
- One of the following options are possible, but none of them is mandatory:
- FieldName - the field must reference module "Staff". If such a parameter is defined, the system will send the request to the selected person as well as the managers. This does not mean that this person is authorized to approve the request
- EmailTemplate - a name of an email template residing in module email_templates
- Field EmailTemplate|FieldName|EmailTemplate...... - a combination of the above
- __approvers__|EmailTemplate - requests approval from all employees listed in the json field "approvers". The following columns have to be present in the module - approvers json not null, approvers_names json not null.
Email notifications:
- Approval request email notification template
- by default, the system uses an email template called "request_for_approval". This email template contains information about the approval request and it contains a link to the approval interface.
- Another template can be used by specifying a function parameter.
- The System email is used to send the email notification. Configured in module Admin -> System Email
- The request is sent to the following recipients: TO: manager_email, replacement_id_email (if applicable); CC: employee_email, manager_of_manager_email. Additional emails can be added if function parameters are defined
- Resolution email notification
- by default, the system generates an email template containing the manager's decision and additional information
- a custom email notification template can be defined in every module using the following convention:
- approval email template name: module_approve
- rejection email template name: module_reject
- Upon approval or rejection, the system uses the system email to inform the requestor about the resolution
Approvers:
- The approvers must be part of the management chain above the requestor.
- If you set "first_level_management" as a parameter, the system will notify first line managers only
- If you set __approvers__ as a parameter, the approval will be requested from all employees listed in the json field "approvers". The following columns have to be present in the module - approvers json not null, approvers_names json not null.
Delegations:
- The approvers must be part of the management chain above the requestor.
RequestReview
This function sends a review request (email) to a reviewer.
The email template is defined in module: Email Templates - review_request
Function parameters:
template|email1|email2
RequestSignatureWithEvrtorust
This function creates a PDF snapshot and sends it to EvroTrust for signature. The PDF is sent to the selected employee (field "staff_id").
Requirements:
- Evrotrust API keys
- The target module must contain a character varying field called "name". It should contain the description of the document.
RollBackManufacturingRequest
- Searches all warehouse slips related to this manufacturing request.
- Deletes all products and materials and restores all quantities
SendEmail
Sends an email to selected target contacts, target groups, owner of the record and the assignee.
An email template name can be passed as a function parameter. This is done the following way:
SendEmail|template_name|recipient_1|recipient_2|recipeint_N
- template_name - the name of the template residing in the email_templates module
- recipient_N - Can be one of the following:
- column name - a column that points to the users module, e.g. user_id (integer references users)
- email address
- management_chain - two levels above the employee
- a column name holding the email address of the recipient
- first_level_management_chain - one level above the employee
- staff_json - looks for a column called 'staff_json'. The column must be type JSON and must contain the following json structure [ID, ...], e.g. [1,2,3], where 1, 2, 3 are IDs of employees in module "Staff" (fields first_manager_json, observers_json, budget_owners, second_manager_json also work).
- __PRIV__PrivilegeName - e.g. __PRIV__Accouting. This will send email to employees in this privilege group
SendEmailWithAttachment
Sends an email and attaches a pdf template to the email.
StartBulk
This function can only be used in modules "Tenders" and "Surveys"
It starts a tender or survey by selecting all participants and creating a record for each of them in the "Participants" table (survey_instances or tenders_instances). It copies all the data related to the record as well - questions etc.
It is mandatory to define participants before using this function
StartProject
This function changes the status of the related project to "started". The module should contain a filed named project_id and it should point to a project in order the function to work
TransferAssetQty
No description available.
TransferQty
Transfer quantities from one warehouse location to another. Works ony in warehouse_transfers
WarehouseTransfer
Used only in module Manufacturing requests. It transfers the manufactured product from one warehouse location to another. Useful for step Assembly. Accepts the following parameters:
SourceWarehouseID -> DestinationWarehouseID
Example:
1 -> 2