📁 Showcase
Automation

Automation

Backend

1. Variables

ensure var VarConditionUpdateAssetRemove kind: condition deploy: fixedOnDeploy
  value: "<root>
      <stmt>${f:Details.TransactionType} == ${d:TransactionType.keyDebit}</stmt>
    </root>" 
  sourceForm: EntityQuickBook

ensure var VarConditionUpdateAssetAdd kind: condition modules: ["Expense"] deploy: fixedOnDeploy
  value: "<root>
      <stmt>${f:Details.TransactionType} == ${d:TransactionType.keyCredit}</stmt>
    </root>" 
  sourceForm: EntityQuickBook

2. Automation

a. AutomateQuikBookSheet

ensure automation AutomateQuikBookSheet kind: spreadsheet
  modules: ["Expense"] 
  spreadsheet: QuikBooksSheet

b.BeforeInsert event

ensure event BeforeInsert fire: beforeInsert

c.CopyRowId step

ensure var VarMappingQuickBookCopyRowId kind: mapping 
  modules: ["Expense"] 
  deploy: fixedOnDeploy
  fromForm: EntityQuickBook 
  toForm: EntityQuickBook 
  fieldMappingMap: {
      'updateVariant': 'updateForced',
      'emptyVariant': 'ignoreEmptyField',
      'map': {
        '${f:SysRowId}': 'Details.QuickBookRowId'
      }
    }

ensure step CopyRowId kind: copyField 
  mappingVar: VarMappingQuickBookCopyRowId

d.GetSpreadsheetRows step

ensure var VarOutputMappingGetSpreadsheetRowId kind: mapping 
  deploy: fixedOnDeploy
  fromForm: EntityAsset 
  toForm: EntityQuickBook 
  fieldMappingMap: {
      'updateVariant': 'updateForced',
      'emptyVariant': 'ignoreEmptyField',
      'map': {
        '${f:SysRowId}': 'Details.AssetRowId'
      }
    }

ensure step GetSpreadsheetRows kind: getSpreadsheetRows 
  targetSpreadsheet: AssetSheet 
  targetToSourceMappingVar: VarOutputMappingGetSpreadsheetRowId

e.AfterInsert event

ensure event AfterInsert fire: afterInsert

f.UpdateAssetRemove step

ensure step UpdateAssetRemove kind: updateLogNumber 
  executionConditionVar: VarConditionUpdateAssetRemove 
  operation: subtract 
  value: "${f:Details.TotalAmount}" 
  rowField: Details.AssetRowId 
  targetSpreadsheet: AssetSheet 
  targetField: Details.NetAsset

g.UpdateAssetAdd step

ensure step UpdateAssetAdd kind: updateLogNumber 
  executionConditionVar: VarConditionUpdateAssetAdd 
  operation: add 
  value: "${f:Details.TotalAmount}" 
  rowField: Details.AssetRowId 
  targetSpreadsheet: AssetSheet 
  targetField: Details.NetAsset

h.BeforeUpdate event

ensure event BeforeUpdate fire: beforeUpdate

ensure pipelineVar PipelinePrevAmount form: FormPipelineAmount

i.CopyTotalAmount step

ensure var VarMappingQuickBookCopyTotalAmount kind: mapping 
  deploy: fixedOnDeploy
  fromForm: EntityQuickBook 
  toForm: FormPipelineAmount 
  fieldMappingMap: {
      'updateVariant': 'updateForced',
      'emptyVariant': 'ignoreEmptyField',
      'map': {
        '${f:Details.TotalAmount}': 'Details.CurrentAmount'
      }
    }

ensure step CopyTotalAmount kind: copyField 
  targetPipelineVar: PipelinePrevAmount 
  mappingVar: VarMappingQuickBookCopyTotalAmount

j.GetSpreadsheetRows step

ensure var VarTargetSpreadsheetGetSpreadsheetRows kind: condition
  modules: ["Expense"] 
  deploy: fixedOnDeploy
  value: "<root>
      <stmt>${in:Details.QuickBookRowId} == ${f:Details.QuickBookRowId}</stmt>
    </root>" 
  sourceForm: EntityQuickBook 
  inputForm: EntityQuickBook

ensure var VarOutputMappingGetSpreadsheetRows kind: mapping
  modules: ["Expense"] 
  deploy: fixedOnDeploy
  fromForm: EntityQuickBook 
  toForm: FormPipelineAmount 
  fieldMappingMap: {
      'updateVariant': 'updateForced',
      'emptyVariant': 'ignoreEmptyField',
      'map': {
        '${f:Details.TotalAmount}': 'Details.PrevAmount'
      }
    }

ensure step GetSpreadsheetRows kind: getSpreadsheetRows 
  targetSpreadsheet: QuikBooksSheet 
  targetSpreadsheetFilterVar: VarTargetSpreadsheetGetSpreadsheetRows 
  outputFormPipelineVar: PipelinePrevAmount 
  targetToSourceMappingVar: VarOutputMappingGetSpreadsheetRows

k.CalculateDebitAmountDiff step

ensure step CalculateDebitAmountDiff kind: calculateFormulas 
  formulaFormPipelineVar: PipelinePrevAmount

ensure newFormula AmountDiff 
  assignToField: Details.AmountDiff 
  formula: "${f:CurrentAmount} - ${f:PrevAmount}"

l.AfterUpdate event

ensure event AfterUpdate fire: afterUpdate

m.GetNetAssetSpreadsheetRows step

ensure var VarOutputMappingGetNetAssetRowId kind: mapping 
  deploy: fixedOnDeploy
  fromForm: EntityAsset 
  toForm: FormPipelineAmount 
  fieldMappingMap: {
      'updateVariant': 'updateForced',
      'emptyVariant': 'ignoreEmptyField',
      'map': {
        '${f:SysRowId}': 'Details.AssetRowId'
      }
    }
ensure step GetNetAssetSpreadsheetRows kind: getSpreadsheetRows 
  targetSpreadsheet: AssetSheet 
  targetToSourceMappingVar: VarOutputMappingGetNetAssetRowId

n.UpdateAssetRemove step

ensure step UpdateAssetRemove kind: updateLogNumber 
  executionConditionVar: VarConditionUpdateAssetRemove 
  operation: subtract 
  targetSpreadsheet: AssetSheet 
  targetField: Details.NetAsset

o.UpdateAssetAdd step

ensure step UpdateAssetAdd kind: updateLogNumber 
  executionConditionVar: VarConditionUpdateAssetAdd 
  operation: add 
  targetSpreadsheet: AssetSheet 
  targetField: Details.NetAsset

p.BeforeRemove event

ensure event BeforeRemove fire: beforeRemove

q.UpdateAssetRemove step

ensure step UpdateAssetDebit kind: updateLogNumber 
  executionConditionVar: VarConditionUpdateAssetRemove 
  operation: add 
  value: "${f:Details.TotalAmount}" 
  rowField: Details.AssetRowId 
  targetSpreadsheet: AssetSheet 
  targetField: Details.NetAsset

r.UpdateAssetCredit step

ensure step UpdateAssetCredit kind: updateLogNumber 
  executionConditionVar: VarConditionUpdateAssetAdd 
  operation: subtract 
  value: "${f:Details.TotalAmount}" 
  rowField: Details.AssetRowId 
  targetSpreadsheet: AssetSheet 
  targetField: Details.NetAsset