/*****************************************************************************************************|
CMB DEFAULTSELECTEDITEMS *****************************************************************************|
• REVERSE THE "CONCAT" PATCH ("ONCHANGE") WITH "SPLIT" TO CONVERT STRING TO TABLE.
• THIS VALUE WILL BE ASSIGNED DURING "ONSTART" AND "ONCHANGE".
/*****************************************************************************************************|
APP ONSTART ******************************************************************************************|
• VARIABLES REQUIRED TO MITIGATE FOREVER ONCHANGE/DEFAULT VALUES IN CIRCLULAR REF LOOP.
• ON STARTUP, THE PATCH PROCESS IS NOT "RUNNING" (0) NOR ALLOWED TO RUN.
• ON STARTUP, THE APP IS NOT ALLOWED TO "PATCH" (0) VIA "ONCHANGE" FUNCTION.
• ON STARTUP, THE APP IS ON "STARTUP" (1) ALLOW "DISPLAYMODE" TO BE EDITED.
/*****************************************************************************************************|
CMB DISPLAYMODE **************************************************************************************|
• IF "RUNNING" (1) ANNNND NOT "STARTUP" (0) THEN "DISPLAYMODE" = DISABLED
• ELSE "DISPLAYMODE" = EDIT
• THEREFORE, IF PATCH IS "RUNNING", DO NOT ALLOW COMBOBOX INTERACTIONS, BUT
• DEFAULT THE "DISPLAYMODE" = EDIT ON "STARTUP" OF THE APPLICATION.
/*****************************************************************************************************|
CMB ONSELECT *****************************************************************************************|
• IF USER SELECTS THIS FIELD, THEN THIS IS EVIDENCE THAT "STARTUP" IS COMPLETE. SET TO ZERO (0).
• STARTUP VALUE WILL NOT BE SET TO ONE AGAIN UNTIL APPLICATION IS RESTARTED.
• WITH THE "ONSELECT" AND "DISPLAYMODE" LOGIC, THIS WILL ENSURE USERS CANNOT EDIT MULTIPLE ROWS SIMULTANEOUSLY.
• IF USER SELECTS THIS FIELD, THEN ALLOW "ONCHANGE" PATCH, THUS SETTING "PATCH" TO ONE (1).
/*****************************************************************************************************|
CMB ONCHANGE *****************************************************************************************|
• IF ALLOWED TO "PATCH" (1) THEN SET "RUNNING" TO ONE (1).
• "RUNNING" SET TO ONE (1) WILL PREVENT EDITING DURING PATCH UPDATE. "DISPLAYMODE" = DISABLE.
• IF ALLOWED TO "PATCH" (1) THEN EXECUTE "PATCH" AND WRITE TO DATAVERSE TABLE.
• AFTER PATCH FUNCTION IS COMPLETE, THEN RESET "PATCH" AND "RUNNING" TO ZERO (0) TO PREVENT FOREVER CIRCULAR REF LOOP.
• THIS WILL PREVENT THE "DEFAULTSELECTEDITEMS" FROM BEING REASSIGNED TO THE ENTIRE COLUMN (FOREVER CIRCULAR LOOP).
/*****************************************************************************************************|
******************************************************************************************************/
Notify(ThisItem.KEY_CST); // ~~~~~~~~~~~~~~~~~ TO TROUBLESHOOT CURRENT POINTER! YOU CAN SEE THE LOOP TRYING TO REENTER.
If(varPatch = 1, // ~~~~~~~~~~~~~~~ IS THE PROCESS PERMITTED TO PATCH THE ROW? ~~~~~~~~~~~~~ || YES, LET'S PROCESS THE PATCH.
Set(varRunning, 1); // ~~~~~~~~~~ IS THE PROCESS RUNNING? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ || YES, THE PROCESS IS RUNNING. THEREFORE, LOCK THE APP (DISPLAY MODE).
Patch(_iat_config_customers, LookUp(_iat_config_customers, KEY_CST = ThisItem.KEY_CST), {manager_name: Concat(cst_table_cmb_manager_classic.SelectedItems, ThisRecord.DisplayName, ",")});
); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ||
Set(varPatch, 0); // ~~~~~~~~~~~~~~ NO MORE PROCESSING IS PERMITTED. ~~~~~~~~~~~~~~~~~~~~~~~ ||
Set(varRunning, 0); // ~~~~~~~~~~~~~~ THE PROCESS HAS FINISHED RUNNING. ~~~~~~~~~~~~~~~~~~~~~~ ||