The PO Create process relies on 2 screens...
- The first screen is where the user enters the Vendor# and the Warehouse the product is to ship to. Once the Vendor and Warehouse are entered the user navigates to the next screen in the workflow via a NEXT button.
- The second screen is where the item# and quantity are entered. The user remains on this screen and enters items and quantities unlil they have completed the item entry process for the current vendor, (no more items for this Vendor# on the datasheet) at which time they create the PO (PO CREATE Button).
Once the PO has been created, the User returns to the first screen (Create Another PO Button) and start this process all over again, returning to the first screen and entering the next Vendor# and Warehouse.
With one loop, wouldn't this force the application to return to the first screen after each item and quantity is entered? If so this will not work. The application does not behave this way. This is why I am thinking a second loop is required where if CurrentVendor = LastVendor, the second loop repeats until CurrentVendor < > LastVendor, then loop2 ends, the PO is created, and loop1 iterates to the next Vendor# and Warehouse.
The sedcond part of my question is regardless of one or two loops, how do I go about setting the values of CurrentVendor and LastVendor? I'm familiar with the Set Variable Value statement in the Keyword test, but not sure what the syntax for those variables should look like.
Thank you again for your help!
DC.
There's no reason a single pass through the loop won't work. Don't close the second screen until the Vendor # changes. Then open the first / second screen again and repeat.You could even leave the dept_name / vendor number blank and use this != null logic instead of tracking whether Vendor # changed. We store the one-to-many relationship as comma separated values to reduce the redundant data in the spreadsheet. This works best for a single value (i.e. item serial s1,s2,s3). There are places where multiple values are stored and use a second delinator i.e. (serial, quantity;serial, quantity). If your not a technical person the nested loops will be confusing.
Variables don't have a sytax - they are of a specific type (i.e. string, integer etc). Unless calculations are performed strings are fine - even if the value is a number.
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"228","kudosSumWeight":0,"repliesCount":4,"postTime":"2016-03-16T12:44:49.257-07:00","lastPublishTime":"2016-03-16T12:56:00.630-07:00","metrics":{"__typename":"MessageMetrics","views":2557},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:TestComplete_forum/community:nwkab66374board:testcomplete-questions/message:115880/message:115952","attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"readOnly":false,"editFrozen":false,"body@stringLength":"2938","rawBody":"wrote:
The PO Create process relies on 2 screens...
- The first screen is where the user enters the Vendor# and the Warehouse the product is to ship to. Once the Vendor and Warehouse are entered the user navigates to the next screen in the workflow via a NEXT button.
- The second screen is where the item# and quantity are entered. The user remains on this screen and enters items and quantities unlil they have completed the item entry process for the current vendor, (no more items for this Vendor# on the datasheet) at which time they create the PO (PO CREATE Button).
Once the PO has been created, the User returns to the first screen (Create Another PO Button) and start this process all over again, returning to the first screen and entering the next Vendor# and Warehouse.
With one loop, wouldn't this force the application to return to the first screen after each item and quantity is entered? If so this will not work. The application does not behave this way. This is why I am thinking a second loop is required where if CurrentVendor = LastVendor, the second loop repeats until CurrentVendor < > LastVendor, then loop2 ends, the PO is created, and loop1 iterates to the next Vendor# and Warehouse.
The sedcond part of my question is regardless of one or two loops, how do I go about setting the values of CurrentVendor and LastVendor? I'm familiar with the Set Variable Value statement in the Keyword test, but not sure what the syntax for those variables should look like.
Thank you again for your help!
DC.
There's no reason a single pass through the loop won't work. Don't close the second screen until the Vendor # changes. Then open the first / second screen again and repeat.You could even leave the dept_name / vendor number blank and use this != null logic instead of tracking whether Vendor # changed. We store the one-to-many relationship as comma separated values to reduce the redundant data in the spreadsheet. This works best for a single value (i.e. item serial s1,s2,s3). There are places where multiple values are stored and use a second delinator i.e. (serial, quantity;serial, quantity). If your not a technical person the nested loops will be confusing.
Variables don't have a sytax - they are of a specific type (i.e. string, integer etc). Unless calculations are performed strings are fine - even if the value is a number.
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":2,"currentRevision":{"__ref":"Revision:revision:115952_4"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}},"customFields":[]},"QueryVariables:MessageSolutions":{"__typename":"QueryVariables","id":"MessageSolutions","value":{"first":10,"constraints":{"topicId":{"eq":"message:115880"},"solution":{"eq":true}},"sorts":{"postTime":{"direction":"ASC"}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":false,"useBody":true,"useKudosCount":false,"useTimeToRead":false,"useMedia":true,"useRepliesCount":false,"useSearchSnippet":false,"useAcceptedSolutionButton":true,"useSolvedBadge":false,"useAttachments":true,"useTags":false,"useUserHoverCard":false,"useNodeHoverCard":false,"usePreviewSubjectModal":false,"useMessageStatus":false}},"CachedAsset:text:en_US-components/messages/EscalatedMessageBanner-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/EscalatedMessageBanner-1741125846000","value":{"escalationMessage":"Escalated to Salesforce by {username} on {date}","viewDetails":"View Details","modalTitle":"Case Details","escalatedBy":"Escalated by: ","escalatedOn":"Escalated on: ","caseNumber":"Case Number: ","status":"Status: ","lastUpdateDate":"Last Update: ","automaticEscalation":"automatic escalation","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1741125846000","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserRank-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserRank-1741125846000","value":{"rankName":"{rankName}","userRank":"Author rank {rankName}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1741125846000","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSolvedBadge-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSolvedBadge-1741125846000","value":{"solved":"Solved"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1741125846000","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1741125846000","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCustomFields-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCustomFields-1741125846000","value":{"CustomField.default.label":"Value of {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyButton-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyButton-1741125846000","value":{"repliesCount":"{count}","title":"Reply","title@board:BLOG@message:root":"Comment","title@board:TKB@message:root":"Comment","title@board:IDEA@message:root":"Comment","title@board:OCCASION@message:root":"Comment"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSolutionList-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSolutionList-1741125846000","value":{"emptyDescription":"No has been message solutions yet"},"localOverride":false},"CachedAsset:text:en_US-components/messages/AcceptedSolutionButton-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/AcceptedSolutionButton-1741125846000","value":{"accept":"Mark as Solution","accepted":"Marked as Solution","errorHeader":"Error!","errorAdd":"There was an error marking as solution.","errorRemove":"There was an error unmarking as solution.","solved":"Solved","topicAlreadySolvedErrorTitle":"Solution Already Exists","topicAlreadySolvedErrorDesc":"Refresh the browser to view the existing solution"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Pager/PagerLoadMore-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Pager/PagerLoadMore-1741125846000","value":{"loadMore":"Show More"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewInline-1741125846000","value":{"bylineAuthor":"{bylineAuthor}","bylineBoard":"{bylineBoard}","anonymous":"Anonymous","place":"Place {bylineBoard}","gotoParent":"Go to parent {name}"},"localOverride":false},"Revision:revision:115889_2":{"__typename":"Revision","id":"revision:115889_2","lastEditTime":"2016-03-16T08:35:38.833-07:00"},"Revision:revision:115927_1":{"__typename":"Revision","id":"revision:115927_1","lastEditTime":"2016-03-16T05:50:41.038-07:00"},"Revision:revision:115948_1":{"__typename":"Revision","id":"revision:115948_1","lastEditTime":"2016-03-16T10:37:04.936-07:00"},"Revision:revision:115952_4":{"__typename":"Revision","id":"revision:115952_4","lastEditTime":"2016-03-16T12:56:00.630-07:00"},"ForumReplyMessage:message:115954":{"__typename":"ForumReplyMessage","uid":115954,"id":"message:115954","revisionNum":1,"author":{"__ref":"User:user:68391"},"readOnly":false},"ModerationData:moderation_data:115955":{"__typename":"ModerationData","id":"moderation_data:115955","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"AcceptedSolutionMessage:message:115955":{"__typename":"AcceptedSolutionMessage","author":{"__ref":"User:user:56026"},"id":"message:115955","revisionNum":2,"uid":115955,"depth":5,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:testcomplete-questions"},"parent":{"__ref":"ForumReplyMessage:message:115954"},"conversation":{"__ref":"Conversation:conversation:115880"},"subject":"Re: Help with a dataloop within a dataloop","moderationData":{"__ref":"ModerationData:moderation_data:115955"},"body":"
DCat1223 wrote:Hi william_roe...
Thank you for the input. I'm not a technical person and this is all pretty new to me so please forgive my ignorance. I'm still muddling my way through all of this.
Humor me if you will, as I reiterate what I think you are suggesting - I'm probably going to get this worng but here it goes...
1) I replace any duplicate instance of Vendor# with NULL, or \"\" in my datasheet.
2) When Vendor# changes, I execute the portion of the test that creates the PO, and start the loop over with the next vendor.
Am I close?
If so, how do I tell the test that if the Vendor# changes to run the lines of the script that create the PO and restart the loop using the next vendor?
Thank you for your time.
DC.
1) Don't input \"NULL' OR \"\" in the vend_num cell - simply delete the redundant value in the cells and in then perform an \"if\" operation where the value != null. (I can include a screen capture later if it would help)
2.) You don't need to start the loop over. Finish whatever needs to be done on page 2, the po detail (after the next non null vend_num value is found and return back to page 1 (the po header) and continue on to the next record in the loop.
","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})@stringLength":"218","postTime":"2016-03-16T15:51:47.053-07:00","lastPublishTime":"2016-03-16T15:53:59.161-07:00","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"attachments":{"__typename":"AttachmentConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"solution":true,"metrics":{"__typename":"MessageMetrics","views":2544},"placeholder":false,"originalMessageForPlaceholder":null,"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"isEscalated":null,"entityType":"FORUM_REPLY","eventPath":"category:TestComplete_forum/community:nwkab66374board:testcomplete-questions/message:115880/message:115955","customFields":[],"readOnly":false,"editFrozen":false,"body@stringLength":"1893","rawBody":"
wrote: Hi
...
Thank you for the input. I'm not a technical person and this is all pretty new to me so please forgive my ignorance. I'm still muddling my way through all of this.
Humor me if you will, as I reiterate what I think you are suggesting - I'm probably going to get this worng but here it goes...
1) I replace any duplicate instance of Vendor# with NULL, or \"\" in my datasheet.
2) When Vendor# changes, I execute the portion of the test that creates the PO, and start the loop over with the next vendor.
Am I close?
If so, how do I tell the test that if the Vendor# changes to run the lines of the script that create the PO and restart the loop using the next vendor?
Thank you for your time.
DC.
1) Don't input \"NULL' OR \"\" in the vend_num cell - simply delete the redundant value in the cells and in then perform an \"if\" operation where the value != null. (I can include a screen capture later if it would help)
2.) You don't need to start the loop over. Finish whatever needs to be done on page 2, the po detail (after the next non null vend_num value is found and return back to page 1 (the po header) and continue on to the next record in the loop.
","kudosSumWeight":2,"repliesCount":2,"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:115955_2"},"latestVersion":null,"visibilityScope":"PUBLIC","messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1741125846000","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1741125846000","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false},"Revision:revision:115955_2":{"__typename":"Revision","id":"revision:115955_2","lastEditTime":"2016-03-16T15:53:59.161-07:00"}}}},"page":"/forums/ForumMessagePage/ForumMessagePage","query":{"boardId":"testcomplete-questions","messageSubject":"help-with-a-dataloop-within-a-dataloop","messageId":"115880"},"buildId":"q_bLpq2mflH0BeZigxpj6","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"smartbear","openTelemetryServiceVersion":"25.2.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/seo/QAPageSchema/QAPageSchema.tsx","./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/messages/TopicWithThreadedReplyListWidget/TopicWithThreadedReplyListWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/messages/RelatedContentWidget/RelatedContentWidget.tsx","./components/customComponent/CustomComponent/CustomComponent.tsx","./components/messages/MessageView/MessageViewStandard/MessageViewStandard.tsx","./components/messages/ThreadedReplyList/ThreadedReplyList.tsx","../shared/client/components/common/List/UnstyledList/UnstyledList.tsx","./components/messages/MessageView/MessageView.tsx","../shared/client/components/common/Pager/PagerLoadMore/PagerLoadMore.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx"],"appGip":true,"scriptLoader":[]}