export async function main(data) { let atd = data.atd_name; let catalog = data.catalog_name; let accountUUID: string = data.account_uuid; let transactionUUID: string; let itemUUID: string = data.item_uuid; let filter: string = data.filter; let viewType: string = data.view_type; let smartFilter: string = data.smart_filter; if (!transactionUUID) { if (!accountUUID) { // get the first account const accounts = await pepperi.api.accounts.search({ fields: ['UUID'], filter: { FieldType: 'String', ApiName: "ParentExternalID", Operation: "IsEqual", Values: [""], } }) if (accounts.objects.length > 0) { accountUUID = accounts.objects[0].UUID; } else { console.log('could not find any accounts'); await client.alert('No Accounts', 'Could not find any accounts'); } } accountUUID = accountUUID.replace(/-/g, '') console.log(accountUUID) if (accountUUID) { // get transaction on this account that is in status list const statuses = data.status_list.split(','); console.log(statuses) const transactions_filter = { Operation: 'AND', RightNode: { Operation: 'AND', LeftNode: { // FieldType: 'Guid', ApiName: 'AccountUUID', Operation: 'IsEqual', Values: [accountUUID] }, RightNode: { // FieldType: 'Double', ApiName: 'Status', Operation: 'IsEqual', Values: statuses } }, LeftNode: { Operation: 'AND', LeftNode: { Operation: 'IsEqual', // FieldType: 'String', ApiName: 'Type', Values: [atd] }, RightNode: { // FieldType: 'String', ApiName: 'CatalogExternalID', Operation: 'IsEqual', Values: [catalog] } } } console.log('searching for transaction with status ' + statuses.join(' or ')) const transactions = await pepperi.api.transactions.search({ fields: ['UUID', 'Status', 'AccountUUID', 'CatalogExternalID', 'ActionDateTime'], filter: transactions_filter, sorting: [{ Field: 'ActionDateTime', Ascending: false }] }); if (transactions.objects.length > 1) { console.log(`found ${transactions.objects.length} transactions`) transactionUUID = transactions.objects[0].UUID } // create a new one if (!transactionUUID) { console.log('could not find any existing transactions, creating a new one') const res = await pepperi.app.transactions.add({ type: { Name: atd }, references: { account: { UUID: accountUUID }, catalog: { Name: catalog } } }); if (res.status === 'added') { transactionUUID = res.id; } } } if (transactionUUID) { navigate(transactionUUID, itemUUID, filter, viewType, smartFilter); } } else { navigate(transactionUUID, itemUUID, filter, viewType, smartFilter); } return '' } async function navigate(transaction_uuid, item_uuid, filter, view_type, smart_filter) { var url_params = '?'; if (filter) { // filter = 'CurrentTab=' + filter; url_params += 'CurrentTab=' + filter; console.log(url_params); } if (smart_filter) { // smart_filter = 'SmartSearch=' + smart_filter; url_params += '&SmartSearch=' + smart_filter; console.log(url_params); } if (view_type) { // view_type = 'ViewType=' + view_type; url_params += '&ViewType=' + view_type; console.log(url_params); } console.log(url_params); if(item_uuid) { console.log(item_uuid); await client.navigateTo({ url: '/transactions/item_details/' + transaction_uuid + '/' + item_uuid + url_params }) } else { await client.navigateTo({ url: '/transactions/scope_items/' + transaction_uuid + url_params }) } }