Commit b97a76a1b483d07b4a1dc20a5804820cc1b95048

Authored by Playtenders
1 parent 670cdda4

begin rename files

This diff could not be displayed because it is too large.
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_agreement_variables.robot
5   -Resource playtender_question.robot
6   -Resource playtender_claim.robot
7   -Resource playtender_bid.robot
8   -Resource playtender_viewer.robot
9   -
10   -*** Keywords ***
11   -
12   -update agreement queue
13   - [Documentation] запускає оновлення agreement з ЦБД і додає їх в чергу, тобто синхронізація може відбутися не відразу
14   - ... поточна сторіка повертається
15   -
16   - ${current_url} = get location
17   - go to ${broker_baseurl}/utils/queue-agreement-update
18   - go to ${current_url}
19   -
20   -open agreement search form
21   - [Documentation] відкриває сторінку з пошуком agreement
22   -
23   - open page and wait element by locator ${broker_baseurl}/agreements ${agreement_search_form_locator}
24   -
25   -open agreement form by uaid
26   - [Arguments] ${agreement_uaid}
27   - [Documentation] відкриття сторінки редагування плану
28   -
29   - open agreement page by uaid ${agreement_uaid}
30   - click visible element and wait until page contains element ${tender_edit_btn_locator} ${tender_form_locator}
31   -
32   -open agreement page by uaid
33   - [Arguments] ${uaid}
34   - [Documentation] відкриває сторінку з agreement
35   -
36   - open site page and wait content element ${broker_baseurl}/agreement/${uaid}
37   - ${is_agreement_found} = get is element exist ${agreement_view_checker_element_locator}
38   - return from keyword if ${is_agreement_found} == ${True}
39   - ${is_agreement_not_found} = get is 404 page
40   - ${is_needed_to_update_and_wait_sync} = set variable if ${is_test_role_owner} == ${False} and ${is_agreement_not_found} ${True} ${False}
41   - run keyword if ${is_needed_to_update_and_wait_sync} update agreement queue
42   - run keyword if ${is_needed_to_update_and_wait_sync} wait until 404 page disappears
43   - ${is_agreement_found} = get is element exist ${agreement_view_checker_element_locator}
44   - run keyword if ${is_agreement_found} == ${False} fail Opening agreement page by uaid fails.
45   -
46   -save agreement form and wait synchronization
47   - [Documentation] натискає кнопку "Зберегти" і чекає синхронізації угоди
48   -
49   - submit form and check result ${tender_form_submit_btn_locator} ${tender_form_submit_success_msg} ${tender_created_checker_element_locator} ${true}
50   - wait until page does not contain element with reloading ${agreement_sync_element_locator}
51   -
52   -add document in agreement
53   - [Arguments] ${filepath}
54   - [Documentation] Завантажити документ, який знаходиться по шляху filepath.
55   -
56   - click visible element ${tender_form_general_panel_edit_add_document_btn_locator}
57   - choose file ${add_file_to_form_locator} ${filepath}
58   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
59   - submit current visible popup
60   -
61   -
1   -*** Variables ***
2   -
3   -${agreement_search_form_locator} = id=agreement-filter-form
4   -${agreement_search_form_query_input_locator} = jquery=#agreement-filter-form .dynamic-search-query input
5   -${agreement_search_form_result_locator_tpl} = jquery=#agreement-list .lots__item .lot__characteristic li:contains(%query%)
6   -
7   -# agreement view
8   -${agreement_view_checker_element_locator} = id=agreement-general-info
9   -${agreement_sync_element_locator} = jquery=#aside-part-pjax .status-label .fa-refresh
10   -${agreement_uaid_text_locator} = jquery=#agreement-general-info .agreement-id .value
11   -${agreement_edit_btn_locator} = jquery=#aside-part-pjax a[href*="agreement/update"]
12   -${agreement_status_value_locator} = jquery=#aside-part-pjax .hidden.opstatus
13   -#елемент проверки загрузки формы в попапе
14   -#${popup_dynamic_form_loading_element_locator} = jquery=.fancybox-is-open .btn-add .fa-spin
15   -${agreement_changes_0_status_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.status.hidden
16   -${agreement_changes_0_rationaleType_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.rationale-type span.value
17   -${agreement_changes_0_rationale_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.rationale span.value
18   -
19   -${agreement_changes_0_modifications_0_itemId_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-itemId.hidden
20   -${agreement_changes_0_modifications_0_addend_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-factor.hidden
21   -
22   -${agreement_changes_1_rationaleType_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale-type span.value
23   -${agreement_changes_1_rationale_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale span.value
24   -
25   -${agreement_changes_1_modifications_0_itemId_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-itemId.hidden
26   -${agreement_changes_1_modifications_0_factor_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-factor.hidden
27   -${agreement_changes_1_status_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.status.hidden
28   -
29   -${agreement_changes_2_rationaleType_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale-type span.value
30   -${agreement_changes_2_rationale_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale span.value
31   -
32   -${agreement_changes_2_modifications_0_itemId_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-itemId.hidden
33   -${agreement_changes_2_modifications_0_factor_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-factor.hidden
34   -${agreement_changes_2_status_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.status.hidden
35   -
36   -${agreement_changes_3_rationaleType_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale-type span.value
37   -${agreement_changes_3_rationale_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale span.value
38   -
39   -${agreement_changes_3_modifications_0_itemId_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.itemid span.value
40   -${agreement_changes_3_modifications_0_factor_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-factor.hidden
41   -${agreement_changes_3_status_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.status.hidden
42   -
43   -${agreement_form_refresh_success_msg} = Рамкова угода оновлена.
44   -${agreement_form_refresh_btn_locator} = jquery=#agreement-general-info a[href*="/utils/agreement-sync"]
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_variables.robot
5   -Resource playtender_bid_variables.robot
6   -
7   -*** Keywords ***
8   -
9   -
10   -fill bid form
11   - [Arguments] ${tender_uaid} ${bid} ${lots_ids} ${features_ids}
12   - [Documentation] Подати цінову пропозицію bid для тендера tender_uaid на лоти lots_ids (якщо lots_ids != None) з неціновими показниками features_ids (якщо features_ids != None).
13   -
14   - submit form and check result ${bid_form_refresh_btn_locator} ${bid_form_refresh_success_msg} ${tender_created_checker_element_locator} ${true}
15   - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}
16   - ${value} = get from dictionary by keys ${bid.data} value amount
17   -# ${amount} = run keyword if condition is not none ${value} convert_float_to_string ${bid.data.value.amount}
18   - run keyword if condition is not none ${value} input number to exist visible input ${bid_form_value_amount_input_locator} ${value}
19   - capture page screenshot
20   -# ${lots} = get from dictionary by keys ${data} lots
21   - run keyword if condition is not none ${lots_ids} fill bid form lots ${bid} ${lots_ids} ${features_ids}
22   - capture page screenshot
23   -# run keyword if condition is none ${lots_ids} fill bid form whithout lots ${bid}
24   -# ${features} = get from dictionary by keys ${data} features
25   -# run keyword if condition is not none ${features_ids} fill bid form features ${bid} ${tender_form_general_panel_add_feature_btn_locator}
26   - fill bid required documents_all
27   - capture page screenshot
28   -## submit form and check result ${bid_form_submit_btn_locator} ${bid_form_submit_success_msg} ${tender_created_checker_element_locator}
29   -
30   -fill bid form lots
31   - [Arguments] ${bid} ${lots_ids}=${None} ${features_ids}=${None}
32   - [Documentation] Заповнити лотову цінову пропозицію bid для тендера tender_uaid на лоти lots_ids з неціновими показниками features_ids (якщо features_ids != None).
33   -
34   - ${lots} = get from dictionary by keys ${bid.data} lotValues
35   - ${lots_length} = Get Length ${lots}
36   - : FOR ${INDEX} IN RANGE 0 ${lots_length}
37   - \ Run Keyword And Ignore Error run keyword if condition is not none ${lots} input number to exist visible input ${bid_form_value_amount_input_locator} ${lots[${INDEX}].value.amount}
38   - \ capture page screenshot
39   - \ ${self_qualified} = get from dictionary by keys ${bid.data} selfQualified
40   -# \ run keyword if condition is not none ${self_qualified} click visible element ${bid_form_value_self_qualified_input_locator}
41   - \ run keyword if condition is not none ${self_qualified} execute javascript $('.fancybox-is-open .fancybox-content input[id*="-self_qualified"]').click()
42   - \ capture page screenshot
43   - \ ${self_eligible} = get from dictionary by keys ${bid.data} selfEligible
44   -# \ run keyword if condition is not none ${self_eligible} click visible element ${bid_form_value_self_eligible_input_locator}
45   - \ run keyword if condition is not none ${self_eligible} execute javascript $('.fancybox-is-open .fancybox-content input[id*="-self_eligible"]').click()
46   - \ capture page screenshot
47   - \ ${feature_id} = get from dictionary by keys ${bid.data} parameters
48   - \ run keyword if condition is not none ${feature_id} fill bid form features ${feature_id}
49   - \ capture page screenshot
50   - \ run keyword if '${mode}' in 'open_esco' fill bid form lots Esco ${bid.data.lotValues}
51   -
52   -fill bid form features
53   - [Arguments] ${bid_parameters}
54   - [Documentation] Заповнити нецінові показники цінової пропозиції.
55   -
56   - log many ${bid_parameters}
57   - ${features_length} = Get Length ${bid_parameters}
58   - : FOR ${INDEX} IN RANGE 0 ${features_length}
59   - \ ${bid_form_feature_input_locator} replace string ${bid_form_feature_input_locator_tpl} %title% ${bid_parameters[${INDEX}]['code']}
60   - \ ${bid_form_get_feature_input_locator} replace string ${bid_form_get_feature_input_locator_tpl} %title% ${bid_parameters[${INDEX}]['code']}
61   - \ ${bid_form_feature_input_locator_select} replace string ${bid_form_feature_input_locator_select_tpl} %title% ${bid_parameters[${INDEX}]['code']}
62   - \ ${value_enum} = convert float to string ${bid_parameters[${INDEX}]['value']}
63   - \ ${bid_form_feature_value_input_locator} set variable ${bid_form_feature_input_locator} ${bid_form_feature_value_input_locator_tpl}
64   - \ ${bid_form_get_feature_value_input_locator} set variable ${bid_form_get_feature_input_locator} ${bid_form_get_feature_value_input_locator_tpl}
65   - \ ${bid_form_feature_value_input_locator} replace string ${bid_form_feature_value_input_locator} _ ' '
66   - \ ${bid_form_get_feature_value_input_locator} replace string ${bid_form_get_feature_value_input_locator} _ ' '
67   - \ ${bid_form_feature_value_input_locator} replace string ${bid_form_feature_value_input_locator} %value% ${value_enum}
68   - \ ${bid_form_get_feature_value_input_locator} replace string ${bid_form_get_feature_value_input_locator} %value% ${value_enum}
69   - \ ${enum_val} set variable ${bid_form_get_feature_value_input_locator}
70   - \ ${enum_val1}= run keyword if ${bid_parameters[${INDEX}]['value']} == 0 Execute Javascript return $('[data-weight-source="0"]').text()
71   - \ ... ELSE Execute Javascript ${enum_val}
72   - \ capture page screenshot
73   - \ Run Keyword And Ignore Error select from list by label ${bid_form_feature_input_locator_select} ${enum_val1}
74   - \ capture page screenshot
75   -
76   -fill bid form lots Esco
77   - [Arguments] ${values}
78   - [Documentation] Заповнити цінову пропозицію Esco
79   -
80   - log many ${values}
81   - ${values_length} = Get Length ${values}
82   - : FOR ${INDEX} IN RANGE 0 ${values_length}
83   - \ input number to exist visible input ${bid_form_value_yearly_payments_percentage_input_locator} ${values[${INDEX}].value.yearlyPaymentsPercentage}
84   - \ capture page screenshot
85   - \ input text to exist visible input ${bid_form_value_contract_duration_years_input_locator} ${values[${INDEX}].value.contractDuration.years}
86   - \ capture page screenshot
87   - \ input text to exist visible input ${bid_form_value_contract_duration_days_input_locator} ${values[${INDEX}].value.contractDuration.days}
88   - \ capture page screenshot
89   - \ fill bid form lots Esco AnnualCostsReduction ${values[${INDEX}].value.annualCostsReduction}
90   - \ capture page screenshot
91   -
92   -fill bid form lots Esco AnnualCostsReduction
93   - [Arguments] ${values}
94   - [Documentation] Заповнити цінову пропозицію Esco (параметр AnnualCostsReduction).
95   -
96   - ${input_index} = set variable 1
97   - : FOR ${value} IN @{values}
98   - \ ${input_index_tmp}= convert to string ${input_index}
99   - \ ${bid_form_value_annual_costs_reduction_input_locator} replace string ${bid_form_value_annual_costs_reduction_input_locator_tpl} %index% ${input_index_tmp}
100   - \ input number to exist visible input ${bid_form_value_annual_costs_reduction_input_locator} ${value}
101   - \ ${input_index} = evaluate ${input_index} + 1
102   -
103   -fill bid required documents_all
104   - [Arguments]
105   - [Documentation] Додати фейковий документ до цінової пропозиції при створенні.
106   -
107   - ${file_path} ${file_name} ${file_content} = create_fake_doc
108   -# click visible element and wait until page contains element ${open_form_add_doc_lot_btn_locator} jquery=.modal.modal-form.js-form-popup.fancybox-content
109   - #click visible element ${bid_form_add_document_all_btn_locator}
110   - capture page screenshot
111   -### execute javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents .js-upload-documents input[type$="file"]:first').click()
112   - capture page screenshot
113   - choose file ${add_file_to_bid_form_locator} ${file_path}
114   - capture page screenshot
115   - wait until element is visible ${bid_form_add_document_type_input_locator}
116   -# submit current visible popup
117   - Run Keyword And Ignore Error Select From List By Value ${bid_form_add_document_type_input_locator} qualificationDocuments
118   - click visible element ${bid_form_add_document_description_btn_locator}
119   - capture page screenshot
120   - wait until element is visible ${bid_form_add_document_description_input_locator}
121   - input text to exist visible input ${bid_form_add_document_description_input_locator} test2
122   - click visible element ${bid_form_add_document_close_description_btn_locator}
123   - capture page screenshot
124   -
125   -fill bid form edit
126   - [Arguments] ${fieldname} ${fieldvalue}
127   - [Documentation] Змінити поле fieldname на fieldvalue цінової пропозиції користувача username для тендера tender_uaid.
128   -
129   - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}
130   - Run Keyword If '${fieldname}' == 'lotValues[0].value.amount' or '${fieldname}' == 'value.amount' and '${mode}' != 'open_esco' input number to exist visible input ${bid_form_value_amount_input_locator} ${fieldvalue}
131   -# submit form and check result ${bid_form_submit_btn_locator} ${bid_form_submit_edit_success_msg} ${tender_created_checker_element_locator}
132   -
133   -
134   -add document to bid
135   - [Arguments] ${path} ${doc_type} ${doc_name}
136   - #=documents
137   - [Documentation] Завантажити документ типу doc_type, який знаходиться за шляхом path,
138   - ... до цінової пропозиції користувача username для тендера tender_uaid.
139   -
140   - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}
141   -### execute javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents .js-upload-documents input[type$="file"]:first').click()
142   - choose file ${add_file_to_bid_form_locator} ${path}
143   - run keyword and ignore error wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
144   - wait until element is visible ${bid_form_add_document_type_input_locator}
145   -# submit current visible popup
146   - log many ${doc_type}
147   -# run keyword if '${doc_type}' == 'documents' Select From List By Value ${bid_form_add_document_type_input_locator} qualificationDocuments
148   -# ... else Select From List By Value ${bid_form_add_document_type_input_locator} ${doc_type}
149   - Run Keyword And Ignore Error select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal
150   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' and "${mode}" not in "openeu open_competitive_dialogue" select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal
151   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' and "${mode}" in "openeu open_competitive_dialogue" select from visible list by value ${bid_form_add_document_type_input_locator} qualificationDocuments
152   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'financial_documents' select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal
153   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'qualification_documents' select from visible list by value ${bid_form_add_document_type_input_locator} qualificationDocuments
154   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'eligibility_documents' select from visible list by value ${bid_form_add_document_type_input_locator} eligibilityDocuments
155   - capture page screenshot
156   -
157   - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('commercialProposal').change()
158   - capture page screenshot
159   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' and "${mode}" not in "openeu open_competitive_dialogue" Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('commercialProposal').change()
160   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' and "${mode}" in "openeu open_competitive_dialogue" Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('qualificationDocuments').change()
161   - capture page screenshot
162   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'financial_documents' Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('commercialProposal').change()
163   - capture page screenshot
164   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'qualification_documents' Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('qualificationDocuments').change()
165   - capture page screenshot
166   - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'eligibility_documents' Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('eligibilityDocuments').change()
167   -# Run Keyword And Ignore Error select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal
168   -# Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal
169   -# Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'financial_documents' select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal
170   -# Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'qualification_documents' select from visible list by value ${bid_form_add_document_type_input_locator} qualificationDocuments
171   -# Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'eligibility_documents' select from visible list by value ${bid_form_add_document_type_input_locator} eligibilityDocuments
172   - capture page screenshot
173   -
174   - click visible element ${bid_form_add_document_description_btn_locator}
175   - wait until element is visible ${bid_form_add_document_description_input_locator}
176   - input text to exist visible input ${bid_form_add_document_description_input_locator} test2
177   - click visible element ${bid_form_add_document_close_description_btn_locator}
178   -
179   -document to bid edit
180   - [Arguments] ${path} ${doc_type}=documents
181   - [Documentation] Змінити документ з doc_id в описі в пропозиції користувача username для
182   - ... тендера tender_uaid на документ, який знаходиться по шляху path.
183   -
184   - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}
185   -# click visible element ${bid_form_edit_document_all_btn_locator}
186   - capture page screenshot
187   - choose file ${bid_form_edit_document_all_btn_locator} ${path}
188   - capture page screenshot
189   -# wait until element is visible ${bid_form_add_document_type_input_locator}
190   -
191   -fill bid form edit document
192   - [Arguments] ${doc_data} ${doc_id}
193   - [Documentation] Змінити тип документа з doc_id в заголовку в пропозиції користувача
194   - ... username для тендера tender_uaid. Дані про новий тип документа знаходяться в doc_data.
195   -
196   - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}
197   - ##### BOF - TMP for confidentiality#####
198   - execute javascript $('#tender-bid-form .documents-dynamic-forms-wrapper:last [href$="#edit"]:last').click()
199   -# click visible element $('#tender-bid-form .documents-dynamic-forms-wrapper:last [href$="#edit"]:last').click()
200   - set element scroll into view ${bid_form_add_document_close_description_btn_locator}
201   - capture page screenshot
202   - wait until element is visible ${bid_form_add_document_description_input_locator} 60
203   - execute javascript $('#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in [id$="-confidentiality"]').click()
204   -
205   -# click visible element ${bid_form_add_document_confidentiality_input_locator}
206   - capture page screenshot
207   - input text to exist visible input ${bid_form_add_document_confidentialityrationale_input_locator} ${doc_data.data.confidentialityRationale}
208   - capture page screenshot
209   - click visible element ${bid_form_add_document_close_description_btn_locator}
210   - capture page screenshot
211   - ##### EOF - TMP #####
212   -
213   -get bid information
214   - [Arguments] ${field}
215   - [Documentation] Отримати значення поля field пропозиції користувача
216   - ... username для тендера tender_uaid.
217   -
218   - capture page screenshot
219   - Run Keyword If 'status' == '${field}' submit form and check result ${bid_form_refresh_btn_locator} ${bid_form_refresh_success_msg} ${tender_created_checker_element_locator} ${true}
220   - Run Keyword If 'status' != '${field}' open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}
221   -# click visible element ${bid_form_open_btn_locator}
222   - capture page screenshot
223   - Run Keyword If 'status' != '${field}' wait until popup is visible
224   -# ${question_open_form_answer_locator} = replace string ${question_open_form_answer_btn_locator_tpl} %title% ${question_id}
225   -# wait until page contains element with reloading ${question_open_form_answer_locator}
226   - capture page screenshot
227   - Run Keyword If 'status' == '${field}' submit form and check result ${bid_form_refresh_btn_locator} ${bid_form_refresh_success_msg} ${tender_created_checker_element_locator} ${true}
228   - #${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' get value by locator on opened page ${bid_lotValues_0_value_amount_value_locator}
229   - ${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' get bid value ${bid_lotValues_0_value_amount_value_locator}
230   - ... ELSE Run Keyword If 'status' == '${field}' get value by locator on opened page ${bid_form_bid_status_btn_locator}
231   - ... ELSE Run Keyword If 'value.amount' == '${field}' get bid value ${bid_form_value_amount_input_locator}
232   -## ${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' get value by locator on opened page ${bid_lotValues_0_value_amount_value_locator}
233   -# ... ELSE Run Keyword If 'status' == '${field}' get_text ${bid_form_bid_status_btn_locator}
234   -## ... ELSE Run Keyword If 'status' == '${field}' get value by locator on opened page ${bid_form_bid_status_btn_locator}
235   -## ... ELSE Run Keyword If 'value.amount' == '${field}' get value by locator on opened page ${bid_form_value_amount_input_locator}
236   -# submit current visible popup
237   -## ${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' or 'value.amount' == '${field}' playtender_service.split_joinvalue ${return_value}
238   -## ${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' or 'value.amount' == '${field}' Convert To Number ${return_value}
239   - [Return] ${return_value}
240   -
241   -fill bid form remove
242   - [Documentation] Змінити статус цінової пропозиції для тендера tender_uaid
243   - ... користувача username на cancelled.
244   -
245   - click visible element ${bid_form_remove_btn_locator}
246   - submit form and check result ${alert_opened_close_bid_btn_locator} ${bid_form_submit_remove_success_msg} ${tender_created_checker_element_locator} ${true}
247   -
248   -get bid value
249   - [Arguments] ${field}
250   - [Documentation] Отримати значення поля field пропозиції користувача
251   - ... username для тендера tender_uaid.
252   -
253   - ${return_value} = get value by locator on opened page ${field}
254   - ${return_value} = playtender_service.split_joinvalue ${return_value}
255   - ${return_value} = Convert To Number ${return_value}
256   - [Return] ${return_value}
257   -
1   -*** Variables ***
2   -
3   -#bids
4   -${bid_form_open_btn_locator} = jquery=#aside-part-pjax a[href*="/tender/bid"]
5   -${bid_form_remove_btn_locator} = jquery=#aside-part-pjax a[href*="#bid-delete"]
6   -${bid_form_submit_success_msg} = Пропозиція створена
7   -${bid_form_submit_edit_success_msg} = Пропозиція відредагована
8   -${bid_form_submit_remove_success_msg} = Ви впевнені що бажаєте видали свою пропозицію?
9   -${alert_opened_close_bid_btn_locator} = jquery=.animated-content .js-btn-confirm
10   -${bid_form_feature_input_locator_select_tpl} = jquery=[data-opid*="%title%"]
11   -${bid_form_get_feature_input_locator_tpl} = return $('.fancybox-is-open .fancybox-content [data-opid*="%title%"]
12   -${bid_form_get_feature_value_input_locator_tpl} = option[data-weight-source*="%value%"]').text()
13   -${bid_form_feature_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content [data-opid*="%title%"]
14   -${bid_form_feature_value_input_locator_tpl} = option[data-weight-source*="%value%"]
15   -${bid_form_value_amount_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-value_amount"]
16   -${bid_form_value_subcontracting_details_input_locator} = jquery=.fancybox-is-open .fancybox-content textarea[id*="-subcontracting_details"]
17   -${bid_form_value_self_eligible_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-self_eligible"]
18   -${bid_form_value_self_qualified_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-self_qualified"]
19   -${bid_form_value_yearly_payments_percentage_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-yearly_payments_percentage"]
20   -${bid_form_value_contract_duration_years_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-contract_duration_years"]
21   -${bid_form_value_contract_duration_days_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-contract_duration_days"]
22   -${bid_form_value_annual_costs_reduction_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content input[name*="[annual_costs_reduction_%index%]"]
23   -
24   -${add_file_to_bid_all_form_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .js-upload-documents
25   -${add_file_to_bid_form_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .js-upload-documents input[type$="file"]:first
26   -${bid_form_add_document_all_btn_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .js-upload-documents input[type$="file"]:first
27   -${bid_form_add_document_type_input_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last select[id*="-document_type"]:last
28   -${bid_form_add_document_description_btn_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last [href$="#edit"]:last
29   -${bid_form_add_document_description_input_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in textarea[id*="-description"].form-control
30   -${bid_form_add_document_close_description_btn_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in [href$="#close"]
31   -${bid_form_add_document_confidentiality_input_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in [id$="-confidentiality"]
32   -${bid_form_add_document_confidentialityrationale_input_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in textarea[id*="-confidentiality_rationale"].form-control
33   -${bid_form_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.btn.btn-success
34   -${bid_form_edit_document_all_btn_locator} = jquery=.form-documents-group .tab-content .item-wrapper.js-item:last a[href*="#reupload"]
35   -
36   -${bid_lotValues_0_value_amount_value_locator} = jquery=.fancybox-slide .modal.fancybox-content #tender-bid-form .tab-content .active.js-lot-tab .js-amount-weight-wrapper .input-group .js-amount-input
37   -${bid_lotValues_0_value_amount_value_locator_type} = float
38   -
39   -${bid_popup_locator} = jquery=.fancybox-slide .modal.fancybox-content
40   -
41   -${bid_form_refresh_success_msg} = Закупівля оновлена.
42   -${bid_form_refresh_btn_locator} = jquery=#tender-general-info a[href*="/utils/tender-sync"]
43   -${bid_form_bid_status_btn_locator} = jquery=.bid-info-wrapper.hidden.info-wrapper .info-row.status-source
\ No newline at end of file
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_claim_variables.robot
5   -
6   -*** Keywords ***
7   -
8   -
9   -Створити вимогу
10   - [Arguments] ${username} ${tender_uaid} ${type} ${type_id} ${claim} ${doc_name}
11   - [Documentation] Створити вимогу з claim в описі для тендера tender_uaid.
12   -
13   - open tender page by uaid ${tender_uaid}
14   - click visible element ${claim_page_open_btn_locator}
15   - capture page screenshot
16   - wait until page contains element with reloading ${claim_form_open_btn_locator}
17   - open popup by btn locator ${claim_form_open_btn_locator}
18   - capture page screenshot
19   - input text to exist visible input ${claim_form_complaintform_title_input_locator} ${claim.data.title}
20   - capture page screenshot
21   - input text to exist visible input ${claim_form_complaintform_description_input_locator} ${claim.data.description}
22   - capture page screenshot
23   - Run Keyword And Ignore Error Run Keyword If '${type}' == 'tender' Select From List By Label ${claim_form_complaintform_related_of_input_locator} Закупівля
24   - capture page screenshot
25   - Run Keyword And Ignore Error Run Keyword If '${type}' == 'lot' Select From List By Label ${claim_form_complaintform_related_of_input_locator} Лот
26   - capture page screenshot
27   - Run Keyword And Ignore Error Run Keyword If '${type}' == 'lot' Click Element ${claim_form_complaintform_related_lot_input_locator}
28   - ${claim_form_complaintform_related_lot_select_locator} = Run Keyword If '${type}' == 'lot' replace string ${claim_form_complaintform_related_lot_input_locator_tpl} %type_id% ${type_id}
29   - Run Keyword And Ignore Error Run Keyword If '${type}' == 'lot' Click Element ${claim_form_complaintform_related_lot_select_locator}
30   - capture page screenshot
31   - Run Keyword And Ignore Error Select From List By Label ${claim_form_complaintform_complaintform_type_input_locator} Вимога
32   - Run Keyword And Ignore Error Run Keyword If '${type}' == 'winner_complaint' or '${claim.data.type}' == 'complaint' Select From List By Label ${claim_form_complaintform_complaintform_type_input_locator} Скарга
33   -
34   - capture page screenshot
35   -### Run Keyword If '${doc_name}' != 'null' click visible element ${claim_form_complaintform_document_btn_locator}
36   - capture page screenshot
37   - Run Keyword If '${doc_name}' != 'null' choose file ${add_file_to_form_locator} ${doc_name}
38   - capture page screenshot
39   - Run Keyword If '${doc_name}' != 'null' wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
40   - capture page screenshot
41   -# Run Keyword If '${doc_name}' != 'null' submit current visible popup
42   - submit form and check result ${claim_form_complaintform_submit_btn_locator} ${claim_form_submit_success_msg} ${tender_created_checker_element_locator}
43   -# Функция ожидания claim_uaid_text_locator соответствующей вимоги
44   -# click visible element ${claim_form_open_btn_locator}
45   - reload page
46   - wait until page does not contain element with reloading ${claim_sync_element_locator} 60
47   - wait until page contains element with reloading ${claim_uaid_text_locator}
48   - ${return_value}= get text ${claim_uaid_text_locator}
49   - ${return_value}= Convert To String ${return_value}
50   - [return] ${return_value}
51   -
52   -Скасувати вимогу
53   - [Arguments] ${username} ${tender_uaid} ${complaintID} ${cancellation_data} ${award_index}
54   - [Documentation] Перевести вимогу complaintID для тендера tender_uaid у статус cancelled,
55   - ... використовуючи при цьому дані confirmation_data.
56   -
57   - open tender page by uaid ${tender_uaid}
58   - click visible element and wait until page contains element ${claim_page_open_btn_locator} ${claim_form_open_btn_locator}
59   - ${claim_open_form_answer_locator} = replace string ${claim_open_form_answer_btn_locator_tpl} %title% ${complaintID}
60   - wait until page contains element with reloading ${claim_open_form_answer_locator}
61   - ${claim_form_cancel_open_btn_locator} = replace string ${claim_form_cancel_open_btn_locator_tpl} %complaint_id% ${complaintID}
62   - wait until page contains element with reloading ${claim_form_cancel_open_btn_locator}
63   - open popup by btn locator ${claim_form_cancel_open_btn_locator}
64   - capture page screenshot
65   - input text to exist visible input ${claim_form_cancellation_reason_input_locator} ${cancellation_data.data.cancellationReason}
66   - capture page screenshot
67   - submit form and check result ${claim_form_complaintform_submit_btn_locator} ${claim_cancel_submit_success_msg} ${tender_created_checker_element_locator}
68   -
69   -get claim information
70   - [Arguments] ${tender_uaid} ${complaintID} ${field_name} ${award_index}=${None}
71   - [Documentation] Отримати значення поля field_name скарги/вимоги complaintID про
72   - ... виправлення умов закупівлі/лоту для тендера tender_uaid (скарги/вимоги про
73   - ... виправлення визначення переможця під номером award_index, якщо award_index != None).
74   -
75   - open tender page by uaid ${tender_uaid}
76   - click visible element ${claim_page_open_btn_locator}
77   - capture page screenshot
78   - ${claim_open_form_answer_locator} = replace string ${claim_open_form_answer_btn_locator_tpl} %title% ${complaintID}
79   - wait until page contains element with reloading ${claim_open_form_answer_locator}
80   - capture page screenshot
81   -
82   - ${claim_wrapper_complain_id_value_locator} = set variable ${claim_open_form_answer_locator}
83   -# ${claim_wrapper_complaint_id_value_locator} = replace string ${claim_wrapper_complain_id_value_locator_tpl} %complain_id% ${complaintID}
84   - ${claim_description_value_locator} = Run Keyword If 'description' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_description_value_locator}
85   - ${claim_title_value_locator} = Run Keyword If 'title' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_title_value_locator}
86   - ${claim_complain_id_value_locator} = Run Keyword If 'complaintID' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_complain_id_value_locator}
87   - ${claim_status_value_locator} = Run Keyword If 'status' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_status_value_locator}
88   - ${claim_resolution_type_value_locator} = Run Keyword If 'resolutionType' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_resolution_type_value_locator}
89   - ${claim_resolution_value_locator} = Run Keyword If 'resolution' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_resolution_value_locator}
90   - ${claim_satisfied_value_locator} = Run Keyword If 'satisfied' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_satisfied_value_locator}
91   - ${claim_related_lot_value_locator} = Run Keyword If 'relatedLot' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_related_lot_value_locator}
92   - ${claim_cancellation_reason_value_locator} = Run Keyword If 'cancellationReason' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_cancellation_reason_value_locator}
93   -
94   - Run Keyword If "${TEST_NAME}" == "Можливість відповісти на вимогу про виправлення умов закупівлі" Wait Until Keyword Succeeds 420 s 15 s Wait For Answered ${complaintID} ${claim_wrapper_complain_id_value_locator}
95   - Run Keyword If "${TEST_NAME}" == "Можливість відповісти на вимогу про виправлення умов лоту" Wait Until Keyword Succeeds 420 s 15 s Wait For Answered ${complaintID} ${claim_wrapper_complain_id_value_locator}
96   - Run Keyword If "Відображення статусу 'answered'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Answered ${complaintID} ${claim_wrapper_complain_id_value_locator}
97   - Run Keyword If "${TEST_NAME}" == "Відображення задоволення вимоги" Wait Until Keyword Succeeds 300 s 15 s Wait For Satisfied ${complaintID} ${claim_wrapper_complain_id_value_locator}
98   - Run Keyword If "${TEST_NAME}" == "Відображення незадоволення вимоги" Wait Until Keyword Succeeds 300 s 15 s Wait For Satisfied ${complaintID} ${claim_wrapper_complain_id_value_locator}
99   - Run Keyword If "Відображення статусу 'resolved'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Resolved ${complaintID} ${claim_wrapper_complain_id_value_locator}
100   - Run Keyword If "Відображення статусу 'cancelled'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Cancelled ${complaintID} ${claim_wrapper_complain_id_value_locator}
101   - Run Keyword If "Відображення статусу 'ignored'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Ignored ${complaintID} ${claim_wrapper_complain_id_value_locator}
102   - Run Keyword If "Відображення статусу 'stopping'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Stopping ${complaintID} ${claim_wrapper_complain_id_value_locator}
103   - Run Keyword If "Відображення статусу 'pending'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Pending ${complaintID} ${claim_wrapper_complain_id_value_locator}
104   - Run Keyword And Ignore Error Run Keyword If "Відображення кінцевих статусів двох останніх вимог" in "${TEST_NAME}" Wait Until Keyword Succeeds 30 s 5 s Wait For Invalid ${complaintID} ${claim_wrapper_complain_id_value_locator}
105   - Run Keyword And Ignore Error Run Keyword If "Відображення кінцевих статусів двох останніх вимог" in "${TEST_NAME}" Wait Until Keyword Succeeds 30 s 5 s Wait For Declined ${complaintID} ${claim_wrapper_complain_id_value_locator}
106   -
107   - Run Keyword And Return If 'description' == '${field_name}' get value by locator on opened page ${claim_description_value_locator}
108   - Run Keyword And Return If 'complaintID' == '${field_name}' get value by locator on opened page ${claim_complain_id_value_locator}
109   - Run Keyword And Return If 'title' == '${field_name}' get value by locator on opened page ${claim_title_value_locator}
110   - Run Keyword And Return If 'status' == '${field_name}' get value by locator on opened page ${claim_status_value_locator}
111   - Run Keyword And Return If 'resolutionType' == '${field_name}' get value by locator on opened page ${claim_resolution_type_value_locator}
112   - Run Keyword And Return If 'resolution' == '${field_name}' get value by locator on opened page ${claim_resolution_value_locator}
113   - Run Keyword And Return If 'satisfied' == '${field_name}' Отримати інформацію із скарги satisfied ${claim_satisfied_value_locator}
114   - Run Keyword And Return If 'relatedLot' == '${field_name}' get value by locator on opened page ${claim_related_lot_value_locator}
115   - Run Keyword And Return If 'cancellationReason' == '${field_name}' get value by locator on opened page ${claim_cancellation_reason_value_locator}
116   -
117   -Отримати інформацію із документа скарги title
118   - [Arguments] ${complaintID} ${doc_id}
119   - [Documentation] Отримати значення поля title з документу з doc_id в описі для скарги для тендера.
120   -
121   - click visible element ${claim_page_open_btn_locator}
122   - ${claim_open_form_answer_locator} = replace string ${claim_open_form_answer_btn_locator_tpl} %title% ${complaintID}
123   - wait until page contains element with reloading ${claim_open_form_answer_locator}
124   - ${claim_file_name_input_locator} = replace string ${claim_file_name_input_locator_tpl} %complain_id% ${complaintID}
125   -# wait until page contains element with reloading ${claim_file_name_input_locator}
126   -
127   - ${return_value} = get text ${claim_file_name_input_locator}
128   - [return] ${return_value}
129   -
130   -get document complaint
131   - [Arguments] ${complaintID} ${doc_id}
132   - [Documentation] Завантажити файл doc_id до скарги complaintID для тендера tender_uaid
133   - ... в директорію ${OUTPUT_DIR} для перевірки вмісту цього файлу.
134   -
135   - ${claim_file_name_input_locator} = replace string ${claim_file_name_input_locator_tpl} %complain_id% ${complaintID}
136   - wait until page contains element with reloading ${claim_file_name_input_locator}
137   - ${claim_file_link_input_locator} = replace string ${claim_file_link_input_locator_tpl} %complain_id% ${complaintID}
138   - ${claim_file_name_input_locator} = replace string ${claim_file_name_input_locator_tpl} %complain_id% ${complaintID}
139   - wait until page contains element with reloading ${tender_new_doc_locator}
140   -
141   - ${file_link} = Execute Javascript ${claim_file_link_input_locator}
142   - ${file_name} = get text ${claim_file_name_input_locator}
143   - download_file ${file_link} ${file_name} ${OUTPUT_DIR}
144   - [return] ${file_name}
145   -
146   -
147   -Підтвердити вирішення вимоги
148   - [Arguments] ${username} ${tender_uaid} ${type} ${type_id} ${complaintID} ${data} ${award_index}
149   - [Documentation] Підтвердити вирішення вимоги
150   -
151   - open tender page by uaid ${tender_uaid}
152   - click visible element ${claim_page_open_btn_locator}
153   - click visible element and wait until page contains element ${claim_page_open_btn_locator} ${claim_form_open_btn_locator}
154   - ${claim_form_resolved_input_locator} = replace string ${claim_form_resolved_input_locator_tpl} %complaint_id% ${complaintID}
155   - open popup by btn locator ${claim_form_resolved_input_locator}
156   - ${value} = Set Variable If '${data.data.satisfied}' Задоволен Не задоволен
157   - run keyword and ignore error select from visible list by label ${claim_form_satisfied_input_locator} ${value}
158   - capture page screenshot
159   - submit form and check result ${claim_form_complaintform_submit_btn_locator} ${claim_form_satisfied_submit_success_msg} ${None}
160   -
161   -
162   -Відповісти на вимогу
163   - [Arguments] ${username} ${tender_uaid} ${complaintID} ${answer_data} ${award_index}
164   - [Documentation] Відповісти на вимогу complaintID
165   - ... для тендера tender_uaid, використовуючи при цьому дані answer_data.
166   -
167   - open tender page by uaid ${tender_uaid}
168   - click visible element ${claim_page_open_btn_locator}
169   - ${claim_open_form_answer_locator} = replace string ${claim_open_form_answer_btn_locator_tpl} %title% ${complaintID}
170   - wait until page contains element with reloading ${claim_open_form_answer_locator}
171   - ${claim_form_open_form_answer_btn_locator} = replace string ${claim_form_open_form_answer_btn_locator_tpl} %title% ${complaintID}
172   - wait until page contains element with reloading ${claim_form_open_form_answer_btn_locator}
173   - open popup by btn locator ${claim_form_open_form_answer_btn_locator}
174   - input text to exist visible input ${claim_form_answer_resolution_value_locator} ${answer_data.data.resolution}
175   - Run Keyword If '${answer_data.data.resolutionType}' == 'resolved' select from list by value ${claim_form_answer_resolution_type_value_locator} resolved
176   - Run Keyword If '${answer_data.data.resolutionType}' == 'declined' select from list by value ${claim_form_answer_resolution_type_value_locator} declined
177   - Run Keyword If '${answer_data.data.resolutionType}' == 'invalid' select from list by value ${claim_form_answer_resolution_type_value_locator} invalid
178   - Run Keyword And Ignore Error input text to exist visible input ${claim_form_answer_tenderer_action_value_locator} ${answer_data.data.tendererAction}
179   - submit form and check result ${claim_form_answer_success_btn_locator} ${claim_form_answer_submit_success_msg}
180   -
181   -
182   -Wait For Answered
183   - [Arguments] ${complaintID} ${wrapper}
184   - [Documentation] Очікування статусу Answered вимоги complaintID
185   - ... для тендера tender_uaid.
186   -
187   - Reload Page
188   - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% answered
189   - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}
190   - Page Should Contain Element ${claim_status_value_locator}
191   -
192   -Wait For Satisfied
193   - [Arguments] ${complaintID} ${wrapper}
194   - [Documentation] Очікування статусу Answered вимоги complaintID
195   - ... для тендера tender_uaid.
196   -
197   - Reload Page
198   - ${claim_form_satisfied_value_locator} = replace string ${claim_form_satisfied_value_locator_tpl} %query% Так
199   - ${claim_form_satisfied_value_locator_tmp} = set variable ${wrapper} ${claim_form_satisfied_value_locator}
200   - Page Should Contain Element ${claim_form_satisfied_value_locator_tmp}
201   -
202   -Wait For Resolved
203   - [Arguments] ${complaintID} ${wrapper}
204   - [Documentation] Очікування статусу Answered вимоги complaintID
205   - ... для тендера tender_uaid.
206   -
207   - Reload Page
208   - ${claim_form_resolved_value_locator} = replace string ${claim_form_status_locator_tpl} %query% resolved
209   - ${claim_form_resolved_value_locator_tmp} = set variable ${wrapper} ${claim_form_resolved_value_locator}
210   - Page Should Contain Element ${claim_form_resolved_value_locator_tmp}
211   -
212   -Wait For Cancelled
213   - [Arguments] ${complaintID} ${wrapper}
214   - [Documentation] Очікування статусу Answered вимоги complaintID
215   - ... для тендера tender_uaid.
216   -
217   - Reload Page
218   - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% cancelled
219   - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}
220   - Page Should Contain Element ${claim_status_value_locator}
221   -
222   -Wait For Ignored
223   - [Arguments] ${complaintID} ${wrapper}
224   - [Documentation] Очікування статусу Answered вимоги complaintID
225   - ... для тендера tender_uaid.
226   -
227   - Reload Page
228   - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% ignored
229   - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}
230   - Page Should Contain Element ${claim_status_value_locator}
231   -
232   -Wait For Stopping
233   - [Arguments] ${complaintID} ${wrapper}
234   - [Documentation] Очікування статусу Answered вимоги complaintID
235   - ... для тендера tender_uaid.
236   -
237   - Reload Page
238   - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% stopping
239   - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}
240   - Page Should Contain Element ${claim_status_value_locator}
241   -
242   -Wait For Pending
243   - [Arguments] ${complaintID} ${wrapper}
244   - [Documentation] Очікування статусу Pending вимоги complaintID
245   - ... для тендера tender_uaid.
246   -
247   - Reload Page
248   - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% pending
249   - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}
250   - Page Should Contain Element ${claim_status_value_locator}
251   -
252   -Отримати інформацію із скарги satisfied
253   - [Arguments] ${wrapper}
254   - [Documentation] Отримати інформацію із скарги satisfied
255   -
256   -
257   - ${return_value} = get value by locator on opened page ${wrapper}
258   - ${return_value} = Run Keyword If 'Так' == '${return_value}' Set Variable True
259   - ... ELSE Set Variable False
260   - ${return_value} = Convert To Boolean ${return_value}
261   - [return] ${return_value}
262   -
263   -Wait For Invalid
264   - [Arguments] ${complaintID} ${wrapper}
265   - [Documentation] Очікування статусу Invalid вимоги complaintID
266   - ... для тендера tender_uaid.
267   -
268   - Reload Page
269   - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% invalid
270   - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}
271   - Page Should Contain Element ${claim_status_value_locator}
272   -
273   -Wait For Declined
274   - [Arguments] ${complaintID} ${wrapper}
275   - [Documentation] Очікування статусу declined вимоги complaintID
276   - ... для тендера tender_uaid.
277   -
278   - Reload Page
279   - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% declined
280   - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}
281   - Page Should Contain Element ${claim_status_value_locator}
282   -
283   -
1   -*** Variables ***
2   -
3   -#claim
4   -${claim_page_open_btn_locator} = jquery=#aside-part-pjax a[href*="/tender-complaint"]
5   -#${claim_form_open_btn_locator} = jquery=#tender-part-pjax a[href*="/tender/complaint-create"]:first
6   -${claim_form_open_btn_locator} = jquery=#tender-part-pjax a[href*="tender-complaint/create"]:first
7   -${claim_form_complaintform_title_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="complaintform-title"]
8   -${claim_form_complaintform_description_input_locator} = jquery=.fancybox-is-open .fancybox-content textarea[id*="complaintform-description"]
9   -${claim_form_complaintform_related_of_input_locator} = jquery=.fancybox-is-open .fancybox-content select[id*="complaintform-related_of"]
10   -${claim_form_complaintform_related_lot_input_locator} = jquery=.fancybox-is-open .fancybox-content select[id*="complaintform-related_lot"]
11   -${claim_form_complaintform_related_lot_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content select[id*="complaintform-related_lot"] option:contains("%type_id%")
12   -${claim_form_complaintform_complaintform_type_input_locator} = jquery=.fancybox-is-open .fancybox-content select[id*="complaintform-type"]
13   -${claim_form_complaintform_document_btn_locator} = jquery=.fancybox-is-open .fancybox-content a[data-url*="/tender/get-complaint-document"]
14   -${claim_form_complaintform_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.btn.btn-success
15   -${claim_uaid_text_locator} = jquery=#tender-complaint-list div.item.js-item:first .complaint-id span.value
16   -#${claim_form_submit_success_msg} = Вимога успішно подана
17   -${claim_form_submit_success_msg} = успішно подана
18   -
19   -${claim_cancel_submit_success_msg} = Вимога/скарга скасована.
20   -
21   -#${claim_form_cancel_open_btn_locator_tpl} = jquery=#tender-complaint-list div.item.js-item a[href*="/tender/complaint-cancel"]:last
22   -#${claim_form_cancel_open_btn_locator} = jquery=#tender-complaint-list div.item.js-item a[href*="/tender/complaint-cancel"]:last
23   -${claim_form_cancellation_reason_input_locator} = jquery=#complaintcancelform-cancellation_reason
24   -${claim_form_cancel_open_btn_locator_tpl} = jquery=#tender-part-pjax #tender-complaint-list .complaint__item[data-complaint-id*="%complaint_id%"] a[href*="/tender/complaint-cancel"]
25   -
26   -${claim_file_link_input_locator_tpl} = return $('#tender-complaint-list .js-item div[data-complaint-id*="%complain_id%"] .complaint-info-wrapper .info-row.documents .value a[href*="https://public-docs-staging.prozorro.gov.ua"]').attr("href")
27   -${claim_file_name_input_locator_tpl} = jquery=#tender-complaint-list .js-item div[data-complaint-id*="%complain_id%"] .complaint-info-wrapper .info-row.documents .value a[href*="https://public-docs-staging.prozorro.gov.ua"]
28   -
29   -${claim_wrapper_complain_id_value_locator_tpl} = jquery=#tender-complaint-pjax .complaint__item:first
30   -#${claim_wrapper_complain_id_value_locator_tpl} = jquery=#tender-complaint-pjax .complaint__item[data-title*="%complain_id%"]
31   -${claim_description_value_locator} = .complaint-info-wrapper .info-row.description .value
32   -${claim_title_value_locator} = .complaint-info-wrapper .info-row.title .value
33   -${claim_complain_id_value_locator} = .complaint-info-wrapper .info-row.complaint-id .value
34   -${claim_status_value_locator} = .complaint-info-wrapper .info-row.status-source.hidden
35   -${claim_resolution_type_value_locator} = .complaint-info-wrapper .info-row.resolution-type-source.hidden
36   -${claim_cancellation_reason_value_locator} = .complaint-info-wrapper .info-row.cancellation-reason .value
37   -${claim_related_lot_value_locator} = .complaint-info-wrapper .info-row.related-item .value
38   -${claim_resolution_value_locator} = .complaint-info-wrapper .info-row.resolution .value
39   -${claim_satisfied_value_locator} = .complaint-info-wrapper .info-row.satisfied .value
40   -
41   -${claim_sync_element_locator} = jquery=.synhronized__icon.fa.fa-refresh.fa-spin
42   -
43   -${claim_open_form_answer_btn_locator_tpl} = jquery=#tender-complaint-list .js-item div[data-complaint-id*="%title%"]
44   -${claim_form_open_form_answer_btn_locator_tpl} = jquery=#tender-complaint-list .js-item div[data-complaint-id*="%title%"] .btn.btn-success
45   -${claim_form_resolved_input_locator_tpl} = jquery=#tender-part-pjax #tender-complaint-list .complaint__item[data-complaint-id*="%complaint_id%"] a[href*="/tender/complaint-resolve"]
46   -${claim_form_satisfied_input_locator} = jquery=.fancybox-is-open .fancybox-content #complaintresolveform-satisfied
47   -${claim_form_satisfied_submit_success_msg} = Вимога вирішена, дочекайтесь опублікування на сайті уповноваженого органу.
48   -#formanswer
49   -${claim_form_answer_resolution_value_locator} = jquery=#tender-complaint-answer-form #complaintanswerform-resolution
50   -${claim_form_answer_tenderer_action_value_locator} = jquery=#tender-complaint-answer-form #complaintanswerform-tenderer_action
51   -${claim_form_answer_resolution_type_value_locator} = jquery=#tender-complaint-answer-form #complaintanswerform-resolution_type
52   -${claim_form_answer_success_btn_locator} = jquery=#tender-complaint-answer-form .btn.btn-success
53   -${claim_form_answer_submit_success_msg} = Відповідь на вимогу надана, дочекайтесь опублікування на сайті уповноваженого органу.
54   -${claim_form_status_locator_tpl} = .complaint-info-wrapper .info-row.status-source.hidden:contains(%query%)
55   -${claim_form_satisfied_value_locator_tpl} = .complaint-info-wrapper .info-row.satisfied .value:contains(%query%)
1   -*** Settings ***
2   -
3   -Library Selenium2Library
4   -Library String
5   -Library Collections
6   -Library playtender_service.py
7   -Resource playtender_variables.robot
8   -
9   -*** Variables ***
10   -
11   -${broker} = playtender
12   -${broker_username} =
13   -${broker_baseurl} =
14   -${broker_browser} =
15   -${broker_language_code} = uk
16   -${test_role} =
17   -${is_test_role_owner} =
18   -
19   -@{browser_default_size} = ${1200} ${1000}
20   -@{browser_default_position} = ${0} ${0}
21   -
22   -${popup_transaction_time} = 600ms
23   -
24   -*** Keywords ***
25   -
26   -init environment
27   - [Arguments] ${username}
28   - [Documentation] ініціює необхідні глобальні змінні
29   -
30   - set global variable ${broker_username} ${username}
31   - set global variable ${broker_baseurl} ${BROKERS['${broker}'].basepage}
32   - set global variable ${broker_browser} ${USERS.users['${broker_username}'].browser}
33   - set global variable ${test_role} ${ROLE}
34   - ${is_test_role_owner} = set variable if '${test_role}' == 'tender_owner' ${True} ${False}
35   - set global variable ${is_test_role_owner} ${is_test_role_owner}
36   -
37   - register keyword to run on failure __private__handle_keyword_failure
38   -
39   -set site language by code
40   - [Arguments] ${language_code}
41   - [Documentation] змінити мову сайту
42   -
43   - ${is_equal} = __private__check_site_language_code ${language_code}
44   - run keyword if ${is_equal} == ${False} __private__open_site_language_dropdown_and_select_language_by_code ${language_code}
45   -
46   -login to site
47   - [Arguments] ${user_data}
48   - [Documentation] авторизувати вказаного користувача, масив повинен містити login, password
49   -
50   -# click visible element ${login_popup_open_locator}
51   -# wait until popup is visible
52   - open popup by btn locator ${login_popup_open_locator}
53   - input text to visible input ${login_popup_login_input_locator} ${user_data['login']}
54   - input text to visible input ${login_popup_password_input_locator} ${user_data['password']}
55   - click visible element ${login_popup_submit_btn_locator}
56   - wait until page contains element ${user_logged_checker_element_locator} 30s User can not login
57   -
58   -fill item form in opened popup
59   - [Arguments] ${data}
60   - [Documentation] заповнює відкриту форму згідно вказаних даних
61   -
62   - ${description} = get from dictionary by keys ${data} description
63   - run keyword if condition is not none ${description} input text to visible input ${item_form_popup_description_input_locator} ${description}
64   - ${description_ru} = get from dictionary by keys ${data} description_ru
65   - run keyword if condition is not none ${description_ru} input text to exist visible input ${item_form_popup_description_ru_input_locator} ${description_ru}
66   - ${description_en} = get from dictionary by keys ${data} description_en
67   - run keyword if condition is not none ${description_en} input text to exist visible input ${item_form_popup_description_en_input_locator} ${description_en}
68   - ${quantity} = get from dictionary by keys ${data} quantity
69   - run keyword and ignore error run keyword if condition is not none ${quantity} input number3 to visible input ${item_form_popup_quantity_input_locator} ${quantity}
70   - ${unit} = get from dictionary by keys ${data} unit name
71   - run keyword if condition is not none ${unit} select from visible list by label ${item_form_popup_unit_input_locator} ${unit}
72   - ${classification} = get from dictionary by keys ${data} classification
73   - run keyword if condition is not none ${classification} run keyword if '${mode}' not in 'framework_selection' select classification by code attributes ${item_form_popup_classification_edit_btn_locator} ${classification}
74   - ${additional_classifications} = get from dictionary by keys ${data} additionalClassifications
75   - run keyword if condition is not none ${additional_classifications} run keyword if '${mode}' not in 'framework_selection' select classification by array of code attributes ${item_form_popup_additional_classification_edit_btn_locator} ${additional_classifications}
76   -
77   -get value by locator on opened page
78   - [Arguments] ${locator} ${type}=${None}
79   - [Documentation] отримує значення з відповідного локатору і якщо потрібно перетворює до відповідного типу
80   -
81   - capture page screenshot
82   - Run Keyword And Ignore Error __private__set_element_visible_in_browser_area ${locator}
83   - ${value} = get value by locator ${locator}
84   - ${value} = convert to specified type ${value} ${type}
85   - [Return] ${value}
86   -
87   -get field_value by field_name on opened page
88   - [Arguments] ${field_name}
89   - [Documentation] повертає інформацію з відкритої сторінки, користуючись назвою поля ${field_name}.
90   - ... для назви поля повинен бути вказаний відповідний локатор (!вкінці змінної повинно бути слово locator),
91   - ... і якщо потрібно тип поля окремою змінною (!locator замінюється на type) зі значенням [string,integer,float]
92   -
93   - ${field_name_prepared} = replace string ${field_name} .[ _
94   - ${field_name_prepared} = replace string ${field_name_prepared} ]. _
95   - ${field_name_prepared} = replace string ${field_name_prepared} . _
96   - ${field_name_prepared} = replace string ${field_name_prepared} [ _
97   - ${field_name_prepared} = replace string ${field_name_prepared} ] _
98   - ${field_locator_variable_name} = set variable ${field_name_prepared}_locator
99   - ${field_type_variable_name} = set variable ${field_name_prepared}_type
100   - ${field_type_variable_exists} = run keyword and return status variable should exist ${${field_type_variable_name}}
101   - ${field_type} = set variable if ${field_type_variable_exists} == ${True} ${${field_type_variable_name}} ${None}
102   - ${field_locator} = set variable ${${field_locator_variable_name}}
103   - ${field_value} = get value by locator on opened page ${field_locator} ${field_type}
104   - [Return] ${field_value}
105   -
106   -########################################################################################################################
107   -#################################################### COMMON HELPERS ####################################################
108   -########################################################################################################################
109   -
110   -click visible element
111   - [Arguments] ${locator}
112   - [Documentation] перевіряє видимість і клікає по елементу
113   -
114   - __private__set_element_visible_in_browser_area ${locator}
115   - click element ${locator}
116   -
117   -click visible element and wait until page contains element
118   - [Arguments] ${locator} ${checker_element_locator} ${waiting_timeout}=30s ${waiting_error}=Another element was not shown after clicking on specific element
119   - [Documentation] перевіряє видимість і клікає по елементу
120   -
121   - click visible element ${locator}
122   - wait until page contains element ${checker_element_locator} ${waiting_timeout} ${waiting_error}
123   -
124   -click removing form item and wait success result
125   - [Arguments] ${locator}
126   - [Documentation] натискає кнопку видалення, очікує успішне повідомлення і закриває повідомлення
127   -
128   - click visible element ${locator}
129   - wait until alert is visible
130   - click visible element ${alert_confirm_btn_locator}
131   - wait until page does not contain element ${alert_confirm_btn_locator}
132   -
133   -click removing form feature and wait success result
134   - [Arguments] ${locator}
135   - [Documentation] натискає кнопку видалення нецінового критерію, очікує успішне повідомлення і закриває повідомлення, а потім закриває вікно нецінового критерію
136   -
137   - js click element ${locator}
138   - wait until alert is visible
139   - click visible element ${alert_confirm_btn_locator}
140   - wait until page does not contain element ${alert_confirm_btn_locator}
141   - submit current visible popup
142   -
143   -input text to visible input
144   - [Arguments] ${locator} ${text}
145   - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його
146   -
147   - __private__set_element_visible_in_browser_area ${locator}
148   - input text ${locator} ${text}
149   -
150   -input text to visible input and press enter
151   - [Arguments] ${locator} ${text}
152   - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його і імітує натиснення кнопки Enter
153   -
154   - input text to visible input ${locator} ${text}
155   - press key ${locator} \\13
156   -
157   -input text to exist visible input
158   - [Arguments] ${locator} ${text}
159   - [Documentation] перевіряє чи елемент існує і видимий у вікні браузера, після чого заповнює його
160   -
161   - ${input_exists} = get is element exist ${locator}
162   - run keyword if ${input_exists} == ${True} input text to visible input ${locator} ${text}
163   - ... ELSE __private__log input ${locator} does not exist
164   -
165   -input date to input
166   - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y
167   -
168   - ${date} = isodate format ${isodate} ${format}
169   - input text to hidden input ${locator} ${date}
170   -
171   -input datetime to input
172   - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y %H:%M
173   -
174   - input date to input ${locator} ${isodate} ${format}
175   -
176   -input date to visible input
177   - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y
178   - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його відформатовоною датою
179   -
180   - __private__set_element_visible_in_browser_area ${locator}
181   - input date to input ${locator} ${isodate} ${format}
182   -
183   -input datetime to visible input
184   - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y %H:%M
185   - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його відформатовоною датою
186   -
187   - input date to visible input ${locator} ${isodate} ${format}
188   -
189   -input datetime to exist visible input
190   - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y %H:%M
191   - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його відформатовоною датою
192   -
193   - ${input_exists} = get is element exist ${locator}
194   - run keyword if ${input_exists} == ${True} input date to visible input ${locator} ${isodate} ${format}
195   - ... ELSE __private__log input ${locator} does not exist
196   -
197   -input number to visible input
198   - [Arguments] ${locator} ${number}
199   - [Documentation] робить елемент видимим, число перетворює в строку і записує в поле
200   -
201   - ${number} = convert float to string ${number}
202   - input text to visible input ${locator} ${number}
203   -
204   -input number3 to visible input
205   - [Arguments] ${locator} ${number}
206   - [Documentation] робить елемент видимим, число перетворює в строку і записує в поле
207   -
208   - ${number} = convert_float_to_string_3f ${number}
209   - input text to visible input ${locator} ${number}
210   -
211   -input number to exist visible input
212   - [Arguments] ${locator} ${text}
213   - [Documentation] перевіряє чи елемент існує і видимий у вікні браузера, після чого заповнює його
214   -
215   - ${input_exists} = get is element exist ${locator}
216   - run keyword if ${input_exists} == ${True} input number to visible input ${locator} ${text}
217   - ... ELSE __private__log input ${locator} does not exist
218   -
219   -input month.year of date to visible input
220   - [Arguments] ${locator} ${isodate}
221   - [Documentation] робить елемент видимим, витягує місяць.рік і записує в поле
222   -
223   - ${value} = isodate format ${isodate} %m.%Y
224   - input text to visible input ${locator} ${value}
225   -
226   -input to search form and wait results
227   - [Arguments] ${query_input_locator} ${query} ${result_locator_tpl}
228   - [Documentation] заповнює форму і очікує результат по шаблону селектора
229   -
230   - input text to visible input and press enter ${query_input_locator} ${query}
231   - ${result_locator} = replace string ${result_locator_tpl} %query% ${query}
232   - wait until page contains search ${result_locator}
233   -# wait until page contains element with reloading ${result_locator}
234   -
235   -select from visible list by value
236   - [Arguments] ${locator} ${value}
237   - [Documentation] робить елемент видимим, після чого заповнює його
238   -
239   - __private__set_element_visible_in_browser_area ${locator}
240   - select from list by value ${locator} ${value}
241   - trigger input change event ${locator}
242   -
243   -select from visible list by label
244   - [Arguments] ${locator} ${label}
245   - [Documentation] робить елемент видимим, після чого заповнює його
246   -
247   - __private__set_element_visible_in_browser_area ${locator}
248   - select from hidden list by label ${locator} ${label}
249   - trigger input change event ${locator}
250   -
251   -select from visible list by year of date
252   - [Arguments] ${locator} ${isodate}
253   - [Documentation] робить елемент видимим, витягує рік і обирає в списку
254   -
255   - ${value} = isodate format ${isodate} %Y
256   - select from visible list by value ${locator} ${value}
257   -
258   -select classification by code attributes
259   - [Arguments] ${btn_locator} ${code_attributes}
260   - [Documentation] натискає кнопку відкриття попапу класифікатора і чекає поки він відмалюється, шукає відповідний код і закриває попап
261   -
262   - ${code_attributes_array} = create list ${code_attributes}
263   - select classification by array of code attributes ${btn_locator} ${code_attributes_array}
264   -
265   -select classification by array of code attributes
266   - [Arguments] ${btn_locator} ${code_attributes_array} ${include_schemes}=${None} ${exclude_schemes}=${None}
267   - [Documentation] натискає кнопку відкриття попапу класифікатора і чекає поки він відмалюється, шукає відповідні коди і закриває попап
268   -
269   - ${include_schemes_is_none}= get variable is none ${include_schemes}
270   - ${exclude_schemes_is_none}= get variable is none ${exclude_schemes}
271   -
272   - open popup by btn locator ${btn_locator} ${classification_popup_opened_content_locator}
273   - Capture Page Screenshot
274   - :FOR ${code_attributes} IN @{code_attributes_array}
275   - \ ${disabled} = set variable if ${include_schemes_is_none} == ${False} and '${code_attributes['scheme']}' not in ${include_schemes} ${True} ${False}
276   - \ Capture Page Screenshot
277   - \ ${disabled} = set variable if ${exclude_schemes_is_none} == ${False} and '${code_attributes['scheme']}' in ${exclude_schemes} ${True} ${disabled}
278   - \ Capture Page Screenshot
279   - \ run keyword if ${disabled} == ${False} __private__select_classification_code_in_opened_popup ${code_attributes['id']} ${code_attributes['scheme']}
280   - \ Capture Page Screenshot
281   - Capture Page Screenshot
282   - submit current visible popup
283   -
284   -open site page and wait content element
285   - [Arguments] ${url} ${waiting_timeout}=5s ${waiting_error}=Opening page fails
286   - [Documentation] переходить по посиланню і чекає контенту сторінки
287   -
288   - go to ${url}
289   - wait until page contains element ${page_content_locator} ${waiting_timeout} ${waiting_error}
290   -
291   -open page and wait element by locator
292   - [Arguments] ${url} ${waiting_element_locator} ${waiting_timeout}=5s ${waiting_error}=Opened page does not have specified element locator
293   - [Documentation] переходить по посиланню і чекає поки елемент не буде знайдений на сторінці
294   -
295   - go to ${url}
296   - wait until page contains element ${waiting_element_locator} ${waiting_timeout} ${waiting_error}
297   -
298   -open popup by btn locator
299   - [Arguments] ${btn_locator} ${popup_locator}=${None}
300   - [Documentation] натискає кнопку відкриття попапу і чекає поки він відмалюється
301   -
302   - click visible element ${btn_locator}
303   - ${result} = run keyword and return status wait until popup is visible ${popup_locator}
304   - run keyword if ${result} == ${False} js click element ${btn_locator}
305   - run keyword if ${result} == ${False} wait until popup is visible ${popup_locator}
306   -
307   -submit current visible popup
308   - [Documentation] натискає кнопку сабміту в поточному попапі і чекає поки він закриється
309   -
310   - ${popup_last_id} = __private__get_element_attribute ${popup_opened_last_locator} id
311   - click visible element ${popup_opened_last_submit_btn_locator}
312   - sleep ${popup_transaction_time}
313   - ${popup_last_locator} = set variable id=${popup_last_id}
314   - ${popup_exists} = get is element exist ${popup_last_locator}
315   - return from keyword if ${popup_exists} == ${False}
316   - wait until page does not contain element ${popup_last_locator} 30s Current popup was not hidden
317   -
318   -submit form and check result
319   - [Arguments] ${submit_btn_locator} ${wait_msg}=${None} ${wait_element_locator}=${None} ${sign_is}=${None}
320   - [Documentation] сабмітить форму і чекає повідомлення (якщо задано) + елемент (якщо задано)
321   -
322   - click visible element ${submit_btn_locator}
323   - run keyword and ignore error run keyword if condition is not none ${wait_msg} wait until element is visible ${tender_cpv_form_submit_success_msg} 5
324   -# run keyword and ignore error Wait Until Page Contains ${tender_cpv_form_submit_success_msg} 60
325   - Capture Page Screenshot
326   - run keyword and ignore error execute javascript ${tender_cpv_js_submit_btn_locator}
327   - Capture Page Screenshot
328   - run keyword and ignore error run keyword if '${mode}' in 'reporting' close sync alert ${tender_form_submit_reporting_success_msg}
329   - run keyword and ignore error run keyword if condition is not none ${wait_msg} Wait Until Page Contains ${wait_msg} 60
330   - run keyword and ignore error run keyword if condition is not none ${wait_msg} wait until alert is visible ${wait_msg}
331   - run keyword and ignore error run keyword if condition is not none ${wait_msg} close current visible alert
332   -
333   -#cat проба
334   - run keyword and ignore error run keyword if not ${sign_is} Load Sign
335   - run keyword and ignore error close current visible alert
336   - run keyword and ignore error run keyword if condition is not none ${wait_element_locator} wait until element is visible ${wait_element_locator} 60
337   - run keyword and ignore error run keyword if condition is not none ${wait_element_locator} wait until page contains element ${wait_element_locator} 60s Element was not shown after form submitting
338   -
339   -close sync alert
340   - [Arguments] ${wait_msg}=${None}
341   - [Documentation] чекає поки попап не стане видимим на сторінці
342   -
343   - ${status}= run keyword if '${mode}' in 'openeu open_competitive_dialogue openua_defense open_esco open_framework' Run Keyword And Return Status Page Should Contain ${wait_msg}
344   - run keyword and ignore error run keyword if ${status} and '${mode}' in 'openeu open_competitive_dialogue openua_defense open_esco open_framework' Wait Until Page Contains ${wait_msg} 60
345   - run keyword and ignore error run keyword if ${status} and '${mode}' in 'openeu open_competitive_dialogue openua_defense open_esco open_framework' wait until alert is visible ${wait_msg}
346   - run keyword and ignore error run keyword if ${status} and '${mode}' in 'openeu open_competitive_dialogue openua_defense open_esco open_framework' close current visible alert
347   -
348   -
349   -wait until popup is visible
350   - [Arguments] ${popup_locator}=${None} ${waiting_timeout}=30s ${waiting_error}=Opened popup still not visible
351   - [Documentation] чекає поки попап не стане видимим на сторінці
352   -
353   - ${popup_locator_is_none} = get variable is none ${popup_locator}
354   - ${popup_locator} = set variable if ${popup_locator_is_none} == ${False} ${popup_locator} ${popup_opened_content_locator}
355   - ${status} = run keyword and return status wait until element is visible ${popup_locator} ${waiting_timeout} ${waiting_error}
356   - # trying to prevent "StaleElementReferenceException: Message: stale element reference: element is not attached to the page document" error
357   - run keyword if ${status} == ${False} sleep 1
358   - run keyword if ${status} == ${False} wait until element is visible ${popup_locator} 1 ${waiting_error}
359   -
360   -wait until alert is visible
361   - [Arguments] ${message}=${None}
362   - [Documentation] чекає поки не з'явиться алерт
363   -
364   - ${message_is_none} = get variable is none ${message}
365   - ${message} = convert to string ${message}
366   - ${alert_message_locator} = replace string ${alert_message_contains_text_locator_tpl} %text% ${message}
367   - run keyword if ${message_is_none} == ${True} wait until page contains element ${alert_opened_locator} 60s Alert was not shown
368   - run keyword if ${message_is_none} == ${False} wait until page contains element ${alert_message_locator} 60s Alert was not shown
369   -
370   - # wait for ending animation
371   - sleep 500ms
372   -
373   -close current visible alert
374   - [Documentation] закриває поточний alert
375   -
376   - click visible element ${alert_opened_close_btn_locator}
377   -
378   - # wait for ending animation
379   - sleep 500ms
380   -
381   -wait until page contains search
382   - [Arguments] ${locator} ${retry}=5m ${retry_interval}=2s
383   - [Documentation] чекає поки елемент не з'явиться на сторінці з перезапуском пошуку
384   -
385   - ${result} = get is element exist ${locator}
386   - capture page screenshot
387   - run keyword if ${result} == ${False} wait until keyword succeeds ${retry} ${retry_interval} reload page and fail if element does not exist on search ${locator}
388   -
389   -wait until page contains element with reloading
390   - [Arguments] ${locator} ${retry}=5m ${retry_interval}=2s
391   - [Documentation] чекає поки елемент не з'явиться на сторінці з перезавантаженням сторінки
392   -
393   - ${result} = get is element exist ${locator}
394   - run keyword if ${result} == ${False} wait until keyword succeeds ${retry} ${retry_interval} reload page and fail if element does not exist ${locator}
395   -
396   -wait until page does not contain element with reloading
397   - [Arguments] ${locator} ${retry}=5m ${retry_interval}=2s
398   - [Documentation] чекає поки елемент не пропаде зі сторінки з перезавантаженням сторінки
399   -
400   - ${result} = get is element exist ${locator}
401   - run keyword if ${result} == ${True} wait until keyword succeeds ${retry} ${retry_interval} reload page and fail if element exists ${locator}
402   - capture page screenshot
403   -
404   -wait until tab content is visible
405   - [Arguments] ${tab_link} ${waiting_timeout}=30s ${waiting_error}=Opened tab still not visible
406   - [Documentation] чекає поки контент вказаного табу не буде видимим
407   -
408   - ${tab_link_href} = __private__get_element_attribute ${tab_link} href
409   - ${tab_content_locator} = set variable jquery=${tab_link_href}
410   - wait until element is visible ${tab_content_locator} ${waiting_timeout} ${waiting_error}
411   -
412   -reload page and fail if element exists
413   - [Arguments] ${locator}
414   - [Documentation] перезавантажує сторінку і фейлить тест якщо елемент присутній
415   -
416   - capture page screenshot
417   - reload page
418   - capture page screenshot
419   - ${exists} = get is element exist ${locator}
420   - run keyword if ${exists} == ${True} fail
421   -
422   -reload page and fail if element does not exist
423   - [Arguments] ${locator}
424   - [Documentation] перезавантажує сторінку і фейлить тест якщо елемент відсутній
425   -
426   - reload page
427   - capture page screenshot
428   - ${exists} = get is element exist ${locator}
429   - run keyword if ${exists} == ${False} fail
430   -
431   -reload page and fail if element does not exist on search
432   - [Arguments] ${locator}
433   - [Documentation] перезавантажує сторінку і фейлить тест якщо елемент відсутній в пошуку
434   -
435   - click visible element ${tender_form_search_btn_locator}
436   - ${exists} = get is element exist ${locator}
437   - run keyword if ${exists} == ${False} fail
438   -
439   -get is 404 page
440   - [Documentation] перевіряє чи поточна сторінка з 404 помилкою
441   -
442   - ${exists} = get is element exist ${error_page_404_checker_element_locator}
443   - [Return] ${exists}
444   -
445   -wait until 404 page disappears
446   - [Arguments] ${retry}=5m ${retry_interval}=2s
447   - [Documentation] оновлює сторінку і чекає поки не пропаде 404 помилка
448   -
449   - ${result} = get is 404 page
450   - run keyword if ${result} == ${True} wait until keyword succeeds ${retry} ${retry_interval} reload page and fail if element exists ${error_page_404_checker_element_locator}
451   -
452   -########################################################################################################################
453   -################################################### PRIVATE KEYWORDS ###################################################
454   -########################################################################################################################
455   -
456   -__private__handle_keyword_failure
457   - [Documentation] обробка падіння тесту, збір можливої інформації для аналізу проблеми
458   -
459   - capture page screenshot
460   - ${form_errors} = __private__get_all_form_errors
461   - log dictionary ${form_errors}
462   -
463   -__private__get_all_form_errors
464   - [Documentation] збирає всі помилки форм на сторінці
465   -
466   - ${errors} = execute javascript
467   - ... var errors = {};
468   - ... $('.has-error .help-block-error').each(function () {
469   - ... var cssClass = $(this).attr('class'), text = $(this).text();
470   - ... cssClass = cssClass.replace("help-block-error", "");
471   - ... cssClass = cssClass.replace("help-block", "");
472   - ... errors[cssClass] = text;
473   - ... });
474   - ... return errors;
475   - [Return] ${errors}
476   -
477   -__private__log
478   - [Arguments] ${msg}
479   - [Documentation] пише в логи
480   -
481   - log ${msg}
482   - log to console ${msg}
483   -
484   -__private__get_element_attribute
485   - [Arguments] ${locator} ${attribute}
486   - [Documentation] повертає значення атрибуту для вказаного елементу
487   -
488   - ${value} = get element attribute ${locator}@${attribute}
489   - [Return] ${value}
490   -
491   -__private__set_element_visible_in_browser_area
492   - [Arguments] ${locator}
493   - [Documentation] робить елемент видимим у вікні браузера
494   -
495   - set element scroll into view ${locator}
496   -
497   -__private__get_site_language_code
498   - [Documentation] повертає код поточної мови сайта
499   -
500   - ${current_language_code} = __private__get_element_attribute ${language_selector_active_element_locator} ${language_selector_active_element_code_attribute_name}
501   - [Return] ${current_language_code}
502   -
503   -__private__check_site_language_code
504   - [Arguments] ${language_code}
505   - [Documentation] повертає чи поточна мова сайту відповідає вказаній
506   -
507   - ${current_language_code} = __private__get_site_language_code
508   - ${is_equal} = set variable if "${current_language_code}" == "${language_code}" ${True} ${False}
509   - [Return] ${is_equal}
510   -
511   -__private__open_site_language_dropdown_and_select_language_by_code
512   - [Arguments] ${language_code}
513   - [Documentation] відкриває випадаючий список мов, обрає потрібну, чекає перезавантаження сторінки
514   -
515   - click visible element ${language_selector_open_element_locator}
516   - ${language_selector_list_element_locator} = replace string ${language_selector_list_element_locator_tpl} %code% ${language_code}
517   - click element ${language_selector_list_element_locator}
518   - ${language_selector_active_element_locator} = replace string ${language_selector_active_element_by_code_locator_tpl} %code% ${language_code}
519   - wait until page contains element ${language_selector_active_element_locator} 30s Language have not changed
520   -
521   -__private__select_classification_code_in_opened_popup
522   - [Arguments] ${code} ${scheme}=${None}
523   - [Documentation] в поточний попап з класифікатором перемикає схему, шукає заданий код в полі пошуку і обирає його
524   -
525   - # check scheme
526   - ${scheme_is_none} = get variable is none ${scheme}
527   - ${scheme} = convert to string ${scheme}
528   - run keyword if ${scheme_is_none} == ${False} and '${scheme}' not in ${site_allowed_schemes} __private__log Scheme "${scheme}" is needed to implement.
529   - return from keyword if ${scheme_is_none} == ${False} and '${scheme}' not in ${site_allowed_schemes}
530   - ${scheme_tab_locator} = replace string ${classification_popup_scheme_tab_locator_tpl} %scheme% ${scheme}
531   - ${scheme_tab_exists} = get is element exist ${scheme_tab_locator}
532   - run keyword if ${scheme_tab_exists} == ${True} click visible element ${scheme_tab_locator}
533   - run keyword if ${scheme_tab_exists} == ${True} wait until tab content is visible ${scheme_tab_locator}
534   - ... ELSE __private__log Classification scheme tab ${scheme} does not exist
535   - # seraching code
536   - input text to visible input and press enter ${classification_popup_search_input_locator} ${code}
537   - ${code} = convert to string ${code}
538   - ${code_item_locator} = replace string ${classification_popup_serach_item_locator_tpl} %code% ${code}
539   - wait until page contains element ${code_item_locator} 90s Specified classification code was not found
540   - click visible element ${code_item_locator}
541   -
542   -Load Sign
543   - run keyword and ignore error click visible element ${plan_form_ecp_btn_locator}
544   - ${loadingfakeKey} = Run keyword And Return Status Wait Until Page Contains Це фейкове накладання ЕЦП 30
545   - run keyword and ignore error Run Keyword If ${loadingfakeKey} == True submit form and check result id=SignDataButton ${qualification_ecp_form_submit_success_msg}
546   - ${loadingKey} = Run keyword And Return Status Wait Until Page Contains Серійний номер 30
547   - Run Keyword If ${loadingfakeKey} == True Fail Далі не ходити
548   - Run Keyword If ${loadingKey} == False Load Sign Data
549   - Wait Until Page Contains Серійний номер 60
550   - submit form and check result id=SignDataButton ${qualification_ecp_form_submit_success_msg}
551   -
552   -Load Sign Data
553   - Wait Until Page Contains Element id=CAsServersSelect 60
554   - Select From List By Label id=CAsServersSelect Тестовий ЦСК АТ "ІІТ"
555   - Wait Until Page Contains Element id=PKeyFileName 60
556   - Choose File id=PKeyFileInput ${CURDIR}/Key-6.dat
557   - Wait Until Page Contains Element id=PKeyPassword 60
558   - Input Text id=PKeyPassword 12345677
559   - Wait Until Page Contains Element id=PKeyReadButton 60
560   - Click Element id=PKeyReadButton
561   -
562   -GetDictionaryKeyExist
563   - [Arguments] ${Dictionary Name} ${Key}
564   - Run Keyword And Return Status Dictionary Should Contain Key ${Dictionary Name} ${Key}
565   -
566   -GetValueFromDictionaryByKey [Arguments] ${Dictionary Name} ${Key}
567   - ${KeyIsPresent}= Run Keyword And Return Status Dictionary Should Contain Key ${Dictionary Name} ${Key}
568   - ${Value}= Run Keyword If ${KeyIsPresent} Get From Dictionary ${Dictionary Name} ${Key}
569   - Return From Keyword ${Value}
570   -
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_variables.robot
5   -Resource playtender_contract_variables.robot
6   -Resource playtender_qualification_variables.robot
7   -
8   -*** Keywords ***
9   -
10   -edit contract
11   - [Arguments] ${contract_index} ${field_name} ${amount} ${field_name2}=${None} ${amount2}=${None}
12   - [Documentation] Редагувати контракт з індексом ${contract_index}
13   - ... для поля field_name та значення amount.
14   -
15   - Run Keyword If '${TEST_NAME}' == 'Неможливість вказати ціну договору з ПДВ більше ніж результат проведення аукціону' and '${mode}' not in 'open_esco' Fail Amount should be less or equal to awarded amount
16   - Run Keyword If '${TEST_NAME}' == 'Неможливість вказати ціну договору з ПДВ більше ніж результат проведення аукціону' and '${mode}' in 'open_esco' Fail Can't update amount for contract value
17   - Run Keyword If '${TEST_NAME}' == 'Неможливість зменшити ціну договору без ПДВ на суму більшу за 20% від ціни договору з ПДВ (закупівля з ПДВ)' Fail Amount should be greater than amountNet and differ by no more than 20.0%
18   - ${complaint_period_end_date} = run keyword if '${mode}' not in 'reporting' get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}
19   - run keyword if '${mode}' not in 'reporting' Wait date ${complaint_period_end_date}
20   - click visible element ${contract_form_0_open_btn_locator}
21   - Run Keyword And Ignore Error Wait Until Page Contains ${contract_contractform_contract_number_input_locator} 10
22   - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 5
23   - wait until element is visible ${contract_contractform_contract_number_input_locator} 10
24   - capture page screenshot
25   - ${file_path} ${file_name} ${file_content} = create_fake_doc
26   - ${value_added_tax_included} = Run Keyword If '${mode}' in 'negotiation reporting' run keyword and return status Checkbox Should Not Be Selected ${contract_contractform_value_added_tax_included_locator}
27   - run keyword if '${mode}' in 'negotiation reporting' and ${value_added_tax_included} Execute Javascript $('[id$="contractform-value_added_tax_included"]').click()
28   -# run keyword if '${mode}' == 'negotiation' and ${value_added_tax_included} click visible element ${contract_contractform_value_added_tax_included_locator}
29   - ${contract_number} = get value by locator on opened page ${contract_contractform_contract_number_input_locator}
30   - Run Keyword If '${contract_number}' == '' input text to exist visible input ${contract_contractform_contract_number_input_locator} 1234567890
31   - capture page screenshot
32   - ${date_signed} = Get Current Date
33   - ${contract_date_signed} = get value by locator on opened page ${contract_contractform_date_signed_input_locator}
34   - Run Keyword If '${contract_date_signed}' == '' input datetime to visible input ${contract_contractform_date_signed_input_locator} ${date_signed}
35   - ${date_start} = Get Current Date increment=02:00:00
36   - ${contract_date_start} = get value by locator on opened page ${contract_contractform_date_start_input_locator}
37   - Run Keyword If '${contract_date_start}' == '' input datetime to visible input ${contract_contractform_date_start_input_locator} ${date_start}
38   - ${date_end} = Get Current Date increment=04:00:00
39   - ${contract_date_end} = get value by locator on opened page ${contract_contractform_date_end_input_locator}
40   - Run Keyword If '${contract_date_end}' == '' input datetime to visible input ${contract_contractform_date_end_input_locator} ${date_end}
41   -
42   - Run Keyword If '${field_name}' == 'value.amount' input number to exist visible input ${contract_contractform_amount_input_locator} ${amount}
43   -# ${budget} = Run Keyword If '${field_name}' == 'value.amount' and '${mode}' == 'negotiation' Set Variable ${amount/0.85}
44   -# Run Keyword If '${field_name}' == 'value.amount' and '${mode}' == 'negotiation' input number to exist visible input ${contract_contractform_amount_input_locator} ${budget}
45   - Run Keyword If '${field_name}' == 'value.amountNet' input number to exist visible input ${contract_contractform_amount_net_input_locator} ${amount}
46   - capture page screenshot
47   - choose file ${add_file_to_contract_contractform_locator} ${file_path}
48   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator} 60
49   - wait until element is visible ${contract_contractform_add_document_type_input_locator} 60
50   - capture page screenshot
51   - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content select[id*="-document_type"]:last').val('contractSigned').change()
52   - capture page screenshot
53   - click visible element ${contract_contractform_add_document_description_btn_locator}
54   - capture page screenshot
55   - wait until element is visible ${contract_contractform_add_document_description_input_locator}
56   - input text to exist visible input ${contract_contractform_add_document_description_input_locator} test2
57   - capture page screenshot
58   - click visible element ${contract_contractform_add_document_close_description_btn_locator}
59   - capture page screenshot
60   -
61   - submit form and check result ${contract_contractform_submit_btn_locator} ${contract_contractform_submit_success_msg} ${contract_active_form_open_btn_locator}
62   -# run keyword and ignore error submit form and check result ${contract_contractform_submit_btn_locator} ${contract_contractform_submit_success_msg} ${contract_active_form_open_btn_locator}
63   - capture page screenshot
64   -
65   -edit unitprices
66   - [Arguments] ${tender_uaid} ${contract_data}
67   - [Documentation] Встановити ціну за одиницю для контракту для користувача username для тендера ${tender_uaid},
68   - ... використовуючи значення з ${contract_data}.
69   -
70   -# Run Keyword If '${TEST_NAME}' == 'Можливість встановити ціну за одиницю для першого контракту' open popup by btn locator ${contract_active_form_agreement_open_btn_locator}
71   - Run Keyword If '${TEST_NAME}' == 'Можливість встановити ціну за одиницю для другого контракту' click visible element ${contract_next_form_agreement_open_btn_locator}
72   -# Run Keyword If '${TEST_NAME}' == 'Можливість встановити ціну за одиницю для другого контракту' open popup by btn locator ${contract_active_form_agreement_open_btn_locator}
73   - Run Keyword If '${TEST_NAME}' == 'Можливість встановити ціну за одиницю для третього контракту' click visible element ${contract_next_form_agreement_open_btn_locator}
74   - open popup by btn locator ${contract_active_form_agreement_open_btn_locator}
75   - input number to exist visible input ${contract_agreement_unit_prices_input_locator} ${contract_data.data.unitPrices.value.amount}
76   -
77   - submit form and check result ${contract_contractform_submit_btn_locator} ${contract_agreement_active_submit_success_msg}
78   - capture page screenshot
79   -
80   -active agreement contract
81   - [Arguments] ${startDate} ${endDate}
82   - [Documentation] Зареєструвати угоду для користувача username для тендера tender_uaid,
83   - ... для поля Початок строку, на який укладається угода задати значення startDate, для Кінець строку, на який укладається угода - endDate.
84   -
85   - open popup by btn locator ${contract_active_agreement_form_open_btn_locator}
86   - capture page screenshot
87   - ${file_path} ${file_name} ${file_content} = create_fake_doc
88   - ${contract_number} = get value by locator on opened page ${contract_agreement_agreement_number_input_locator}
89   - Run Keyword If '${contract_number}' == '' input text to exist visible input ${contract_agreement_agreement_number_input_locator} 1234567890
90   - capture page screenshot
91   - ${date_signed} = Get Current Date
92   - ${contract_date_signed} = get value by locator on opened page ${contract_agreement_date_signed_input_locator}
93   - Run Keyword If '${contract_date_signed}' == '' input datetime to visible input ${contract_agreement_date_signed_input_locator} ${date_signed}
94   - ${date_start} = Get Current Date increment=02:00:00
95   - ${contract_date_start} = get value by locator on opened page ${contract_agreement_date_start_input_locator}
96   - Run Keyword If '${contract_date_start}' == '' input datetime to visible input ${contract_agreement_date_start_input_locator} ${date_start}
97   - ${date_end} = Get Current Date increment=04:00:00
98   - ${contract_date_end} = get value by locator on opened page ${contract_agreement_date_end_input_locator}
99   - Run Keyword If '${contract_date_end}' == '' input datetime to visible input ${contract_agreement_date_end_input_locator} ${date_end}
100   -
101   - capture page screenshot
102   - choose file ${add_file_to_contract_contractform_locator} ${file_path}
103   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator} 60
104   - wait until element is visible ${contract_contractform_add_document_type_input_locator} 60
105   - capture page screenshot
106   - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content select[id*="-document_type"]:last').val('contractSigned').change()
107   - capture page screenshot
108   - click visible element ${contract_contractform_add_document_description_btn_locator}
109   - capture page screenshot
110   - wait until element is visible ${contract_contractform_add_document_description_input_locator}
111   - input text to exist visible input ${contract_contractform_add_document_description_input_locator} test2
112   - capture page screenshot
113   - click visible element ${contract_contractform_add_document_close_description_btn_locator}
114   - capture page screenshot
115   -
116   - submit form and check result ${contract_contractform_submit_btn_locator} ${contract_agreement_submit_success_msg}
117   - capture page screenshot
118   - open popup by btn locator ${contract_active_agreement_active_form_open_btn_locator}
119   - Execute Javascript $('.fancybox-is-open .fancybox-content button.btn.btn-success').click()
120   - capture page screenshot
121   - run keyword and ignore error Load Sign
122   - capture page screenshot
123   - submit form and check result ${qualification_form_submit_btn_locator} ${contract_agreement_active_submit_success_msg} ${None}
124   - capture page screenshot
125   -
1   -*** Variables ***
2   -
3   -#contractform
4   -${contract_form_0_open_btn_locator} = jquery=#contracts-pjax a[href*="/tender/contract?contract"]
5   -${contract_contractform_contract_number_input_locator} = jquery=#contractform-contract_number
6   -${contract_contractform_date_signed_input_locator} = jquery=#contractform-date_signed
7   -${contract_contractform_date_start_input_locator} = jquery=#contractform-date_start
8   -${contract_contractform_date_end_input_locator} = jquery=#contractform-date_end
9   -${contract_contractform_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.btn.btn-success
10   -${contract_contractform_submit_success_msg} = Контракт успішно завантажений
11   -${contract_contractform_amount_input_locator} = jquery=#contractform-value_amount
12   -${contract_contractform_amount_net_input_locator} = jquery=#contractform-value_amount_net
13   -${contract_contractform_active_submit_success_msg} = Контракт успішно активовано, дочекайтесь опублікування на сайті уповноваженого органу.
14   -${contract_contractform_value_added_tax_included_locator} = jquery=#contractform-value_added_tax_included
15   -
16   -#contractform document
17   -${add_file_to_contract_contractform_locator} = jquery=.field-contractform-documents .js-upload-documents input[type$="file"]:first
18   -${contract_contractform_add_document_type_input_locator} = jquery=.js-dynamic-form-content-item:last .document-type select[id*="-document_type"]
19   -${contract_contractform_add_document_description_btn_locator} = jquery=.js-dynamic-form-content-item:last [href$="#edit"]:last
20   -${contract_contractform_add_document_description_input_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in textarea[id*="-description"].form-control
21   -${contract_contractform_add_document_close_description_btn_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in [href$="#close"]
22   -
23   -${contract_active_form_open_btn_locator} = jquery=#contracts-pjax a[href*="/tender/contract-activate"]
24   -${contract_active_form_agreement_open_btn_locator} = jquery=#agreement-contracts-list .tabs__pane.tabs__pane--visible a[href*="/tender/agreement-contract?"]
25   -${contract_next_form_agreement_open_btn_locator} = jquery=#agreement-contracts-list .tabs__item.tabs__item--active_next-child a[id*="tab-agreement-contract"]
26   -${contract_agreement_unit_prices_input_locator} = jquery=.fancybox-is-open input[id$="agreementcontractform-unit_prices"]
27   -${contract_agreement_active_submit_success_msg} = Постачальник успішно підтверджений, триває синхронізація з сайтом уповноваженого органу.
28   -${contract_active_agreement_form_open_btn_locator} = jquery=.aside__inner a[href*="/tender/agreement?"]
29   -${contract_agreement_agreement_number_input_locator} = jquery=#agreementform-agreement_number
30   -${contract_agreement_date_signed_input_locator} = jquery=#agreementform-date_signed
31   -${contract_agreement_date_start_input_locator} = jquery=#agreementform-date_start
32   -${contract_agreement_date_end_input_locator} = jquery=#agreementform-date_end
33   -${contract_agreement_submit_success_msg} = Угода завантажена, наступний крок - її активація.
34   -${contract_active_agreement_active_form_open_btn_locator} = jquery=.aside__inner a[href*="/tender/agreement-activate?"]
35   -${contract_agreement_active_submit_success_msg} = Угода успішно активована!
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_plan_variables.robot
5   -
6   -*** Keywords ***
7   -
8   -update plan queue
9   - [Documentation] запускає оновлення планів з ЦБД і додає їх в чергу, тобто синхронізація може відбутися не відразу
10   - ... поточна сторіка повертається
11   -
12   - ${current_url} = get location
13   - go to ${broker_baseurl}/utils/queue-plan-update
14   - go to ${current_url}
15   -
16   -open new plan form
17   - [Documentation] відкриття сторінки створення плану
18   -
19   - open page and wait element by locator ${broker_baseurl}/plan/create ${plan_form_locator}
20   -
21   -open plan form by uaid
22   - [Arguments] ${plan_uaid}
23   - [Documentation] відкриття сторінки редагування плану
24   -
25   - open plan page by uaid ${plan_uaid}
26   - click visible element and wait until page contains element ${plan_edit_btn_locator} ${plan_form_locator}
27   -
28   -open plan page by uaid
29   - [Arguments] ${uaid} ${refresh}=${True}
30   - [Documentation] відкриває сторінку з планом
31   -
32   - ${current_location} = get location
33   - ${needed_location} = set variable ${broker_baseurl}/plan/${uaid}
34   - run keyword if '${current_location}' != '${needed_location}' or ${refresh} == ${True} open site page and wait content element ${needed_location}
35   - log many 1
36   - ${is_plan_found} = get is element exist ${plan_view_checker_element_locator}
37   - log many 2
38   - return from keyword if ${is_plan_found} == ${True}
39   - log many 3
40   - ${is_plan_not_found} = get is 404 page
41   - ${is_needed_to_update_and_wait_sync} = set variable if ${is_test_role_owner} == ${False} and ${is_plan_not_found} ${True} ${False}
42   - run keyword if ${is_needed_to_update_and_wait_sync} update plan queue
43   - run keyword if ${is_needed_to_update_and_wait_sync} wait until 404 page disappears
44   - ${is_plan_found} = get is element exist ${plan_view_checker_element_locator}
45   - run keyword if ${is_plan_found} == ${False} fail Opening plan page by uaid fails.
46   -
47   -open plan search form
48   - [Documentation] відкриває сторінку з пошуком планів
49   -
50   - open page and wait element by locator ${broker_baseurl}/plans ${plan_search_form_locator}
51   -
52   -fill plan form
53   - [Arguments] ${data}
54   - [Documentation] заповнення відкритої форми з масива даних
55   -
56   - fill plan general info ${data}
57   - ${items} = get from dictionary by keys ${data} items
58   - run keyword if condition is not none ${items} fill plan form items ${items}
59   - ${buyers} = get from dictionary by keys ${data} buyers
60   - run keyword if condition is not none ${buyers} fill plan form buyers ${buyers}
61   -#Пока не передает Дятлов
62   - ${budget_breakdowns} = get from dictionary by keys ${data} budget breakdown
63   - run keyword if condition is not none ${budget_breakdowns} fill plan form budgetbreakdowns ${budget_breakdowns}
64   -# fill plan form budgetbreakdowns
65   -
66   -fill plan general info
67   - [Arguments] ${data}
68   - [Documentation] заповнює приховані поля + відкриває попап основних даних, заповнює його і закриває
69   -
70   - # hidden inputs
71   - ${budget_id} = get from dictionary by keys ${data} budget id
72   - run keyword if condition is not none ${budget_id} input text to hidden input ${plan_form_budget_id_input_locator} ${budget_id}
73   - ${project_id} = get from dictionary by keys ${data} budget project id
74   - run keyword if condition is not none ${project_id} input text to hidden input ${plan_form_project_id_input_locator} ${project_id}
75   - ${project_name} = get from dictionary by keys ${data} budget project name
76   - run keyword if condition is not none ${project_name} input text to hidden input ${plan_form_project_name_input_locator} ${project_name}
77   -
78   - # general info
79   - open popup by btn locator ${plan_form_general_panel_edit_btn_locator}
80   - ${procurement_method_type} = get from dictionary by keys ${data} tender procurementMethodType
81   - run keyword if condition is not none ${procurement_method_type} select from visible list by value ${plan_form_procurement_method_type_input_locator} ${procurement_method_type}
82   - ${budget_description} = get from dictionary by keys ${data} budget description
83   - run keyword if condition is not none ${budget_description} input text to visible input ${plan_form_title_input_locator} ${budget_description}
84   - ${tender_start_date} = get from dictionary by keys ${data} tender tenderPeriod startDate
85   - run keyword if condition is not none ${tender_start_date} select from visible list by year of date ${plan_form_year_input_locator} ${tender_start_date}
86   - run keyword if condition is not none ${tender_start_date} input month.year of date to visible input ${plan_form_tender_start_date_input_locator} ${tender_start_date}
87   - ${amount} = get from dictionary by keys ${data} budget amount
88   - run keyword and ignore error run keyword if condition is not none ${amount} input number to visible input ${plan_form_value_amount_input_locator} ${amount}
89   - ${currency} = get from dictionary by keys ${data} budget currency
90   - run keyword if condition is not none ${currency} select from visible list by value ${plan_form_value_currency_input_locator} ${currency}
91   - ${classification} = get from dictionary by keys ${data} classification
92   - run keyword if condition is not none ${classification} select classification by code attributes ${plan_form_classification_edit_btn_locator} ${classification}
93   - ${additional_classifications} = get from dictionary by keys ${data} additionalClassifications
94   - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_additional_classification_edit_btn_locator} ${additional_classifications} ${None} ${kekv_schemes}
95   - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_kekv_classification_edit_btn_locator} ${additional_classifications} ${kekv_schemes}
96   - Execute Javascript $('[id$="planform-test_mode"]').click()
97   - submit current visible popup
98   -
99   -fill plan form items
100   - [Arguments] ${item_attributes_array}
101   - [Documentation] заповнення номенклатури плану
102   -
103   - :FOR ${item_attributes} IN @{item_attributes_array}
104   - \ ${item_update_index} = get from dictionary by keys ${item_attributes} list_index
105   - \ ${item_update_index_string} = convert to string ${item_update_index}
106   - \ ${open_form_btn_locator} = replace string ${plan_form_update_item_btn_locator_tpl} %index% ${item_update_index_string}
107   - \ run keyword if condition is not none ${item_update_index} click visible element ${open_form_btn_locator}
108   - \ run keyword if condition is none ${item_update_index} click visible element ${plan_form_add_item_btn_locator}
109   - \ wait until popup is visible
110   - \ fill plan item form in opened popup ${item_attributes}
111   - \ run keyword and ignore error submit current visible popup
112   -
113   -fill plan item form in opened popup
114   - [Arguments] ${data}
115   -
116   - fill item form in opened popup ${data}
117   -
118   - ${delivery_end_date} = get from dictionary by keys ${data} deliveryDate endDate
119   - run keyword if condition is not none ${delivery_end_date} run keyword and ignore error input date to input ${item_form_popup_delivery_end_date_input_locator} ${delivery_end_date}
120   -
121   -fill plan form buyers
122   - [Arguments] ${buyer_attributes_array}
123   - [Documentation] заповнення замовника плану
124   -
125   - :FOR ${buyer_attributes} IN @{buyer_attributes_array}
126   - \ click visible element ${plan_form_update_buyer_btn_locator}
127   - \ wait until popup is visible
128   - \ fill buyer form in opened popup ${buyer_attributes}
129   - \ submit current visible popup
130   -
131   -fill buyer form in opened popup
132   - [Arguments] ${data}
133   - [Documentation] заповнює відкриту форму згідно вказаних даних про замовника
134   -
135   - ${legal_name} = get from dictionary by keys ${data} identifier legalName
136   - run keyword if condition is not none ${legal_name} input text to visible input ${buyer_form_popup_legal_name_input_locator} ${legal_name}
137   - ${identifier_id} = get from dictionary by keys ${data} identifier id
138   - run keyword if condition is not none ${identifier_id} input text to visible input ${buyer_form_popup_identifier_id_input_locator} ${identifier_id}
139   -
140   -fill plan form budgetbreakdowns
141   - [Arguments] ${budgetbreakdowns_attributes_array}
142   - [Documentation] заповнення Джерел фінансування плану
143   -
144   - click visible element ${plan_form_update_budgetbreakdowns_btn_locator}
145   - wait until popup is visible
146   - :FOR ${budgetbreakdowns_attributes} IN @{budgetbreakdowns_attributes_array}
147   - \ click visible element ${plan_form_add_budgetbreakdowns_btn_locator}
148   - \ wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
149   - \ fill budgetbreakdowns form in opened popup ${budgetbreakdowns_attributes}
150   -### \ submit current visible popup
151   -## click visible element ${plan_form_add_budgetbreakdowns_btn_locator}
152   -## wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
153   -## fill budgetbreakdowns form in opened popup
154   -# fill budgetbreakdowns form in opened popup ${budgetbreakdowns_attributes}
155   - submit current visible popup
156   -
157   -fill budgetbreakdowns form in opened popup
158   - [Arguments] ${data}
159   - [Documentation] заповнює відкриту форму згідно вказаних даних про Джерела фінансування
160   -
161   - ${title} = get from dictionary by keys ${data} title
162   - run keyword if condition is not none ${title} select from visible list by label ${plan_budgetbreakdowns_form_popup_title_input_locator} ${title}
163   - ${value_amount} = get from dictionary by keys ${data} value amount
164   - run keyword if condition is not none ${value_amount} input number to visible input ${plan_budgetbreakdowns_value_amount_input_locator} ${value_amount}
165   -## input number to visible input ${plan_budgetbreakdowns_value_amount_input_locator} 56333.77
166   - ${description} = get from dictionary by keys ${data} description
167   - run keyword if condition is not none ${description} input text to visible input ${plan_budgetbreakdowns_description_input_locator} ${description}
168   -## input text to visible input ${plan_budgetbreakdowns_description_input_locator} description
169   -
170   -save plan form and wait synchronization
171   - [Documentation] натискає кнопку "Зберегти" і чекає синхронізації плану
172   -
173   - submit form and check result ${plan_form_submit_btn_locator} ${plan_form_submit_success_msg} ${plan_created_checker_element_locator}
174   - wait until page does not contain element with reloading ${plan_sync_element_locator}
175   -
176   -delete plan
177   - [Arguments] ${data}
178   - [Documentation] натискає кнопку "Скасувати рядок плану" і видаляє план
179   -
180   - click visible element ${plan_delete_btn_locator}
181   - ${reason} = get from dictionary by keys ${data} reason
182   - run keyword if condition is not none ${reason} input text to visible input ${plan_form_delete_reason_value_locator} ${reason}
183   - submit form and check result ${plan_form_delete_sucess_btn_locator} ${plan_form_delete_submit_success_msg}
1   -*** Variables ***
2   -
3   -# plan form
4   -${plan_form_submit_success_msg} = Рядок плану завантажений, наступний крок - накладання ЕЦП/КЕП і підтвердження
5   -#${plan_form_submit_success_msg} = дочекайтесь опублікування на сайті уповноваженого органу
6   -${plan_form_locator} = id=plan-form
7   -${plan_form_general_panel_edit_btn_locator} = jquery=#General .panel-heading .js-form-popup-update
8   -${plan_form_procurement_method_type_input_locator} = id=planform-procurement_method_type
9   -${plan_form_budget_id_input_locator} = id=planform-budget_id
10   -${plan_form_project_id_input_locator} = id=planform-project_id
11   -${plan_form_project_name_input_locator} = id=planform-project_name
12   -${plan_form_title_input_locator} = id=planform-title
13   -${plan_form_year_input_locator} = id=planform-year
14   -${plan_form_tender_start_date_input_locator} = id=planform-tender_start_date
15   -${plan_form_value_amount_input_locator} = id=planform-value_amount-disp
16   -${plan_form_value_currency_input_locator} = id=planform-value_currency
17   -${plan_form_classification_edit_btn_locator} = jquery=.field-planform-classification_id .js-classification-input-wrapper [data-toggle="classification"]
18   -${plan_form_additional_classification_edit_btn_locator} = jquery=.field-planform-additional_classification_ids .js-additional-classification-input-wrapper [data-toggle="additional-classification"]
19   -${plan_form_kekv_classification_edit_btn_locator} = jquery=.field-planform-additional_classification_ids_kekv .js-additional-classification-input-wrapper [data-toggle="additional_classification_ids_kekv"]
20   -${plan_form_add_item_btn_locator} = jquery=#Items .js-form-popup-add
21   -${plan_form_update_item_btn_locator_tpl} = jquery=#Items .js-form-popup-panel:nth(%index%) .panel-heading .js-form-popup-update
22   -${plan_form_remove_item_btn_locator_tpl} = jquery=#Items .js-form-popup-panel[data-title*="%title%"] .panel-heading .js-form-popup-remove
23   -${plan_form_update_buyer_btn_locator} = jquery=#Buyer .js-form-popup-update
24   -${plan_form_submit_btn_locator} = jquery=#plan-form .js-submit-btn
25   -${plan_created_checker_element_locator} = id=plan-part-pjax
26   -${plan_form_update_budgetbreakdowns_btn_locator} = jquery=#BudgetBreakdowns .js-form-popup-update
27   -${plan_form_add_budgetbreakdowns_btn_locator} = jquery=#budgetbreakdowns-form-popup a[href*="#add-budgetBreakdowns"]
28   -${plan_budgetbreakdowns_form_popup_title_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-title"]
29   -${plan_budgetbreakdowns_value_amount_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-value_amount-disp"]
30   -#${plan_budgetbreakdowns_value_amount_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-value_amount"]
31   -${plan_budgetbreakdowns_description_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-description"]
32   -
33   -# plan view
34   -${plan_view_checker_element_locator} = id=plan-general-info
35   -${plan_sync_element_locator} = jquery=#aside-part-pjax .status-label .fa-refresh
36   -${plan_uaid_text_locator} = jquery=#plan-general-info .plan-id .value
37   -${plan_edit_btn_locator} = jquery=#aside-part-pjax a[href*="plan/update"]
38   -${plan_delete_btn_locator} = jquery=#aside-part-pjax a[href*="/plan/cancel"]
39   -# -- for viewer --
40   -${plan_tender_procurementMethodType_value_locator} = jquery=#plan-general-info .procurement-method-type.hidden
41   -${plan_budget_amount_value_locator} = jquery=#plan-general-info .budget-amount.hidden
42   -${plan_budget_amount_value_type} = float
43   -${plan_budget_description_value_locator} = jquery=#plan-general-info .budget-description .value
44   -${plan_budget_currency_value_locator} = jquery=#plan-general-info .budget-currency.hidden
45   -${plan_budget_id_value_locator} = jquery=#plan-general-info .budget-id .value
46   -${plan_procuringEntity_name_value_locator} = jquery=#plan-general-info .organization .definitions__list .organization_name.hidden .definitions__value
47   -${plan_procuringEntity_identifier_scheme_value_locator} = jquery=#plan-general-info .organization .definitions__list .identifier_scheme.hidden .definitions__value
48   -${plan_procuringEntity_identifier_id_value_locator} = jquery=#plan-general-info .organization .definitions__list .identifier_code .definitions__value
49   -${plan_procuringEntity_identifier_legalName_value_locator} = jquery=#plan-general-info .organization .definitions__list .identifier_legal_name.hidden .definitions__value
50   -${plan_classification_description_value_locator} = jquery=#plan-general-info .main-classification-description.hidden
51   -${plan_classification_scheme_value_locator} = jquery=#plan-general-info .main-classification-scheme.hidden
52   -${plan_classification_id_value_locator} = jquery=#plan-general-info .main-classification-code.hidden
53   -${plan_tender_tenderPeriod_startDate_value_locator} = jquery=#plan-general-info .tender-start-date-source.hidden
54   -${plan_items_0_description_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .description
55   -#${plan_items_0_description_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .textvalue
56   -${plan_items_0_quantity_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .quantity-source
57   -${plan_items_0_quantity_value_type} = float
58   -${plan_items_0_deliveryDate_endDate_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .delivery-end-date-source
59   -#${plan_items_0_deliveryDate_endDate_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .delivery-end-date-source
60   -${plan_items_0_unit_code_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .unit-code-source
61   -${plan_items_0_unit_name_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .unit-title-source
62   -${plan_items_0_classification_description_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .main-classification-description
63   -${plan_items_0_classification_scheme_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .main-classification-scheme
64   -${plan_items_0_classification_id_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .main-classification-code
65   -#${plan_items_0_unit_code_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .unit-code-source
66   -#${plan_items_0_unit_name_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .unit-title-source
67   -#${plan_items_0_classification_description_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .main-classification-description
68   -#${plan_items_0_classification_scheme_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .main-classification-scheme
69   -#${plan_items_0_classification_id_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .main-classification-code
70   -${plan_items_1_description_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .textvalue
71   -${plan_items_1_quantity_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .quantity-source
72   -${plan_items_1_quantity_value_type} = float
73   -${plan_items_1_deliveryDate_endDate_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .delivery-end-date-source
74   -${plan_items_1_unit_code_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .unit-code-source
75   -${plan_items_1_unit_name_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .unit-title-source
76   -${plan_items_1_classification_description_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .main-classification-description
77   -${plan_items_1_classification_scheme_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .main-classification-scheme
78   -${plan_items_1_classification_id_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .main-classification-code
79   -${plan_status_value_locator} = jquery=#aside-part-pjax .opstatus.hidden
80   -
81   -# plan index + search
82   -${plan_search_form_locator} = id=plan-filter-form
83   -##${plan_search_form_query_input_locator} = jquery=#plan-filter-form .dynamic-search-query input
84   -${plan_search_form_query_input_locator} = jquery=#plan-filter-form [data-ds-filter="query"] input.select2-search__field
85   -${plan_search_form_result_locator_tpl} = jquery=#plan-list .lots__item .lot__characteristic li:contains(%query%)
86   -
87   -${plan_form_ecp_btn_locator} = id=submitBtn
88   -
89   -#for delete
90   -${plan_form_delete_reason_value_locator} = id=plancancellationform-reason
91   -${plan_form_delete_sucess_btn_locator} = jquery=.btn.btn-success:contains("Скасувати")
92   -${plan_form_delete_submit_success_msg} = Рядок плану закупівлі успішно скасований
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_variables.robot
5   -Resource playtender_bid_variables.robot
6   -Resource playtender_qualification_variables.robot
7   -
8   -*** Keywords ***
9   -
10   -
11   -open tender form prequalification
12   - [Arguments] ${qualification_num}
13   - [Documentation] Відкрити форму прекваліфікації і потрібну кваліфікацію під номером qualification_num
14   -
15   - run keyword if ${qualification_num} == 0 wait until page contains element with reloading ${prequalification_form_0_open_btn_locator}
16   - run keyword if ${qualification_num} == 0 open popup by btn locator ${prequalification_form_0_open_btn_locator}
17   - run keyword if ${qualification_num} == 1 open popup by btn locator ${prequalification_form_1_open_btn_locator}
18   - run keyword if ${qualification_num} == -1 open popup by btn locator ${prequalification_form_-1_open_btn_locator}
19   - run keyword if ${qualification_num} == -2 wait until page contains element with reloading ${prequalification_form_-2_open_btn_locator}
20   - run keyword if ${qualification_num} == -2 open popup by btn locator ${prequalification_form_-2_open_btn_locator}
21   -# run keyword if ${qualification_num} == -2 execute javascript $('#bids-pjax .pseudo-table__row:last a[href*="/tender/prequalification"]').click()
22   -
23   -confirm qualifications
24   - [Documentation] Відкрити форму прекваліфікації і перевести кваліфікацію під номером qualification_num до тендера
25   - ... tender_uaid в статус active.
26   -
27   - Execute Javascript $('#prequalificationform-decision').val('accept').change()
28   - capture page screenshot
29   - wait until page contains element ${prequalification_form_eligible_input_locator}
30   - capture page screenshot
31   - click visible element ${prequalification_form_eligible_input_locator}
32   - click visible element ${prequalification_form_qualified_input_locator}
33   - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_submit_success_msg} ${tender_created_checker_element_locator}
34   -
35   -reject qualifications
36   - [Documentation] Відкрити форму прекваліфікації і перевестикваліфікацію під номером qualification_num до тендера
37   - ... tender_uaid в статус unsuccessful.
38   -
39   - Execute Javascript $('#prequalificationform-decision').val('decline').change()
40   - capture page screenshot
41   -# wait until page contains element ${qualification_form_reasons_cancellation_input_locator}
42   -# capture page screenshot
43   -# input text to exist visible input ${qualification_form_reasons_cancellation_input_locator} GenerateFakeText
44   - Execute Javascript ${prequalification_form_title_cancellation_input_locator}
45   - capture page screenshot
46   -# input text to exist visible input ${qualification_form_reasons_cancellation_input_locator} GenerateFakeText
47   - input text to exist visible input ${prequalification_form_description_cancellation_input_locator} GenerateFakeText
48   - capture page screenshot
49   - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_decline_success_msg} ${tender_created_checker_element_locator}
50   - capture page screenshot
51   -
52   -cancel qualifications
53   - [Documentation] Відкрити форму прекваліфікації і перевести кваліфікацію під номером qualification_num до тендера
54   - ... tender_uaid в статус cancelled.
55   -
56   - wait until page contains element ${prequalification_form_description_cancellation_input_locator}
57   - Execute Javascript $('#prequalificationform-decision').val('cancel').change()
58   -# select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}
59   - capture page screenshot
60   - wait until page contains element ${prequalification_form_description_cancellation_input_locator}
61   - capture page screenshot
62   - input text to exist visible input ${prequalification_form_description_cancellation_input_locator} GenerateFakeText
63   - capture page screenshot
64   - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_cancel_success_msg} ${tender_created_checker_element_locator}
65   -
66   -approve the final qualification decision
67   - [Documentation] Перевести тендер tender_uaid в статус active.pre-qualification.stand-still.
68   -
69   - wait until alert is visible ${qualification_form_approve_question_msg}
70   - click visible element ${alert_confirm_btn_locator}
71   - wait until alert is visible ${qualification_form_approve_success_msg}
72   - close current visible alert
73   -
74   - wait until page does not contain element ${alert_confirm_btn_locator}
75   -
76   -# wait until page contains ${qualification_form_approve_question_msg}
77   -# Execute Javascript ${qualification_form_approve_js_submit_btn_locator}
78   -# Wait Until Page Contains ${qualification_form_approve_success_msg} 60
79   -# wait until alert is visible ${qualification_form_approve_success_msg}
80   -# run keyword and ignore error run keyword if condition is not none ${qualification_form_approve_success_msg} close current visible alert
81   - run keyword and ignore error Wait Until Keyword Succeeds 1600 s 20 s Wait For QualificationsPeriodEnd
82   -
83   -#qualification
84   -open tender form qualification
85   - [Arguments] ${award_num}
86   - [Documentation] Відкрити форму кваліфікації і потрібну кваліфікацію під номером award_num
87   -
88   - run keyword if "${mode}" not in "open_framework" Run Keywords
89   - ... run keyword if ${award_num} == 0 wait until page contains element with reloading ${qualification_form_0_open_btn_locator}
90   - ... AND run keyword if ${award_num} == 0 open popup by btn locator ${qualification_form_0_open_btn_locator}
91   -##### BOF - TMP #####
92   - ... AND run keyword if ${award_num} == 1 open popup by btn locator ${qualification_form_1_open_btn_locator}
93   - ... AND run keyword if ${award_num} == -1 open popup by btn locator ${qualification_form_last_open_btn_locator}
94   - ... AND run keyword if ${award_num} == 2 open popup by btn locator ${qualification_form_2_open_btn_locator}
95   - ... ELSE IF "${mode}" in "open_framework" Run Keywords
96   - ... run keyword if ${award_num} == 0 wait until page contains element with reloading ${qualification_form_0_open_btn_locator}
97   - ... AND run keyword if ${award_num} == 0 open popup by btn locator ${qualification_form_0_open_btn_locator}
98   - ... AND run keyword if ${award_num} == 1 open popup by btn locator ${qualification_form_1_open_btn_locator}
99   - ... AND run keyword if ${award_num} == -1 open popup by btn locator ${qualification_form_last_open_btn_locator}
100   - ... AND run keyword if ${award_num} == 2 open popup by btn locator ${qualification_form_2_open_btn_locator}
101   - ... AND run keyword if ${award_num} == 3 open popup by btn locator ${qualification_form_3_open_btn_locator}
102   -
103   -copy file qualification
104   - [Arguments] ${username} ${document} ${award_num}
105   - [Documentation] Завантажити документ, який знаходиться по шляху document до
106   - ... постачальника під номером award_num для тендера tender_uaid.
107   -
108   - ## copy file to another dir to prevent it deleting
109   - ${new_doc_name} = Replace String ${document} /tmp/ /tmp/playtender/
110   - Copy File ${document} ${new_doc_name}
111   - Set To Dictionary ${USERS.users['${username}']} qproposal${award_num}_document=${new_doc_name}
112   -
113   -confirm award qualification
114   - [Arguments] ${username} ${award_num}
115   - [Documentation] Перевести постачальника під номером award_num для тендера tender_uaid
116   - ... в статус active.
117   -
118   - Wait Until Page Contains ${popup_opened_content_success_locator} 60
119   - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10
120   - wait until element is visible ${qualification_form_submit_btn_locator} 60
121   -# ${doc_isset}= GetDictionaryKeyExist ${USERS.users['${username}']} qproposal${award_num}_document
122   -# ${doc_name}= Run Keyword If ${doc_isset} GetValueFromDictionaryByKey ${USERS.users['${username}']} qproposal${award_num}_document
123   -# ... ELSE create_fake_doc
124   - ${file_path} ${file_name} ${file_content} = create_fake_doc
125   -# Execute Javascript ${qualification_form_accept_input_locator}
126   - Execute Javascript $('#qualificationform-decision').val('accept').change()
127   -# select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}
128   - capture page screenshot
129   - run keyword and ignore error wait until page contains element ${qualification_form_eligible_input_locator}
130   - capture page screenshot
131   -# run keyword and ignore error click visible element ${qualification_form_eligible_input_locator}
132   -# run keyword and ignore error click visible element ${qualification_form_qualified_input_locator}
133   - run keyword and ignore error Execute Javascript $('#qualificationform-qualified').click()
134   - run keyword and ignore error Execute Javascript $('#qualificationform-eligible').click()
135   - choose file ${add_file_to_qualification_form_locator} ${file_path}
136   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator} 60
137   - wait until element is visible ${qualification_form_add_document_type_input_locator} 60
138   -# submit current visible popup
139   -
140   - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content select[id*="-document_type"]:last').val('winningBid').change()
141   - capture page screenshot
142   - click visible element ${qualification_form_add_document_description_btn_locator}
143   - capture page screenshot
144   - wait until element is visible ${qualification_form_add_document_description_input_locator}
145   - input text to exist visible input ${qualification_form_add_document_description_input_locator} test2
146   - capture page screenshot
147   - click visible element ${qualification_form_add_document_close_description_btn_locator}
148   - capture page screenshot
149   -
150   - run keyword and ignore error click visible element ${qualification_ecp_check_input_locator}
151   - capture page screenshot
152   - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_form_submit_success_msg} ${qualification_form_submit_btn_locator}
153   - capture page screenshot
154   - wait until element is visible ${qualification_form_submit_btn_locator} 60
155   -## run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${None} ${qualification_ecp_form_open_locator}
156   - Execute Javascript $('.fancybox-is-open .fancybox-content button.btn.btn-success').click()
157   -# click visible element ${qualification_form_submit_btn_locator}
158   - capture page screenshot
159   - wait until element is visible ${qualification_form_submit_btn_locator} 60
160   - wait until element is visible ${qualification_ecp_form_open_locator} 60
161   - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10
162   - capture page screenshot
163   - run keyword and ignore error Load Sign
164   - capture page screenshot
165   - wait until element is visible ${qualification_form_submit_btn_locator} 60
166   - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10
167   - capture page screenshot
168   - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_after_ecp_form_submit_success_msg} ${None}
169   - capture page screenshot
170   -# Wait Until Page Contains ЕЦП/КЕП успішно накладено на рішення, тепер потрібно підтвердити рішення. 60
171   -# click visible element xpath=//div[contains(@class, 'jconfirm')]//*[text()='Закрити']
172   -
173   -
174   -reject award qualification
175   - [Arguments] ${username} ${award_num}
176   - [Documentation] Перевести постачальника під номером award_num для тендера tender_uaid
177   - ... в статус active.
178   -
179   - Wait Until Page Contains ${popup_opened_content_success_locator} 60
180   - wait until element is visible ${qualification_form_submit_btn_locator} 60
181   -# wait until popup is visible
182   - ${doc_isset} = GetDictionaryKeyExist ${USERS.users['${username}']} qproposal${award_num}_document
183   -# ${doc_name} = Run Keyword If ${doc_isset} GetValueFromDictionaryByKey ${USERS.users['${username}']} qproposal${award_num}_document
184   -# ... ELSE GenerateFakeDocument
185   - ${file_path} ${file_name} ${file_content} = create_fake_doc
186   - Execute Javascript $('#qualificationform-decision').val('decline').change()
187   - capture page screenshot
188   -# select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}
189   - wait until page contains element ${qualification_form_reasons_cancellation_input_locator}
190   - capture page screenshot
191   - Execute Javascript ${qualification_award_form_title_cancellation_input_locator}
192   - capture page screenshot
193   -# input text to exist visible input ${qualification_form_reasons_cancellation_input_locator} GenerateFakeText
194   - input text to exist visible input ${qualification_form_description_cancellation_input_locator} GenerateFakeText
195   -
196   - choose file ${add_file_to_qualification_form_locator} ${file_path}
197   - wait until element is visible ${qualification_form_add_document_type_input_locator}
198   -# submit current visible popup
199   -
200   - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content #qualification-documents select[id*="-document_type"]:last').val('winningBid').change()
201   - capture page screenshot
202   - click visible element ${qualification_form_add_document_description_btn_locator}
203   - wait until element is visible ${qualification_form_add_document_description_input_locator}
204   - input text to exist visible input ${qualification_form_add_document_description_input_locator} test2
205   - capture page screenshot
206   - click visible element ${qualification_form_add_document_close_description_btn_locator}
207   - capture page screenshot
208   -
209   - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_cancell_success_msg}
210   - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10
211   - capture page screenshot
212   - Execute Javascript $('.fancybox-is-open .fancybox-content button.btn.btn-success').click()
213   - capture page screenshot
214   - run keyword and ignore error Load Sign
215   - capture page screenshot
216   - wait until element is visible ${qualification_form_submit_btn_locator} 60
217   - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10
218   - capture page screenshot
219   - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_after_ecp_form_submit_success_msg} ${None}
220   - capture page screenshot
221   - reload page
222   -
223   -cancel award qualification
224   - [Documentation] Відкрити форму кваліфікації і перевести кваліфікацію під номером qualification_num до тендера
225   - ... tender_uaid в статус cancelled.
226   -
227   - wait until element is visible ${qualification_form_submit_btn_locator} 60
228   -# Execute Javascript ${qualification_form_cancel_input_locator}
229   - Execute Javascript $('#qualificationform-decision').val('cancel').change()
230   -# select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}
231   - capture page screenshot
232   - run keyword and ignore error wait until page contains element ${qualification_form_description_cancellation_input_locator}
233   - capture page screenshot
234   - run keyword and ignore error Execute Javascript ${qualification_award_form_title_decline_input_locator}
235   - run keyword and ignore error input text to exist visible input ${qualification_form_description_cancellation_input_locator} GenerateFakeText
236   - capture page screenshot
237   - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_cancel_success_msg} ${tender_created_checker_element_locator}
238   -
239   -#qualification awawd reporting and negotiotion
240   -confirm award
241   - [Arguments] ${document}
242   - [Documentation] Перевести постачальника в статус active.
243   -
244   - run keyword and ignore error run keyword if '${mode}' in 'negotiation reporting' Wait Until Page Contains ${award_form_negotiation_submit_success_msg} 10
245   -# run keyword and ignore error run keyword if '${mode}' in 'negotiation reporting' wait until alert is visible ${award_form_negotiation_submit_success_msg}
246   - run keyword and ignore error run keyword if '${mode}' in 'negotiation reporting' close current visible alert
247   -
248   - capture page screenshot
249   - wait until page contains element with reloading ${qualification_form_0_open_btn_locator}
250   - open popup by btn locator ${qualification_form_0_open_btn_locator}
251   -# ${file_path} ${file_name} ${file_content} = create_fake_doc
252   - Execute Javascript $('#qualificationform-decision').val('accept').change()
253   - capture page screenshot
254   -# run keyword and ignore error wait until page contains element ${award_form_qualified_input_locator}
255   - capture page screenshot
256   - run keyword and ignore error click visible element ${award_form_qualified_input_locator}
257   - choose file ${add_file_to_qualification_form_locator} ${document}
258   -# wait until page does not contain element ${popup_dynamic_form_loading_element_locator} 60
259   - wait until element is visible ${qualification_form_add_document_type_input_locator} 60
260   -# submit current visible popup
261   -
262   - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content select[id*="-document_type"]:last').val('winningBid').change()
263   - capture page screenshot
264   - click visible element ${qualification_form_add_document_description_btn_locator}
265   - capture page screenshot
266   - wait until element is visible ${qualification_form_add_document_description_input_locator}
267   - input text to exist visible input ${qualification_form_add_document_description_input_locator} test2
268   - capture page screenshot
269   - click visible element ${qualification_form_add_document_close_description_btn_locator}
270   - capture page screenshot
271   -
272   -# run keyword and ignore error run keyword if '${mode}' in 'reporting' submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_form_submit_success_msg}
273   - capture page screenshot
274   -# run keyword and ignore error run keyword if '${mode}' in 'reporting' wait until page contains element with reloading ${qualification_form_0_open_btn_locator}
275   - capture page screenshot
276   -# run keyword and ignore error run keyword if '${mode}' in 'reporting' open popup by btn locator ${qualification_form_0_open_btn_locator}
277   - run keyword and ignore error run keyword if '${mode}' in 'reporting' Execute Javascript $('[id$="qualificationform-tender_not_signed_qualification_confirmation_required"]').click()
278   - capture page screenshot
279   -# run keyword and ignore error run keyword if '${mode}' in 'reporting' Execute Javascript $('#qualificationform-decision').val('accept').change()
280   - run keyword and ignore error run keyword if '${mode}' in 'negotiation' Execute Javascript $('[id$="qualificationform-qualified"]').click()
281   - capture page screenshot
282   - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_form_submit_success_msg} ${qualification_form_submit_btn_locator}
283   - capture page screenshot
284   - run keyword and ignore error click visible element ${qualification_ecp_check_input_locator}
285   - capture page screenshot
286   - wait until element is visible ${qualification_form_submit_btn_locator} 60
287   -# run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${None} ${qualification_ecp_form_open_locator}
288   - Execute Javascript $('.fancybox-is-open .fancybox-content button.btn.btn-success').click()
289   -# click visible element ${qualification_form_submit_btn_locator}
290   - capture page screenshot
291   - wait until element is visible ${qualification_form_submit_btn_locator} 60
292   - wait until element is visible ${qualification_ecp_form_open_locator} 60
293   - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10
294   - capture page screenshot
295   - run keyword and ignore error Load Sign
296   - capture page screenshot
297   - wait until element is visible ${qualification_form_submit_btn_locator} 60
298   - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10
299   - capture page screenshot
300   - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_after_ecp_form_submit_success_msg} ${None}
301   - capture page screenshot
302   -
303   -confirm awards
304   - [Documentation] Перевести постачальників для тендера tender_uaid
305   - ... в статус active.
306   -
307   - wait until page contains element with reloading ${qualification_agreement_form_approve_submit_btn_locator} 720 30
308   - click visible element ${qualification_agreement_form_approve_submit_btn_locator}
309   - wait until page contains ${qualification_agreement_form_approve_question_msg}
310   - Execute Javascript ${qualification_form_approve_js_submit_btn_locator}
311   - Wait Until Page Contains ${qualification_agreement_form_approve_success_msg} 60
312   - wait until alert is visible ${qualification_agreement_form_approve_success_msg}
313   - run keyword and ignore error run keyword if condition is not none ${qualification_agreement_form_approve_success_msg} close current visible alert
314   - Wait Until Keyword Succeeds 800 s 20 s Wait For QualificationsPeriodEnd
315   -
316   -
1   -*** Variables ***
2   -
3   -#qualification
4   -${prequalification_form_0_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index="0"] a[href*="/tender/prequalification"]
5   -${prequalification_form_1_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index="1"] a[href*="/tender/prequalification"]
6   -${prequalification_form_2_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index="2"] a[href*="/tender/prequalification"]
7   -${prequalification_form_3_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index="3"] a[href*="/tender/prequalification"]
8   -${prequalification_form_-1_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-negative-index="-1"] a[href*="/tender/prequalification"]
9   -${prequalification_form_-2_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-negative-index="-2"] a[href*="/tender/prequalification"]
10   -${prequalification_form_last_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index-last] a[href*="/tender/prequalification"]
11   -${prequalification_form_approve_open_btn_locator} = jquery=.aside__inner a[href*="/tender/prequalification-approve"]
12   -${prequalification_form_accept_input_locator} = $('#prequalificationform-decision').val('accept').change()
13   -${prequalification_form_decline_input_locator} = $('#prequalificationform-decision').val('decline').change()
14   -${prequalification_form_cancel_input_locator} = $('#prequalificationform-decision').val('cancel').change()
15   -${prequalification_form_eligible_input_locator} = jquery=#prequalificationform-eligible
16   -${prequalification_form_qualified_input_locator} = jquery=#prequalificationform-qualified
17   -${qualification_form_reasons_cancellation_input_locator} = jquery=.fancybox-is-open .select2-search__field
18   -${prequalification_form_title_cancellation_input_locator} = $('#prequalificationform-title').val('Тендерна пропозиція не відповідає вимогам тендерної документації').change()
19   -${prequalification_form_description_cancellation_input_locator} = jquery=#prequalificationform-description
20   -
21   -${qualification_form_submit_success_msg} = Пропозиція прийнята
22   -${qualification_form_decline_success_msg} = Пропозиція відхилена
23   -${qualification_form_cancel_success_msg} = Рішення скасоване
24   -${qualification_form_cancell_success_msg} = Рішення завантажене, тепер потрібно накласти ЕЦП/КЕП.
25   -${qualification_form_approve_question_msg} = Ви впевнені що бажаєте завершити прекваліфікацію і перейти до наступного етапу?
26   -${qualification_form_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.btn.btn-success
27   -${qualification_form_approve_submit_btn_locator} = jquery=.jconfirm-box-container .btn.btn-default
28   -${qualification_form_approve_success_msg} = Прекваліфікація підтверджена, дочекайтесь опублікування на сайті уповноваженого органу.
29   -${qualification_form_approve_js_submit_btn_locator} = $('.jconfirm-box-container .btn.btn-default').click()
30   -${qualification_agreement_form_approve_submit_btn_locator} = jquery=.aside__inner a.js-qualification-approve
31   -${qualification_agreement_form_approve_success_msg} = Кваліфікація підтверджена, дочекайтесь опублікування на сайті уповноваженого органу.
32   -${qualification_agreement_form_approve_question_msg} = Ви впевнені що бажаєте завершити кваліфікацію і перейти до наступного етапу?
33   -
34   -${qualification_form_0_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index="0"] a[href*="/tender/qualification"]
35   -${qualification_form_1_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index="1"] a[href*="/tender/qualification"]
36   -${qualification_form_2_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index="2"] a[href*="/tender/qualification"]
37   -${qualification_form_3_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index="3"] a[href*="/tender/qualification"]
38   -${qualification_form_last_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index-last] a[href*="/tender/qualification"]
39   -${qualification_form_eligible_input_locator} = jquery=#qualificationform-eligible
40   -${qualification_form_qualified_input_locator} = jquery=#qualificationform-qualified
41   -${qualification_award_form_submit_success_msg} = Рішення завантажене, тепер потрібно накласти ЕЦП/КЕП.
42   -${qualification_award_after_ecp_form_submit_success_msg} = Рішення підтверджене, очікує опублікування на сайті уповноваженого органу.
43   -${qualification_ecp_form_submit_success_msg} = ЕЦП/КЕП успішно накладено
44   -#${qualification_ecp_form_submit_success_msg} = ЕЦП/КЕП успішно накладено на рішення, тепер потрібно підтвердити рішення.
45   -${qualification_ecp_form_open_locator} = jquery=.modal.modal-xs.fancybox-content
46   -${qualification_ecp_check_input_locator} = jquery=input[id$="form-signing"]
47   -${qualification_award_form_title_cancellation_input_locator} = $('#qualificationform-title').val('Тендерна пропозиція не відповідає вимогам тендерної документації').change()
48   -${qualification_award_form_title_decline_input_locator} = $('#qualificationform-title').val('Переможець відмовився від підписання договору про закупівлю відповідно до вимог тендерної документації або укладення договору про закупівлю').change()
49   -${qualification_form_description_cancellation_input_locator} = jquery=#qualificationform-description
50   -${qualification_form_approve_open_btn_locator} = jquery=.aside__inner a[href*="/tender/qualification-approve"]
51   -${qualification_form_accept_input_locator} = $('#qualificationform-decision').val('accept').change()
52   -${qualification_form_decline_input_locator} = $('#qualificationform-decision').val('decline').change()
53   -${add_file_to_qualification_form_locator} = jquery=.field-qualificationform-documents .js-upload-documents input[type$="file"]:first
54   -${qualification_form_cancel_input_locator} = $('#qualificationform-decision').val('cancel').change()
55   -${qualification_form_add_document_type_input_locator} = jquery=.js-dynamic-form-content-item:last .document-type select[id*="-document_type"]
56   -${qualification_form_add_document_description_btn_locator} = jquery=.js-dynamic-form-content-item:last [href$="#edit"]:last
57   -${qualification_form_add_document_description_input_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in textarea[id*="-description"].form-control
58   -${qualification_form_add_document_close_description_btn_locator} = jquery=#qualification-documents .js-actions-wrapper:last .popover.fade.top.in [href$="#close"]
59   -#${qualification_form_add_document_close_description_btn_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in [href$="#close"]
60   -
61   -#award reporting and negotiotion
62   -${award_form_qualified_input_locator} = jquery=#qualificationform-qualified
63   -${award_form_negotiation_submit_success_msg} = Інформація о постачальниках успішно онвлена.
64   -
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_question_variables.robot
5   -
6   -*** Keywords ***
7   -
8   -add question
9   - [Arguments] ${username} ${tender_uaid} ${type} ${type_id} ${question}
10   - [Documentation] Створити запитання з question в описі для тендера tender_uaid.
11   -
12   - click visible element ${question_form_open_btn_locator}
13   - open popup by btn locator ${question_form_open_create_btn_locator}
14   - Wait Until Page Contains ${popup_opened_content_success_locator} 60
15   - wait until element is visible ${question_form_create_questionform_title_input_locator} 60
16   - wait until popup is visible
17   -# input text to exist visible input ${question_form_open_form_answer_input_locator} ${question.data.answer}
18   - Run Keyword If '${type}' == 'tender' Select From List By Label ${question_form_create_questionform_related_of_input_locator} Закупівля
19   - Run Keyword If '${type}' == 'lot' Select From List By Label ${question_form_create_questionform_related_of_input_locator} Лот
20   - Run Keyword If '${type}' == 'lot' run keyword and ignore error Click Element ${question_form_create_questionform_related_lot_input_locator}
21   - ${question_form_create_questionform_related_lot_input_locator} = Run Keyword If '${type}' == 'lot' replace string ${question_form_create_questionform_related_lot_input_locator_tpl} %type_id% ${type_id}
22   - Run Keyword If '${type}' == 'lot' run keyword and ignore error Click Element ${question_form_create_questionform_related_lot_input_locator}
23   - Run Keyword If '${type}' == 'item' Select From List By Label ${question_form_create_questionform_related_of_input_locator} Предмет закупівлі
24   - Run Keyword If '${type}' == 'item' run keyword and ignore error Click Element ${question_form_create_questionform_related_item_input_locator}
25   - ${question_form_create_questionform_related_item_input_locator} = Run Keyword If '${type}' == 'item' replace string ${question_form_create_questionform_related_item_input_locator_tpl} %type_id% ${type_id}
26   - Run Keyword If '${type}' == 'item' run keyword and ignore error Click Element ${question_questionform_related_item_input_locator}
27   - input text to exist visible input ${question_form_create_questionform_title_input_locator} ${question.data.title}
28   - input text to exist visible input ${question_form_create_questionform_description_input_locator} ${question.data.description}
29   - submit form and check result ${question_form_answer_submit_btn_locator} ${question_form_submit_success_msg} ${tender_created_checker_element_locator} ${true}
30   -# click visible element ${question_form_answer_submit_btn_locator}
31   - wait until page does not contain element with reloading ${tender_sync_element_locator}
32   - sleep 5
33   -
34   -answer question
35   - [Arguments] ${answer_data} ${question_id}
36   - [Documentation] Дати відповідь answer_data на запитання з question_id в описі для тендера tender_uaid.
37   -
38   - click visible element ${question_form_open_btn_locator}
39   - ${question_open_form_answer_locator} = replace string ${question_open_form_answer_btn_locator_tpl} %title% ${question_id}
40   - wait until page contains element with reloading ${question_open_form_answer_locator}
41   - ${question_form_open_form_answer_btn_locator} = replace string ${question_form_open_form_answer_btn_locator_tpl} %title% ${question_id}
42   - wait until page contains element with reloading ${question_form_open_form_answer_btn_locator}
43   - open popup by btn locator ${question_form_open_form_answer_btn_locator}
44   - input text to exist visible input ${question_answer_form_answer_input_locator} ${answer_data.data.answer}
45   - submit form and check result ${question_answer_form_submit_btn_locator} ${question_form_submit_answer_success_msg} ${true}
46   -
47   -get question information
48   - [Arguments] ${question_id} ${field_name}
49   - [Documentation] Отримати значення поля field_name із запитання з question_id
50   - ... в описі для тендера tender_uaid.
51   -
52   - submit form and check result ${bid_form_refresh_btn_locator} ${bid_form_refresh_success_msg} ${tender_created_checker_element_locator} ${true}
53   - click visible element ${question_form_open_btn_locator}
54   - ${question_open_form_answer_locator} = replace string ${question_open_form_answer_btn_locator_tpl} %title% ${question_id}
55   - wait until page contains element with reloading ${question_open_form_answer_locator}
56   - ${question_title_value_locator} = Run Keyword If 'title' == '${field_name}' replace string ${question_title_value_locator_tpl} %title% ${question_id}
57   - ${question_answer_value_locator} = Run Keyword If 'answer' == '${field_name}' replace string ${question_answer_value_locator_tpl} %title% ${question_id}
58   - ${question_description_value_locator} = Run Keyword If 'description' == '${field_name}' replace string ${question_description_value_locator_tpl} %title% ${question_id}
59   - Run Keyword If 'answer' == '${field_name}' wait until page contains element with reloading ${question_answer_value_locator}
60   - ${return_value} = Run Keyword If 'title' == '${field_name}' get_text ${question_title_value_locator}
61   - ... ELSE Run Keyword If 'answer' == '${field_name}' get_text ${question_answer_value_locator}
62   - ... ELSE Run Keyword If 'description' == '${field_name}' get_text ${question_description_value_locator}
63   - [Return] ${return_value}
64   -
65   -
1   -*** Variables ***
2   -
3   -#question
4   -${question_form_open_btn_locator} = jquery=#aside-part-pjax a[href*="/tender/questions"]
5   -${question_open_form_answer_btn_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"]
6   -#${question_open_form_answer_js_btn_locator_tpl} = $('#tender-question-list .js-item div[data-title*="%title%"] .btn.btn-default').click()
7   -#${question_form_open_form_answer_btn_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] .btn.btn-default
8   -${question_open_form_answer_js_btn_locator_tpl} = $('#tender-question-list .js-item div[data-title*="%title%"] .btn.btn-success.btn-custom').click()
9   -${question_form_open_form_answer_btn_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] .btn.btn-success.btn-custom
10   -${question_form_open_form_answer_input_locator} = jquery=.fancybox-is-open .fancybox-content #tender-question-answer-form #questionanswerform-answer
11   -${question_form_answer_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.js-submit-btn
12   -${question_form_submit_answer_success_msg} = Відповідь на питання успішно надана.
13   -${question_form_create_question_btn_locator} = jquery=#aside-part-pjax [data-url*="/tender/question-create"]
14   -${question_form_create_questionform_related_of_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-related_of
15   -${question_form_create_questionform_related_item_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-related_item
16   -${question_form_create_questionform_related_item_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content #questionform-related_item option:contains("%type_id%")
17   -${question_form_create_questionform_title_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-title
18   -${question_form_create_questionform_description_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-description
19   -${question_form_submit_success_msg} = Запитання створене.
20   -${question_form_create_questionform_related_lot_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-related_lot
21   -${question_form_create_questionform_related_lot_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-related_lot
22   -${question_form_create_questionform_related_lot_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content #questionform-related_lot option:contains("%type_id%")
23   -${question_form_open_create_btn_locator} = jquery=#tender-part-pjax a[href*="/tender/question-create"]:first
24   -
25   -${question_answer_form_answer_input_locator} = jquery=#questionanswerform-answer
26   -${question_answer_form_submit_btn_locator} = jquery=#tender-question-answer-form .js-submit-btn
27   -
28   -#for viewer
29   -${question_answer_value_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] .info-row.answer span.value
30   -${question_title_value_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] h4.callout__title
31   -${question_description_value_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] .info-row.description span.value
32   -
33   -${popup_locator} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content
34   -
1   -# -*- coding: utf-8 -
2   -import re
3   -import copy
4   -import urllib
5   -import urllib3
6   -import string
7   -
8   -import dateutil.parser
9   -from iso8601 import parse_date
10   -from robot.libraries.BuiltIn import BuiltIn
11   -from datetime import datetime, timedelta
12   -import pytz
13   -
14   -TZ = pytz.timezone('Europe/Kiev')
15   -
16   -def get_library():
17   - return BuiltIn().get_library_instance('Selenium2Library')
18   -
19   -
20   -def get_webdriver_instance():
21   - return get_library()._current_browser()
22   -
23   -
24   -# return of variable is None
25   -def get_variable_is_none(variable):
26   - if variable is None:
27   - return True
28   - return False
29   -
30   -
31   -# run specified keyword if condition is not none type
32   -def run_keyword_if_condition_is_not_none(condition, name, *args):
33   - if get_variable_is_none(condition) == False:
34   - BuiltIn().run_keyword(name, *args)
35   -
36   -
37   -# run specified keyword if condition is none type
38   -def run_keyword_if_condition_is_none(condition, name, *args):
39   - if get_variable_is_none(condition) == True:
40   - BuiltIn().run_keyword(name, *args)
41   -
42   -
43   -# return value for *keys (nested) in `element` (dict).
44   -def get_from_dictionary_by_keys(element, *keys):
45   - if not isinstance(element, dict):
46   - raise AttributeError('keys_exists() expects dict as first argument.')
47   - if len(keys) == 0:
48   - raise AttributeError('keys_exists() expects at least two arguments, one given.')
49   -
50   - _element = element
51   - for key in keys:
52   - try:
53   - _element = _element[key]
54   - except KeyError:
55   - return None
56   - return _element
57   -
58   -
59   -# returns if element exists on page. optimization
60   -def get_is_element_exist(locator):
61   - jquery_locator = convert_locator_to_jquery(locator)
62   - if get_variable_is_none(jquery_locator) == False:
63   - jquery_locator = jquery_locator.replace('"', '\\"')
64   - length = get_webdriver_instance().execute_script('return $("' + jquery_locator + '").length;')
65   - return length > 0
66   -
67   - try:
68   - get_library()._element_find(locator, None, True)
69   - except Exception:
70   - return False
71   - return True
72   -
73   -
74   -# click
75   -def js_click_element(locator):
76   - element = get_library()._element_find(locator, None, True)
77   - get_webdriver_instance().execute_script(
78   - 'var $el = jQuery(arguments[0]); if($el.length) $el.click();',
79   - element
80   - )
81   -
82   -
83   -# convert locator to jquery locator
84   -def convert_locator_to_jquery(locator):
85   - locator_params = locator.split('=', 1)
86   - if locator_params[0] == 'id':
87   - return '#' + locator_params[1]
88   - if locator_params[0] == 'jquery':
89   - return locator_params[1]
90   - if locator_params[0] == 'css':
91   - return locator_params[1]
92   - return None
93   -
94   -
95   -# set scroll to element in view
96   -def set_element_scroll_into_view(locator):
97   - element = get_library()._element_find(locator, None, True)
98   - get_webdriver_instance().execute_script(
99   - 'var $el = jQuery(arguments[0]); if($el.length) $el.get(0).scrollIntoView();',
100   - element
101   - )
102   -
103   -
104   -# return text/value by specified locator
105   -def get_value_by_locator(locator):
106   - element = get_library()._element_find(locator, None, True)
107   - text = get_webdriver_instance().execute_script(
108   - 'var $element = jQuery(arguments[0]);'
109   - 'if($element.is("input[type=checkbox]")) return $element.is(":checked") ? "1":"0";'
110   - 'if($element.is("input,textarea,select")) return $element.val();'
111   - 'return $element.text();',
112   - element
113   - )
114   - return text
115   -
116   -
117   -# input text to hidden input
118   -def input_text_to_hidden_input(locator, text):
119   - element = get_library()._element_find(locator, None, True)
120   - get_webdriver_instance().execute_script(
121   - 'jQuery(arguments[0]).val("' + text.replace('"', '\\"') + '");',
122   - element
123   - )
124   -
125   -
126   -# select option by label for hidden select
127   -def select_from_hidden_list_by_label(locator, label):
128   - element = get_library()._element_find(locator, None, True)
129   - get_webdriver_instance().execute_script(
130   - 'var $option = jQuery("option:contains(' + label.replace('"', '\\"') + ')", arguments[0]);' +
131   - 'if($option.length) jQuery(arguments[0]).val($option.attr("value"));',
132   - element
133   - )
134   -
135   -
136   -# trigger change event for input by locator
137   -def trigger_input_change_event(locator):
138   - element = get_library()._element_find(locator, None, True)
139   - get_webdriver_instance().execute_script(
140   - 'var $el = jQuery(arguments[0]); if($el.length) $el.trigger("change");',
141   - element
142   - )
143   -
144   -
145   -# convert all numners to string
146   -def convert_float_to_string(number):
147   - return repr(float(number))
148   -
149   -
150   -def convert_esco__float_to_string(number):
151   - return '{0:.5f}'.format(float(number))
152   -
153   -
154   -def convert_float_to_string_3f(number):
155   - return '{0:.3f}'.format(float(number))
156   -
157   -
158   -# convert any variable to specified type
159   -def convert_to_specified_type(value, type):
160   - value = "%s" % (value)
161   - if type == 'integer':
162   - value = value.split()
163   - value = ''.join(value)
164   - print(value)
165   - value = int(value)
166   - if type == 'float':
167   - value = value.split()
168   - value = ''.join(value)
169   - print(value)
170   - value = float(value)
171   - return value
172   -
173   -
174   -# prepare isodate in needed format
175   -def isodate_format(isodate, format):
176   - iso_dt = parse_date(isodate)
177   - return iso_dt.strftime(format)
178   -
179   -
180   -def procuring_entity_name(tender_data):
181   - tender_data.data.procuringEntity['name'] = u"ТОВ \"ПлейТендер\""
182   - tender_data.data.procuringEntity['name_en'] = u"TOV \"playtender\""
183   - tender_data.data.procuringEntity.identifier['id'] = u"1234567890-playtender"
184   - tender_data.data.procuringEntity.identifier['legalName'] = u"ТОВ \"ПлейТендер\""
185   - tender_data.data.procuringEntity.identifier['legalName_en'] = u"TOV \"playtender\""
186   - if 'address' in tender_data.data.procuringEntity:
187   - tender_data.data.procuringEntity.address['region'] = u"м. Київ"
188   - tender_data.data.procuringEntity.address['postalCode'] = u"123123"
189   - tender_data.data.procuringEntity.address['locality'] = u"Київ"
190   - tender_data.data.procuringEntity.address['streetAddress'] = u"address"
191   - if 'contactPoint' in tender_data.data.procuringEntity:
192   - tender_data.data.procuringEntity.contactPoint['name'] = u"Test ЗамовникОборони"
193   - tender_data.data.procuringEntity.contactPoint['name_en'] = u"Test"
194   - tender_data.data.procuringEntity.contactPoint['email'] = u"chuzhin@mail.ua"
195   - tender_data.data.procuringEntity.contactPoint['telephone'] = u"+3801111111111"
196   - tender_data.data.procuringEntity.contactPoint['url'] = u"http://playtender.com.ua"
197   - if 'buyers' in tender_data.data:
198   - tender_data.data.buyers[0]['name'] = u"ТОВ \"ПлейТендер\""
199   - tender_data.data.buyers[0].identifier['id'] = u"1234567890-playtender"
200   - tender_data.data.buyers[0].identifier['legalName'] = u"ТОВ \"ПлейТендер\""
201   - return tender_data
202   -
203   -# prepare data
204   -def prepare_procuring_entity_data(data):
205   - try:
206   - data['name'] = u"Playtender"
207   - data.identifier['id'] = u"playtender"
208   - data.identifier['legalName'] = u"Playtender"
209   - data.identifier['scheme'] = u"UA-EDR"
210   - if 'name_en' in data:
211   - data['name_en'] = u"Playtender"
212   - if 'legalName_en' in data.identifier:
213   - data.identifier['legalName_en'] = u"Playtender"
214   - if 'address' in data:
215   - data.address['countryName'] = u"Україна"
216   - data.address['locality'] = u"Київ"
217   - data.address['postalCode'] = u"01111"
218   - data.address['region'] = u"місто Київ"
219   - data.address['streetAddress'] = u"вулиця Тестова, 220, 8"
220   - if 'contactPoint' in data:
221   - data.contactPoint['email'] = u"chuzhin@mail.ua"
222   - data.contactPoint['faxNumber'] = u"+3801111111111"
223   - data.contactPoint['telephone'] = u"+3801111111111"
224   - data.contactPoint['name'] = u"Test"
225   - if 'name_en' in data.contactPoint:
226   - data.contactPoint['name_en'] = u"Test"
227   - data.contactPoint['url'] = u"https://playtender.com.ua"
228   - except Exception:
229   - raise Exception('data is not a dictionary')
230   -
231   -
232   -# prepare data
233   -def prepare_buyers_data(data):
234   - if type(data) is not list:
235   - raise Exception('data is not a list')
236   -
237   - # preventing console errors about changing buyer data in cases
238   - if len(data) != 1:
239   - return
240   -
241   - item = next(iter(data), None)
242   - item['name'] = u"Playtender"
243   - item.identifier['id'] = u"playtender"
244   - item.identifier['legalName'] = u"Playtender"
245   - item.identifier['scheme'] = u"UA-EDR"
246   -
247   -
248   -# prepare dictionary from field path + value
249   -def generate_dictionary_from_field_path_and_value(path, value):
250   - data = dict()
251   - path_keys_list = path.split('.')
252   - if len(path_keys_list) > 1:
253   - key = path_keys_list.pop(0)
254   - value = generate_dictionary_from_field_path_and_value('.'.join(path_keys_list), value)
255   - indexRegex = re.compile(r'(\[(\d+)\]$)')
256   - matchObj = indexRegex.search(key)
257   - print matchObj
258   - if matchObj:
259   - key = indexRegex.sub('', key)
260   - value['list_index'] = matchObj.group(2)
261   - value = [value]
262   - data[key] = value
263   - else:
264   - data = dict()
265   - data[path] = value
266   - return data
267   -
268   -
269   -# Percentage conversion
270   -def multiply_hundred(number):
271   - return number * 100
272   -
273   -
274   -# prepares data for filling form in easiest way
275   -def prepare_tender_data(data_original):
276   - # preventing change data in global view
277   - data = copy.deepcopy(data_original)
278   -
279   - # check if data is for multilot
280   - if 'lots' not in data:
281   - return data
282   -
283   - # moves features to its related items
284   - if 'features' in data:
285   - i = 0
286   - l = len(data['features'])
287   - while i < l:
288   - if data['features'][i]['featureOf'] == 'lot':
289   - for lot in data['lots']:
290   - if lot['id'] == data['features'][i]['relatedItem']:
291   - if 'features' not in lot:
292   - lot['features'] = []
293   - lot['features'].append(data['features'].pop(i))
294   - l = l - 1
295   - i = i - 1
296   - break
297   - if data['features'][i]['featureOf'] == 'item':
298   - for item in data['items']:
299   - if item['id'] == data['features'][i]['relatedItem']:
300   - if 'features' not in item:
301   - item['features'] = []
302   - item['features'].append(data['features'].pop(i))
303   - l = l - 1
304   - i = i - 1
305   - break
306   - i = i + 1
307   -
308   - if 'features' in data:
309   - if len(data['features']) == 0:
310   - del data['features']
311   -
312   - # moves items to its related lots
313   - i = 0
314   - l = len(data['items'])
315   - while i < l:
316   - for lot in data['lots']:
317   - if lot['id'] == data['items'][i]['relatedLot']:
318   - if 'items' not in lot:
319   - lot['items'] = []
320   - lot['items'].append(data['items'].pop(i))
321   - l = l - 1
322   - i = i - 1
323   - break
324   - i = i + 1
325   -
326   - del data['items']
327   -
328   - if 'milestones' not in data:
329   - return data
330   - # moves milestones to its related lots
331   - i = 0
332   - l = len(data['milestones'])
333   - while i < l:
334   - for lot in data['lots']:
335   - if lot['id'] == data['milestones'][i]['relatedLot']:
336   - if 'milestones' not in lot:
337   - lot['milestones'] = []
338   - lot['milestones'].append(data['milestones'].pop(i))
339   - l = l - 1
340   - i = i - 1
341   - break
342   - i = i + 1
343   -
344   - del data['milestones']
345   -
346   - return data
347   -
348   -
349   -def split_agreementDuration(str, type):
350   - if type in 'year':
351   - year_temp = str.split('Y', 1)
352   - value = year_temp[0].split('P', 1)
353   - elif type in 'month':
354   - month_temp = str.split('M', 1)
355   - value = month_temp[0].split('Y', 1)
356   - else:
357   - day_temp = str.split('D', 1)
358   - value = day_temp[0].split('M', 1)
359   - return value[1]
360   -
361   -
362   -def convert_date_to_string_contr(date):
363   - date = dateutil.parser.parse(date)
364   - date = date.strftime("%d.%m.%Y %H:%M:%S")
365   - return date
366   -
367   -def get_value_minimalStepPercentage(value):
368   - value = value / 100
369   - return value
370   -
371   -def set_value_minimalStepPercentage(value):
372   - value = value * 100
373   - return value
374   -
375   -def convert_esco__float_to_string(number):
376   - return '{0:.5f}'.format(float(number))
377   -
378   -def convert_string_to_float(number):
379   - return float(number)
380   -
381   -def download_file(url, file_name, output_dir):
382   - urllib.urlretrieve(url, ('{}/{}'.format(output_dir, file_name)))
383   -
384   -def parse_complaintPeriod_date(date_string):
385   - date_str = datetime.strptime(date_string, "%d.%m.%Y %H:%M")
386   - date = datetime(date_str.year, date_str.month, date_str.day, date_str.hour, date_str.minute, date_str.second,
387   - date_str.microsecond)
388   - date = TZ.localize(date).isoformat()
389   - return date
390   -
391   -def parse_deliveryPeriod_date1(date):
392   - date = dateutil.parser.parse(date)
393   - date = date.strftime("%d.%m.%Y")
394   - return date
395   -
396   -def parse_deliveryPeriod_date(date_string):
397   -# date_str = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%S+03:00")
398   - if '+03' in date_string:
399   - date_str = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%S+03:00")
400   - else:
401   - date_str = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%S+02:00")
402   - date = datetime(date_str.year, date_str.month, date_str.day)
403   - date = date.strftime("%d.%m.%Y")
404   - return date
405   -
406   -def split_joinvalue(str_value):
407   - str_value = str_value.split()
408   - str_value = ''.join(str_value)
409   - print(str_value)
410   - str_value.replace(" ", "")
411   - return str_value
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_variables.robot
5   -Resource playtender_question.robot
6   -Resource playtender_claim.robot
7   -Resource playtender_bid.robot
8   -Resource playtender_viewer.robot
9   -
10   -*** Keywords ***
11   -
12   -open new tender form
13   - [Documentation] відкриття сторінки створення тендеру
14   -
15   - open page and wait element by locator ${broker_baseurl}/tender/create ${tender_form_locator}
16   -
17   -update tender queue
18   - [Documentation] запускає оновлення тендерів з ЦБД і додає їх в чергу, тобто синхронізація може відбутися не відразу
19   - ... поточна сторіка повертається
20   -
21   - ${current_url} = get location
22   - go to ${broker_baseurl}/utils/queue-tender-update
23   - go to ${current_url}
24   -
25   -open tender form by uaid
26   - [Arguments] ${tender_uaid}
27   - [Documentation] відкриття сторінки редагування плану
28   -
29   - open tender page by uaid ${tender_uaid}
30   - click visible element and wait until page contains element ${tender_edit_btn_locator} ${tender_form_locator}
31   -
32   -open tender page by uaid
33   - [Arguments] ${uaid}
34   - [Documentation] відкриває сторінку з тендером
35   -
36   - open site page and wait content element ${broker_baseurl}/tender/${uaid}
37   - ${is_tender_found} = get is element exist ${tender_view_checker_element_locator}
38   - return from keyword if ${is_tender_found} == ${True}
39   - ${is_tender_not_found} = get is 404 page
40   - ${is_needed_to_update_and_wait_sync} = set variable if ${is_test_role_owner} == ${False} and ${is_tender_not_found} ${True} ${False}
41   - run keyword if ${is_needed_to_update_and_wait_sync} update tender queue
42   - run keyword if ${is_needed_to_update_and_wait_sync} wait until 404 page disappears
43   - ${is_tender_found} = get is element exist ${tender_view_checker_element_locator}
44   - run keyword if ${is_tender_found} == ${False} fail Opening tender page by uaid fails.
45   -
46   -
47   -fill tender form
48   - [Arguments] ${data}
49   - [Documentation] заповнення форми з масива даних
50   -
51   - fill tender general info ${data}
52   - ${features} = get from dictionary by keys ${data} features
53   - run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_general_panel_add_feature_btn_locator}
54   - ${items} = get from dictionary by keys ${data} items
55   - run keyword if condition is not none ${items} fill tender form items ${items}
56   - ${milestones} = get from dictionary by keys ${data} milestones
57   - run keyword and ignore error run keyword if condition is not none ${milestones} fill tender form milestones ${milestones}
58   - ${lots} = get from dictionary by keys ${data} lots
59   - run keyword if condition is not none ${lots} fill tender form lots ${lots}
60   - ${supplier_data} = op_robot_tests.tests_files.service_keywords . Test Supplier Data
61   - ##### BOF - TMP for negotiation milestone 1 lot#####
62   - run keyword if '${mode}' in 'reporting' Set Global Variable ${rep_val} ${data.value.amount}
63   - ##### EOF - TMP #####
64   - run keyword if '${mode}' in 'negotiation reporting' fill tender from award reporting ${data.value.amount} ${supplier_data.data.suppliers[0]}
65   - Run Keyword And Ignore Error fill tender required documents
66   - ${procurement_method_type} = get from dictionary by keys ${data} procurementMethodType
67   - Run Keyword And Ignore Error run keyword if '${mode}' in 'openeu open_esco open_framework' or ('${mode}' == 'open_competitive_dialogue' and '${procurement_method_type}' == 'competitiveDialogueEU') fill tender contact person ${data}
68   -# Run Keyword And Ignore Error Execute Javascript $('a.btn.btn-default.btn-update.js-form-popup-add').click()
69   -
70   -fill tender form 2 stage
71   - [Arguments] ${data}
72   - [Documentation] заповнення форми з масива даних
73   -
74   - fill tender general info 2 stage ${data}
75   - ${features} = get from dictionary by keys ${data} features
76   - run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_general_panel_add_feature_btn_locator}
77   - ${items} = get from dictionary by keys ${data} items
78   -# run keyword if condition is not none ${items} fill tender form items ${items}
79   - run keyword if condition is not none ${items} fill tender form ${items}
80   - ${milestones} = get from dictionary by keys ${data} milestones
81   - run keyword and ignore error run keyword if condition is not none ${milestones} fill tender form milestones ${milestones}
82   - ${lots} = get from dictionary by keys ${data} lots
83   - run keyword if condition is not none ${lots} fill tender form lots 2 stage ${lots}
84   - ${supplier_data} = op_robot_tests.tests_files.service_keywords . Test Supplier Data
85   - run keyword if '${mode}' in 'negotiation reporting' fill tender from award reporting ${data.value.amount} ${supplier_data.data.suppliers[0]}
86   - Run Keyword And Ignore Error fill tender required documents
87   -
88   -fill tender general info
89   - [Arguments] ${data}
90   - [Documentation] обирає потрібний тип закупівлі, чекає оновлення форми, вказує мультилотовість, заповнює
91   - ... приховані поля + відкриває попап основних даних, заповнює його і закриває
92   -
93   - Execute Javascript $(window).scrollTop(0)
94   - wait until page does not contain element ${tender_load_form_after_mode_locator}
95   - wait until page contains element ${tender_form_procurement_method_type_input_locator}
96   - capture page screenshot
97   - ${procurement_method_type} = get from dictionary by keys ${data} procurementMethodType
98   - capture page screenshot
99   - run keyword if condition is not none ${procurement_method_type} select from list by value ${tender_form_procurement_method_type_input_locator} ${procurement_method_type}
100   - wait until page does not contain element ${tender_load_form_after_mode_locator}
101   -
102   - ${lots} = get from dictionary by keys ${data} lots
103   - run keyword if condition is not none ${lots} Run Keyword And Ignore Error Execute Javascript $('[id$="form-is_multilot"]').click()
104   - wait until page does not contain element ${tender_load_form_after_mode_locator} 20
105   -
106   - open popup by btn locator ${plan_form_general_panel_edit_btn_locator}
107   - ${plan_path} = Get Variable Value ${ARTIFACT_FILE} artifact_plan.yaml
108   - ${closeFrameworkAgreementSelectionUA_path} = Get Variable Value ${ARTIFACT_FILE} artifact.yaml
109   - ${ARTIFACT} = load_data_from ${plan_path}
110   - run keyword and ignore error run keyword if condition is not none ${ARTIFACT.tender_uaid} input text to visible input ${tender_form_general_tender_plan_id_locator} ${ARTIFACT.tender_uaid}
111   - ${ARTIFACT2} = load_data_from ${closeFrameworkAgreementSelectionUA_path}
112   - run keyword and ignore error run keyword if condition is not none ${ARTIFACT.tender_uaid} input text to visible input ${tender_form_general_agreementid_input_locator} ${ARTIFACT2.tender_uaid}
113   - ${title} = get from dictionary by keys ${data} title
114   - run keyword if condition is not none ${title} input text to visible input ${tender_form_general_tender_title_locator} ${title}
115   - ${title_en} = get from dictionary by keys ${data} title_en
116   - run keyword if condition is not none ${title} input text to exist visible input ${tender_form_general_tender_title_en_locator} ${title_en}
117   - ${description} = get from dictionary by keys ${data} description
118   - run keyword if condition is not none ${title} input text to visible input ${tender_form_general_tender_description_locator} ${description}
119   - ${description_en} = get from dictionary by keys ${data} description_en
120   - run keyword if condition is not none ${title} input text to exist visible input ${tender_form_general_tender_description_en_locator} ${description_en}
121   - ${funders} = get from dictionary by keys ${data} funders
122   - run keyword if condition is not none ${funders} Click Element ${tender_form_general_tender_funder_locator}
123   - run keyword if condition is not none ${funders} fill tender form funders ${funders}
124   - ${amount} = get from dictionary by keys ${data} value amount
125   - run keyword and ignore error run keyword if condition is not none ${amount} run keyword and ignore error input number to exist visible input ${tender_form_general_value_amount_input_locator} ${amount}
126   - ${currency} = get from dictionary by keys ${data} value currency
127   - run keyword if condition is not none ${currency} select from visible list by value ${tender_form_general_value_currency_input_locator} ${currency}
128   - ${value_added_tax_included} = get from dictionary by keys ${data} value valueAddedTaxIncluded
129   - run keyword if condition is not none ${value_added_tax_included} run keyword if ${value_added_tax_included} Execute Javascript $('[id$="form-value_added_tax_included"]').click()
130   -##run keyword and ignore error
131   -
132   -##click element ${tender_form_general_value_added_tax_input_locator}
133   - Execute Javascript $('[id$="form-test_mode"]').click()
134   - ${min_step_amount} = get from dictionary by keys ${data} minimalStep amount
135   - run keyword if condition is not none ${min_step_amount} input number to exist visible input ${tender_form_general_minimalStep_amount_input_locator} ${min_step_amount}
136   - ${main_procurement_category} = get from dictionary by keys ${data} mainProcurementCategory
137   - run keyword if condition is not none ${main_procurement_category} select from visible list by value ${tender_form_general_main_procurement_category_input_locator} ${main_procurement_category}
138   - ${tender_enquiry_period_start_date} = get from dictionary by keys ${data} enquiryPeriod startDate
139   -# run keyword if condition is not none ${tender_enquiry_period_start_date} select from visible list by year of date ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}
140   - run keyword and ignore error run keyword if condition is not none ${tender_enquiry_period_start_date} input datetime to visible input ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}
141   - ${tender_enquiry_period_end_date} = get from dictionary by keys ${data} enquiryPeriod endDate
142   -# run keyword if condition is not none ${tender_enquiry_period_start_date} select from visible list by year of date ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}
143   - run keyword if condition is not none ${tender_enquiry_period_end_date} input datetime to visible input ${tender_enquiry_period_end_date_input_locator} ${tender_enquiry_period_end_date}
144   - ${tender_start_date} = get from dictionary by keys ${data} tenderPeriod startDate
145   - run keyword if condition is not none ${tender_start_date} run keyword and ignore error input datetime to visible input ${tender_tender_period_start_date_input_locator} ${tender_start_date}
146   - ${tender_end_date} = get from dictionary by keys ${data} tenderPeriod endDate
147   - run keyword if condition is not none ${tender_end_date} input datetime to visible input ${tender_tender_period_end_date_input_locator} ${tender_end_date}
148   -# run keyword and ignore error click element ${tender_tender_quick_mode_locator}
149   - run keyword and ignore error Execute Javascript $('[id$="form-quick_mode"]').click()
150   - ${classification} = get from dictionary by keys ${data} classification
151   - run keyword if condition is not none ${classification} select classification by code attributes ${plan_form_classification_edit_btn_locator} ${classification}
152   - ${additional_classifications} = get from dictionary by keys ${data} additionalClassifications
153   - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_additional_classification_edit_btn_locator} ${additional_classifications} ${None} ${kekv_schemes}
154   - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_kekv_classification_edit_btn_locator} ${additional_classifications} ${kekv_schemes}
155   - ${funding_kind} = get from dictionary by keys ${data} fundingKind
156   - run keyword if condition is not none ${funding_kind} select from visible list by value ${tender_form_general_funding_kind_input_locator} ${funding_kind}
157   -#esco
158   - ${nbu_discount_rate} = get from dictionary by keys ${data} NBUdiscountRate
159   - ${nbu_discount_rate} = Run keyword If '${nbu_discount_rate}' != '${None}' set_value_minimalStepPercentage ${nbu_discount_rate}
160   - ${nbu_discount_rate} = Run keyword If '${nbu_discount_rate}' != '${None}' convert_esco__float_to_string ${nbu_discount_rate}
161   - run keyword and ignore error run keyword if condition is not none ${nbu_discount_rate} input number to exist visible input ${tender_form_general_nbu_discount_rate_input_locator} ${nbu_discount_rate}
162   -#closeframework
163   - ${max_awards_count} = get from dictionary by keys ${data} maxAwardsCount
164   - run keyword if condition is not none ${max_awards_count} input text to exist visible input ${tender_form_general_max_awards_count_input_locator} ${max_awards_count}
165   - ${agreement_duration_years} = get from dictionary by keys ${data} agreementDuration
166   - ${agreement_duration_years1}= Run keyword If '${agreement_duration_years}' != '${None}' split_agreementDuration ${agreement_duration_years} year
167   - run keyword if condition is not none ${agreement_duration_years} select from visible list by value ${tender_form_general_agreement_duration_years_input_locator} ${agreement_duration_years1}
168   - ${agreement_duration_months} = get from dictionary by keys ${data} agreementDuration
169   - ${agreement_duration_months1}= Run keyword If '${agreement_duration_months}' != '${None}' split_agreementDuration ${agreement_duration_months} month
170   - run keyword if condition is not none ${agreement_duration_months} select from visible list by value ${tender_form_general_agreement_duration_months_input_locator} ${agreement_duration_months1}
171   - ${agreement_duration_days} = get from dictionary by keys ${data} agreementDuration
172   - ${agreement_duration_days1}= Run keyword If '${agreement_duration_days}' != '${None}' split_agreementDuration ${agreement_duration_years} day
173   - run keyword if condition is not none ${agreement_duration_days} select from visible list by value ${tender_form_general_agreement_duration_days_input_locator} ${agreement_duration_days1}
174   -#closeFrameworkAgreementSelectionUA
175   - ${max_awards_count} = get from dictionary by keys ${data} maxAwardsCount
176   - run keyword if condition is not none ${max_awards_count} input text to exist visible input ${tender_form_general_max_awards_count_input_locator} ${max_awards_count}
177   - ${agreement_duration_years} = get from dictionary by keys ${data} agreementDuration
178   - ${agreement_duration_years1}= Run keyword If '${agreement_duration_years}' != '${None}' split_agreementDuration ${agreement_duration_years} year
179   - run keyword if condition is not none ${agreement_duration_years} select from visible list by value ${tender_form_general_agreement_duration_years_input_locator} ${agreement_duration_years1}
180   - ${agreement_duration_months} = get from dictionary by keys ${data} agreementDuration
181   - ${agreement_duration_months1}= Run keyword If '${agreement_duration_months}' != '${None}' split_agreementDuration ${agreement_duration_months} month
182   - run keyword if condition is not none ${agreement_duration_months} select from visible list by value ${tender_form_general_agreement_duration_months_input_locator} ${agreement_duration_months1}
183   - ${agreement_duration_days} = get from dictionary by keys ${data} agreementDuration
184   - ${agreement_duration_days1}= Run keyword If '${agreement_duration_days}' != '${None}' split_agreementDuration ${agreement_duration_years} day
185   - run keyword if condition is not none ${agreement_duration_days} select from visible list by value ${tender_form_general_agreement_duration_days_input_locator} ${agreement_duration_days1}
186   -#negotiation
187   - ${cause} = get from dictionary by keys ${data} cause
188   - run keyword if condition is not none ${cause} select from visible list by value ${tender_form_general_cause_input_locator} ${cause}
189   - ${cause_description} = get from dictionary by keys ${data} causeDescription
190   - run keyword if condition is not none ${cause_description} input text to visible input ${tender_form_general_cause_description_input_locator} ${cause_description}
191   -#complaints
192   - Run Keyword If '${SUITE_NAME}' == 'Tests Files.Complaints' click visible element ${tender_form_auction_skip_mode_input_locator}
193   - submit current visible popup
194   -
195   -
196   -fill tender general info 2 stage
197   - [Arguments] ${data}
198   - [Documentation] обирає потрібний тип закупівлі, чекає оновлення форми, вказує мультилотовість, заповнює
199   - ... приховані поля + відкриває попап основних даних, заповнює його і закриває
200   -
201   - Execute Javascript $(window).scrollTop(0)
202   - wait until page does not contain element ${tender_load_form_after_mode_locator}
203   - wait until page contains element ${tender_form_procurement_method_type_input_locator}
204   - capture page screenshot
205   - ${procurement_method_type} = get from dictionary by keys ${data} procurementMethodType
206   - capture page screenshot
207   - run keyword if condition is not none ${procurement_method_type} select from list by value ${tender_form_procurement_method_type_input_locator} ${procurement_method_type}
208   - wait until page does not contain element ${tender_load_form_after_mode_locator}
209   -
210   - ${lots} = get from dictionary by keys ${data} lots
211   - run keyword if condition is not none ${lots} Run Keyword And Ignore Error Click Element ${tender_multilot_locator}
212   - wait until page does not contain element ${tender_load_form_after_mode_locator} 20
213   -
214   - open popup by btn locator ${plan_form_general_panel_edit_btn_locator}
215   - ${closeFrameworkAgreementSelectionUA_path} = Get Variable Value ${ARTIFACT_FILE} artifact.yaml
216   - ${ARTIFACT2} = load_data_from ${closeFrameworkAgreementSelectionUA_path}
217   - run keyword and ignore error run keyword if condition is not none ${ARTIFACT.tender_uaid} input text to visible input ${tender_form_general_agreementid_input_locator} ${ARTIFACT2.tender_uaid}
218   - ${main_procurement_category} = get from dictionary by keys ${data} mainProcurementCategory
219   - run keyword if condition is not none ${main_procurement_category} Execute Javascript $('[id$="form-main_procurement_category"]').val('${main_procurement_category}').change()
220   - ${title} = get from dictionary by keys ${data} title
221   - run keyword if condition is not none ${title} input text to visible input ${tender_form_general_tender_title_locator} ${title}
222   - ${title_en} = get from dictionary by keys ${data} title_en
223   - run keyword if condition is not none ${title} input text to exist visible input ${tender_form_general_tender_title_en_locator} ${title_en}
224   - ${description} = get from dictionary by keys ${data} description
225   - run keyword if condition is not none ${title} input text to visible input ${tender_form_general_tender_description_locator} ${description}
226   - ${description_en} = get from dictionary by keys ${data} description_en
227   - run keyword if condition is not none ${title} input text to exist visible input ${tender_form_general_tender_description_en_locator} ${description_en}
228   - ${amount} = get from dictionary by keys ${data} value amount
229   - run keyword and ignore error run keyword if condition is not none ${amount} run keyword and ignore error input number to exist visible input ${tender_form_general_value_amount_input_locator} ${amount}
230   - ${currency} = get from dictionary by keys ${data} value currency
231   - run keyword if condition is not none ${currency} select from visible list by value ${tender_form_general_value_currency_input_locator} ${currency}
232   - ${value_added_tax_included} = get from dictionary by keys ${data} value valueAddedTaxIncluded
233   - run keyword if condition is not none ${value_added_tax_included} run keyword if ${value_added_tax_included} Click Element ${tender_form_general_value_added_tax_input_locator}
234   - ${min_step_amount} = get from dictionary by keys ${data} minimalStep amount
235   - run keyword if condition is not none ${min_step_amount} input number to exist visible input ${tender_form_general_minimalStep_amount_input_locator} ${min_step_amount}
236   - ${tender_enquiry_period_start_date} = get from dictionary by keys ${data} enquiryPeriod startDate
237   -# run keyword if condition is not none ${tender_enquiry_period_start_date} select from visible list by year of date ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}
238   - run keyword if condition is not none ${tender_enquiry_period_start_date} input datetime to visible input ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}
239   - ${tender_enquiry_period_end_date} = get from dictionary by keys ${data} enquiryPeriod endDate
240   -# run keyword if condition is not none ${tender_enquiry_period_start_date} select from visible list by year of date ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}
241   - run keyword if condition is not none ${tender_enquiry_period_end_date} input datetime to visible input ${tender_enquiry_period_end_date_input_locator} ${tender_enquiry_period_end_date}
242   - ${tender_start_date} = get from dictionary by keys ${data} tenderPeriod startDate
243   - run keyword if condition is not none ${tender_start_date} run keyword and ignore error input datetime to visible input ${tender_tender_period_start_date_input_locator} ${tender_start_date}
244   - ${tender_end_date} = get from dictionary by keys ${data} tenderPeriod endDate
245   - run keyword if condition is not none ${tender_end_date} input datetime to visible input ${tender_tender_period_end_date_input_locator} ${tender_end_date}
246   - ${date_start} = Get Current Date increment=03:00:00
247   - run keyword if condition is none ${tender_end_date} input datetime to visible input ${tender_tender_period_end_date_input_locator} ${date_start}
248   - run keyword and ignore error click element ${tender_tender_quick_mode_locator}
249   - ${classification} = get from dictionary by keys ${data} classification
250   - run keyword if condition is not none ${classification} select classification by code attributes ${plan_form_classification_edit_btn_locator} ${classification}
251   - ${additional_classifications} = get from dictionary by keys ${data} additionalClassifications
252   - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_additional_classification_edit_btn_locator} ${additional_classifications} ${None} ${kekv_schemes}
253   - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_kekv_classification_edit_btn_locator} ${additional_classifications} ${kekv_schemes}
254   - ${funding_kind} = get from dictionary by keys ${data} fundingKind
255   - run keyword if condition is not none ${funding_kind} select from visible list by value ${tender_form_general_funding_kind_input_locator} ${funding_kind}
256   -#closeframework
257   - ${max_awards_count} = get from dictionary by keys ${data} maxAwardsCount
258   - run keyword if condition is not none ${max_awards_count} input text to exist visible input ${tender_form_general_max_awards_count_input_locator} ${max_awards_count}
259   - ${agreement_duration_years} = get from dictionary by keys ${data} agreementDuration
260   - ${agreement_duration_years1}= Run keyword If '${agreement_duration_years}' != '${None}' split_agreementDuration ${agreement_duration_years} year
261   - run keyword if condition is not none ${agreement_duration_years} select from visible list by value ${tender_form_general_agreement_duration_years_input_locator} ${agreement_duration_years1}
262   - ${agreement_duration_months} = get from dictionary by keys ${data} agreementDuration
263   - ${agreement_duration_months1}= Run keyword If '${agreement_duration_months}' != '${None}' split_agreementDuration ${agreement_duration_months} month
264   - run keyword if condition is not none ${agreement_duration_months} select from visible list by value ${tender_form_general_agreement_duration_months_input_locator} ${agreement_duration_months1}
265   - ${agreement_duration_days} = get from dictionary by keys ${data} agreementDuration
266   - ${agreement_duration_days1}= Run keyword If '${agreement_duration_days}' != '${None}' split_agreementDuration ${agreement_duration_years} day
267   - run keyword if condition is not none ${agreement_duration_days} select from visible list by value ${tender_form_general_agreement_duration_days_input_locator} ${agreement_duration_days1}
268   -#closeFrameworkAgreementSelectionUA
269   - ${max_awards_count} = get from dictionary by keys ${data} maxAwardsCount
270   - run keyword if condition is not none ${max_awards_count} input text to exist visible input ${tender_form_general_max_awards_count_input_locator} ${max_awards_count}
271   - ${agreement_duration_years} = get from dictionary by keys ${data} agreementDuration
272   - ${agreement_duration_years1}= Run keyword If '${agreement_duration_years}' != '${None}' split_agreementDuration ${agreement_duration_years} year
273   - run keyword if condition is not none ${agreement_duration_years} select from visible list by value ${tender_form_general_agreement_duration_years_input_locator} ${agreement_duration_years1}
274   - ${agreement_duration_months} = get from dictionary by keys ${data} agreementDuration
275   - ${agreement_duration_months1}= Run keyword If '${agreement_duration_months}' != '${None}' split_agreementDuration ${agreement_duration_months} month
276   - run keyword if condition is not none ${agreement_duration_months} select from visible list by value ${tender_form_general_agreement_duration_months_input_locator} ${agreement_duration_months1}
277   - ${agreement_duration_days} = get from dictionary by keys ${data} agreementDuration
278   - ${agreement_duration_days1}= Run keyword If '${agreement_duration_days}' != '${None}' split_agreementDuration ${agreement_duration_years} day
279   - run keyword if condition is not none ${agreement_duration_days} select from visible list by value ${tender_form_general_agreement_duration_days_input_locator} ${agreement_duration_days1}
280   - submit current visible popup
281   -
282   -fill tender form items
283   - [Arguments] ${item_attributes_array}
284   - [Documentation] заповнення номенклатури тендеру
285   -
286   - :FOR ${item_attributes} IN @{item_attributes_array}
287   - \ run keyword and ignore error open popup by btn locator ${tender_form_item_add_edit_btn_locator}
288   -# \ wait until popup is visible
289   - \ fill tender item form in opened popup ${item_attributes}
290   - \ submit current visible popup
291   - \ ${features} = get from dictionary by keys ${item_attributes} features
292   - \ run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_item_panel_add_feature_btn_locator}
293   -
294   -fill tender form items 2 stage
295   - [Arguments] ${item_attributes_array}
296   - [Documentation] заповнення номенклатури тендеру
297   -
298   - :FOR ${item_attributes} IN @{item_attributes_array}
299   - \ run keyword and ignore error open popup by btn locator ${tender_form_item_edit_btn_locator}
300   -# \ wait until popup is visible
301   - \ fill tender item form in opened popup ${item_attributes}
302   - \ submit current visible popup
303   - \ ${features} = get from dictionary by keys ${item_attributes} features
304   - \ run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_item_panel_add_feature_btn_locator}
305   -
306   -fill tender item form in opened popup
307   - [Arguments] ${data}
308   - [Documentation] заповнює відкриту форму згідно вказаних даних
309   -
310   - fill item form in opened popup ${data}
311   -
312   - ${region} = get from dictionary by keys ${data} deliveryAddress region
313   - run keyword if condition is not none ${region} select from visible list by label ${item_form_popup_delivery_region_id_input_locator} ${region}
314   - ${postal_code} = get from dictionary by keys ${data} deliveryAddress postalCode
315   - run keyword if condition is not none ${postal_code} input text to visible input ${item_form_popup_delivery_postal_code_input_locator} ${postal_code}
316   - ${locality} = get from dictionary by keys ${data} deliveryAddress locality
317   - run keyword if condition is not none ${locality} input text to visible input ${item_form_popup_delivery_locality_input_locator} ${locality}
318   - ${street_address} = get from dictionary by keys ${data} deliveryAddress streetAddress
319   - run keyword if condition is not none ${street_address} input text to visible input ${item_form_popup_delivery_street_address_input_locator} ${street_address}
320   - ${delivery_start_date} = get from dictionary by keys ${data} deliveryDate startDate
321   - ${delivery_start_date} = Run keyword If '${delivery_start_date}' != '${None}' parse_deliveryPeriod_date ${delivery_start_date}
322   - run keyword if condition is not none ${delivery_start_date} run keyword and ignore error input datetime to exist visible input ${item_form_popup_delivery_start_date_input_locator} ${delivery_start_date}
323   - ${delivery_end_date} = get from dictionary by keys ${data} deliveryDate endDate
324   - ${delivery_end_date} = Run keyword If '${delivery_end_date}' != '${None}' parse_deliveryPeriod_date ${delivery_end_date}
325   - run keyword if condition is not none ${delivery_end_date} run keyword and ignore error input text ${item_form_popup_delivery_end_date_input_locator} ${delivery_end_date}
326   -## run keyword if condition is not none ${delivery_end_date} run keyword and ignore error input datetime to exist visible input ${item_form_popup_delivery_end_date_input_locator} ${delivery_end_date}
327   -
328   -fill tender form milestones
329   - [Arguments] ${milestone_attributes_array}
330   - [Documentation] заповнення умов оплати тендеру
331   -
332   - open popup by btn locator ${tender_form_milestones_panel_edit_btn_locator}
333   -# click visible element ${tender_form_milestones_panel_edit_btn_locator}
334   -# wait until popup is visible
335   - :FOR ${milestone_attributes} IN @{milestone_attributes_array}
336   - \ click visible element ${milestone_form_popup_add_btn_locator}
337   - \ wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
338   - \ fill milestone form in opened popup ${milestone_attributes}
339   - submit current visible popup
340   -
341   -fill tender form milestones fake
342   - [Documentation] заповнення умов оплати тендеру
343   -
344   - open popup by btn locator ${tender_form_milestones_panel_edit_btn_locator}
345   - click visible element ${milestone_form_popup_add_btn_locator}
346   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
347   - select from visible list by value ${milestone_form_popup_title_input_locator} submissionDateOfApplications
348   - input text to exist visible input ${milestone_form_popup_description_input_locator} submissionDateOfApplications
349   - input text to exist visible input ${milestone_form_popup_percentage_input_locator} 100
350   - select from visible list by value ${milestone_form_popup_code_input_locator} postpayment
351   - input text to exist visible input ${milestone_form_popup_duration_days_input_locator} 145
352   - select from visible list by value ${milestone_form_popup_duration_type_input_locator} working
353   - submit current visible popup
354   -
355   -fill milestone form in opened popup
356   - [Arguments] ${data}
357   - [Documentation] заповнює відкриту форму в активній вкладці згідно вказаних даних
358   -
359   - ${title} = get from dictionary by keys ${data} title
360   - run keyword if condition is not none ${title} select from visible list by value ${milestone_form_popup_title_input_locator} ${title}
361   - ${description} = get from dictionary by keys ${data} description
362   - run keyword if condition is not none ${description} input text to exist visible input ${milestone_form_popup_description_input_locator} ${description}
363   - ${percentage} = get from dictionary by keys ${data} percentage
364   - run keyword if condition is not none ${percentage} input text to exist visible input ${milestone_form_popup_percentage_input_locator} ${percentage}
365   - ${code} = get from dictionary by keys ${data} code
366   - run keyword if condition is not none ${code} select from visible list by value ${milestone_form_popup_code_input_locator} ${code}
367   - ${duration_days} = get from dictionary by keys ${data} duration days
368   - run keyword if condition is not none ${duration_days} input text to exist visible input ${milestone_form_popup_duration_days_input_locator} ${duration_days}
369   - ${duration_type} = get from dictionary by keys ${data} duration type
370   - run keyword if condition is not none ${duration_type} select from visible list by value ${milestone_form_popup_duration_type_input_locator} ${duration_type}
371   -
372   -fill tender form features
373   - [Arguments] ${feature_attributes_array} ${add_btn_locator}
374   - [Documentation] заповнення нецінові крітерії тендеру
375   -
376   - open popup by btn locator ${add_btn_locator}
377   -# click visible element ${add_btn_locator}
378   -# wait until popup is visible
379   - :FOR ${feature_attributes} IN @{feature_attributes_array}
380   -# \ click visible element ${tender_form_features_panel_edit_btn_locator}
381   - \ execute javascript ${tender_form_features_panel_edit_btn_locator}
382   - \ wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
383   - \ fill feature form in opened popup ${feature_attributes}
384   - submit current visible popup
385   -
386   -fill tender form features2
387   - [Arguments] ${feature_attributes_array} ${add_btn_locator}
388   - [Documentation] заповнення нецінові крітерії тендеру
389   -
390   - open popup by btn locator ${add_btn_locator}
391   -# click visible element ${add_btn_locator}
392   -# wait until popup is visible
393   - click visible element ${tender_form_features_panel_edit_btn_locator}
394   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
395   - fill feature form in opened popup ${feature_attributes_array}
396   - submit current visible popup
397   -
398   -fill feature form in opened popup
399   - [Arguments] ${data}
400   - [Documentation] заповнює відкриту форму в активній вкладці згідно вказаних даних
401   -
402   - ${title} = get from dictionary by keys ${data} title
403   - run keyword if condition is not none ${title} input text to exist visible input ${feature_form_popup_title_input_locator} ${title}
404   - ${description} = get from dictionary by keys ${data} description
405   - run keyword if condition is not none ${description} input text to exist visible input ${feature_form_popup_description_input_locator} ${description}
406   - ${title_en} = get from dictionary by keys ${data} title_en
407   - run keyword if condition is not none ${title_en} input text to exist visible input ${feature_form_popup_title_en_input_locator} ${title_en}
408   - ${description_en} = get from dictionary by keys ${data} description
409   - run keyword if condition is not none ${description_en} input text to exist visible input ${feature_form_popup_description_en_input_locator} ${description_en}
410   - ${options} = Get From Dictionary ${data} enum
411   - ${count} = Get Length ${options}
412   - ${ex}= Evaluate ${count} - 1
413   - : FOR ${INDEX} IN RANGE 0 ${count}
414   - \ run keyword if condition is not none ${options[${INDEX}].title} input text to exist visible input ${feature_form_popup_enum_title_input_locator} ${options[${INDEX}].title}
415   - \ run keyword and ignore error input text to exist visible input ${feature_form_popup_enum_title_en_input_locator} test2
416   -# \ run keyword if condition is not none ${options[${INDEX}].title_en} input text to exist visible input ${feature_form_popup_enum_title_en_input_locator} ${options[${INDEX}].title_en}
417   - \ ${value} = convert_float_to_string ${options[${INDEX}].value}
418   - \ ${value} = Convert To Number ${value}
419   - \ ${value} = multiply_hundred ${value}
420   - \ ${value} = convert_float_to_string ${value}
421   - \ run keyword if condition is not none ${options[${INDEX}].value} input text to exist visible input ${feature_form_popup_enum_value_input_locator} ${value}
422   - \ Continue For Loop If '${INDEX}' == '${ex}'
423   - \ Run Keyword If ${count} != 1 click visible element ${feature_form_popup_add-enums_btn_locator}
424   - \ wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
425   -
426   -fill tender form lots
427   - [Arguments] ${lot_attributes_array}
428   - [Documentation] заповнення номенклатури тендеру
429   -
430   - ##### BOF - TMP for negotiation milestone 1 lot#####
431   - ${prepared_tender_data} = Get From Dictionary ${td_railway_crutch} data
432   - ${milestones1} = Run Keyword If "${mode}" in "negotiation" Get From Dictionary ${prepared_tender_data} milestones
433   - ##### EOF - TMP #####
434   - :FOR ${lot_attributes} IN @{lot_attributes_array}
435   - \ run keyword if '${mode}' not in 'open_framework' open popup by btn locator ${tender_form_lots_panel_edit_btn_locator}
436   - \ ... ELSE click visible element ${tender_form_lots_edit_lot1_btn_locator}
437   -# \ open popup by btn locator ${tender_form_lots_panel_edit_btn_locator}
438   -# \ click visible element ${tender_form_lots_panel_edit_btn_locator}
439   -# \ wait until popup is visible
440   - \ fill lot form in opened popup ${lot_attributes}
441   - \ submit current visible popup
442   - \ ${features} = get from dictionary by keys ${lot_attributes} features
443   - \ run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_lot_panel_add_feature_btn_locator}
444   - \ ${milestones} = get from dictionary by keys ${lot_attributes} milestones
445   - \ run keyword if condition is not none ${milestones} fill tender form milestones ${milestones}
446   - \ run keyword if condition is none ${milestones} run keyword if "${mode}" in "negotiation" fill tender form milestones ${milestones1}
447   - \ ${items} = get from dictionary by keys ${lot_attributes} items
448   - \ run keyword if condition is not none ${items} fill tender form items ${items}
449   -
450   -fill tender form lots 2 stage
451   - [Arguments] ${lot_attributes_array}
452   - [Documentation] заповнення номенклатури тендеру
453   -
454   - ##### BOF - TMP for negotiation milestone 1 lot#####
455   - ${prepared_tender_data} = Get From Dictionary ${td_railway_crutch} data
456   - ${milestones1} = Run Keyword If "${mode}" in "negotiation" Get From Dictionary ${prepared_tender_data} milestones
457   - ##### EOF - TMP #####
458   - :FOR ${lot_attributes} IN @{lot_attributes_array}
459   - \ open popup by btn locator ${tender_form_lots_edit_lot1_btn_locator}
460   - ##\ open popup by btn locator ${tender_form_lots_panel_edit_btn_locator}
461   - \ fill lot form in opened popup ${lot_attributes}
462   - \ submit current visible popup
463   - \ ${features} = get from dictionary by keys ${lot_attributes} features
464   - \ run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_lot_panel_add_feature_btn_locator}
465   - \ ${milestones} = get from dictionary by keys ${lot_attributes} milestones
466   - \ run keyword if condition is not none ${milestones} fill tender form milestones ${milestones}
467   - \ run keyword if condition is none ${milestones} run keyword if "${mode}" in "negotiation" fill tender form milestones ${milestones1}
468   - \ run keyword if condition is none ${milestones} run keyword if "${mode}" in "framework_selection" fill tender form milestones fake
469   - \ ${items} = get from dictionary by keys ${lot_attributes} items
470   - \ run keyword if condition is not none ${items} fill tender form items 2 stage ${items}
471   -
472   -fill lot form in opened popup
473   - [Arguments] ${data}
474   - [Documentation] заповнює відкриту форму згідно вказаних даних
475   -
476   - log many ${data}
477   - ${title} = get from dictionary by keys ${data} title
478   - run keyword if condition is not none ${title} input text to visible input ${lot_form_popup_title_input_locator} ${title}
479   - ${title_en} = get from dictionary by keys ${data} title_en
480   - run keyword if condition is not none ${title_en} input text to exist visible input ${lot_form_popup_title_en_input_locator} ${title_en}
481   - ${description} = get from dictionary by keys ${data} description
482   - run keyword if condition is not none ${description} input text to visible input ${lot_form_popup_description_input_locator} ${description}
483   - ${description_en} = get from dictionary by keys ${data} description_en
484   - run keyword if condition is not none ${description_en} input text to exist visible input ${lot_form_popup_description_en_input_locator} ${description_en}
485   - capture page screenshot
486   - ${description_ru} = get from dictionary by keys ${data} description_ru
487   - run keyword if condition is not none ${description_ru} input text to exist visible input ${item_form_popup_description_ru_input_locator} ${description_ru}
488   - ${amount} = get from dictionary by keys ${data} value amount
489   - run keyword if condition is not none ${amount} input number to exist visible input ${lot_form_popup_value_amount_input_locator} ${amount}
490   - ${min_step_amount} = get from dictionary by keys ${data} minimalStep amount
491   - run keyword if condition is not none ${min_step_amount} input number to exist visible input ${lot_form_popup_minimalstep_amount_input_locator} ${min_step_amount}
492   -
493   - ${yearly_payments_percentage_range} = get from dictionary by keys ${data} yearlyPaymentsPercentageRange
494   - ${yearly_payments_percentage_range} = Run keyword If '${yearly_payments_percentage_range}' != '${None}' set_value_minimalStepPercentage ${yearly_payments_percentage_range}
495   - ${yearly_payments_percentage_range} = Run keyword If '${yearly_payments_percentage_range}' != '${None}' convert_esco__float_to_string ${yearly_payments_percentage_range}
496   - run keyword if condition is not none ${yearly_payments_percentage_range} input number to exist visible input ${tender_form_general_yearly_payments_percentage_range_input_locator} ${yearly_payments_percentage_range}
497   - ${minimal_step_percentage} = get from dictionary by keys ${data} minimalStepPercentage
498   - ${minimal_step_percentage} = Run keyword If '${minimal_step_percentage}' != '${None}' set_value_minimalStepPercentage ${minimal_step_percentage}
499   - ${minimal_step_percentage} = Run keyword If '${minimal_step_percentage}' != '${None}' convert_esco__float_to_string ${minimal_step_percentage}
500   - run keyword if condition is not none ${minimal_step_percentage} input number to exist visible input ${tender_form_general_minimal_step_percentage_input_locator} ${minimal_step_percentage}
501   -# ${currency} = get from dictionary by keys ${data} value currency
502   -# run keyword if condition is not none ${currency} select from visible list by value ${tender_form_lots_value_currency_input_locator} ${currency}
503   -# ${valueAddedTaxIncluded} = get from dictionary by keys ${data} value valueAddedTaxIncluded
504   -# run keyword if condition is not none ${valueAddedTaxIncluded} run keyword if ${valueAddedTaxIncluded} Click Element ${tender_form_lots_value_added_tax_input_locator}
505   -
506   -fill tender form funders
507   - [Arguments] ${funder_attributes_array}
508   - [Documentation] заповнення донорів тендеру
509   -
510   - :FOR ${funder_attributes} IN @{funder_attributes_array}
511   - \ ${name} = get from dictionary by keys ${funder_attributes} name
512   - \ run keyword if condition is not none ${name} select from visible list by label ${tender_form_general_tender_funder_name_locator} ${name}
513   -
514   -fill tender required documents
515   - [Documentation] додає документ до усієї закупівлі для успішної валідації форми
516   -
517   - ${file_path} ${file_name} ${file_content} = create_fake_doc
518   - click visible element ${tender_form_general_panel_add_document_btn_locator}
519   - choose file ${add_file_to_form_locator} ${file_path}
520   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
521   - submit current visible popup
522   -
523   -fill tender from award reporting
524   - [Arguments] ${budget} ${award_attributes_array}
525   - [Documentation] заповнення переможця reporting тендеру
526   -
527   - capture page screenshot
528   - run keyword and ignore error click visible element ${tender_form_general_panel_update_award_negotiation_btn_locator}
529   - capture page screenshot
530   -# Run Keyword If "${TEST_NAME}" == "Можливість створити переговорну процедуру" open popup by btn locator ${tender_form_general_panel_add_award_negotiation_btn_locator}
531   - run keyword and ignore error Run Keyword If "${TEST_NAME}" == "Можливість створити переговорну процедуру" open popup by btn locator ${tender_form_general_panel_add_award_negotiation_btn_locator}
532   - ... ELSE IF "${TEST_NAME}" == "Можливість створити звіт про укладений договір" open popup by btn locator ${tender_form_general_panel_update_award_reporting_btn_locator}
533   - capture page screenshot
534   - Run Keyword If "${TEST_NAME}" == "Можливість зареєструвати і підтвердити постачальника до звіту про укладений договір" open popup by btn locator ${tender_form_general_panel_update_award_reporting_btn_locator}
535   - capture page screenshot
536   -# Run Keyword If "${TEST_NAME}" == "Можливість зареєструвати і підтвердити постачальника до переговорної процедури" open popup by btn locator ${tender_form_general_panel_update_award_negotiation_btn_locator}
537   - capture page screenshot
538   - fill award reporting form in opened popup ${budget} ${award_attributes_array}
539   - submit current visible popup
540   -
541   -fill award reporting form in opened popup
542   - [Arguments] ${budget} ${data}
543   - [Documentation] заповнює відкриту форму в активній вкладці згідно вказаних даних
544   -
545   - ${org_name} = get from dictionary by keys ${data} identifier legalName
546   - run keyword if condition is not none ${org_name} input text to exist visible input ${tender_form_award_organization_name_locator} ${org_name}
547   - ${organization_identifier_code} = get from dictionary by keys ${data} identifier id
548   - run keyword if condition is not none ${organization_identifier_code} input text to exist visible input ${tender_form_award_organization_identifier_code_locator} ${organization_identifier_code}
549   - ${award_organization_scale} = get from dictionary by keys ${data} scale
550   - run keyword if condition is not none ${award_organization_scale} select from visible list by value ${tender_form_award_organization_scale_locator} ${award_organization_scale}
551   - ${region} = get from dictionary by keys ${data} address region
552   - run keyword if condition is not none ${region} select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}
553   - ${postal_code} = get from dictionary by keys ${data} address postalCode
554   - run keyword if condition is not none ${postal_code} input text to exist visible input ${tender_form_award_organization_postal_code_locator} ${postal_code}
555   - ${locality} = get from dictionary by keys ${data} address locality
556   - run keyword if condition is not none ${locality} input text to exist visible input ${tender_form_award_organization_locality_locator} ${locality}
557   - ${street_address} = get from dictionary by keys ${data} address streetAddress
558   - run keyword if condition is not none ${street_address} input text to exist visible input ${tender_form_award_organization_street_address_locator} ${street_address}
559   - ${contact_point_name} = get from dictionary by keys ${data} contactPoint name
560   - run keyword if condition is not none ${contact_point_name} input text to exist visible input ${tender_form_award_organization_contact_point_name_locator} ${contact_point_name}
561   - ${contact_point_email} = get from dictionary by keys ${data} contactPoint email
562   - run keyword if condition is not none ${contact_point_email} input text to exist visible input ${tender_form_award_organization_contact_point_email_locator} ${contact_point_email}
563   - ${contact_point_phone} = get from dictionary by keys ${data} contactPoint telephone
564   - run keyword if condition is not none ${contact_point_phone} input text to exist visible input ${tender_form_award_organization_contact_point_phone_locator} ${contact_point_phone}
565   -# ${duration_days} = get from dictionary by keys ${data} contactPoint days
566   -# run keyword if condition is not none ${duration_days} input text to exist visible input ${milestone_form_popup_duration_days_input_locator} ${duration_days}
567   - input number to exist visible input ${tender_form_award_budget_locator} ${budget}
568   -
569   -open tender search form
570   - [Documentation] відкриває сторінку з пошуком тендерів
571   -
572   - open page and wait element by locator ${broker_baseurl}/tenders ${tender_search_form_locator}
573   -
574   -save tender form and wait synchronization
575   - [Documentation] натискає кнопку "Зберегти" і чекає синхронізації тендеру
576   -
577   - submit form and check result ${tender_form_submit_btn_locator} ${tender_form_submit_success_msg} ${tender_created_checker_element_locator} ${true}
578   - wait until page does not contain element with reloading ${tender_sync_element_locator}
579   -
580   -add document in tender
581   - [Arguments] ${filepath}
582   - [Documentation] Завантажити документ, який знаходиться по шляху filepath.
583   -
584   - click visible element ${tender_form_general_panel_edit_add_document_btn_locator}
585   - choose file ${add_file_to_form_locator} ${filepath}
586   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
587   - submit current visible popup
588   -
589   -add document in lot
590   - [Arguments] ${filepath} ${lot_id}
591   - [Documentation] Завантажити в лот (з ідентіфікатором ${lot_id}) документ, який знаходиться по шляху filepath.
592   -
593   - ${open_form_add_doc_lot_btn_locator} = replace string ${tender_form_lot_panel_add_document_btn_locator_tpl} %lot_id% ${lot_id}
594   - click visible element and wait until page contains element ${open_form_add_doc_lot_btn_locator} jquery=.modal.modal-form.js-form-popup.fancybox-content
595   - choose file ${add_file_to_form_locator} ${filepath}
596   - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}
597   - submit current visible popup
598   -
599   -confirm-stage2
600   - [Documentation] Перевести тендер tender_uaid в статус active.stage2.waiting.
601   -
602   - Wait Until Keyword Succeeds 300 s 20 s Wait For stage2button
603   - click visible element ${tender_stage2_open_btn_locator}
604   - Wait Until Page Contains ${tender_stage2_submit_success_msg} 60
605   -# click visible element ${tender_stage2_submit_success_btn_locator}
606   -# submit form and check result ${tender_stage2_submit_success_btn_locator} ${tender_stage2_submit_alert_success_msg} ${tender_created_checker_element_locator}
607   - execute javascript ${tender_stage2_submit_js_success_btn_locator}
608   - Wait Until Page Contains ${tender_stage2_submit_alert_success_msg} 60
609   - wait until alert is visible ${tender_stage2_submit_alert_success_msg}
610   - run keyword and ignore error close current visible alert
611   -
612   -
613   -activate stage 2
614   - [Documentation] Перевести тендер tender_uaid в статус active.tendering.
615   -
616   - open popup by btn locator ${tender_form_general_panel_edit_btn_locator}
617   - ${tender_end_date} = Get Current Date increment=00:35:00
618   - input datetime to visible input ${tender_tender_period_end_date_input_locator} ${tender_end_date}
619   - capture page screenshot
620   - click visible element ${tender_form_general_panel_draft_mode_input_locator}
621   - capture page screenshot
622   - submit current visible popup
623   - capture page screenshot
624   - ${file_path} ${file_name} ${file_content} = create_fake_doc
625   - click visible element ${tender_form_general_panel_document_stage2_input_locator}
626   - choose file ${add_file_to_form_locator} ${file_path}
627   - wait until element is visible ${stage2_form_add_document_type_input_locator}
628   - click visible element ${stage2_form_add_document_description_btn_locator}
629   - capture page screenshot
630   - wait until element is visible ${stage2_form_add_document_description_input_locator}
631   - input text to exist visible input ${stage2_form_add_document_description_input_locator} test2
632   - click visible element ${stage2_form_add_document_close_description_btn_locator}
633   - capture page screenshot
634   - submit current visible popup
635   - capture page screenshot
636   -
637   -fix awards data in global Users variable
638   - [Arguments] ${username}
639   - [Documentation] Фікс для помилки "Resolving variable '${award.value.amount}' failed: AttributeError: value"
640   -
641   - :FOR ${user} IN @{USERS}
642   - \ continue for loop if '${user}' == '${username}'
643   - \ ${is_user_has_data} = run keyword and return status dictionary should contain key ${USERS.users} ${user}
644   - \ continue for loop if ${is_user_has_data} == ${False}
645   - \ ${user_data} = set variable ${USERS.users['${user}']}
646   - \ ${is_user_has_tender_data} = run keyword and return status dictionary should contain key ${user_data} tender_data
647   - \ continue for loop if ${is_user_has_tender_data} == ${False}
648   - \ ${status} ${award_data} = run keyword and ignore error get_from_object ${USERS.users['${user}'].tender_data.data} awards
649   - \ continue for loop if '${status}' != 'PASS'
650   - \ set to object ${USERS.users['${username}'].tender_data.data} awards ${award_data}
651   - \ exit for loop
652   -
653   -fill tender contact person
654   - [Arguments] ${data}
655   - [Documentation] заповнює відкриту форму згідно вказаних даних
656   - run keyword and ignore error open popup by btn locator ${tender_form_cp_edit_btn_locator}
657   - ${organization_name_en} = get from dictionary by keys ${data} procuringEntity name_en
658   - run keyword if condition is not none ${organization_name_en} input text to visible input ${tender_form_organization_name_en_input_locator} ${organization_name_en}
659   - ${contact_point_name_en} = get from dictionary by keys ${data} procuringEntity contactPoint name_en
660   - run keyword if condition is not none ${contact_point_name_en} input text to visible input ${tender_form_contact_point_name_en_input_locator} ${contact_point_name_en}
661   - submit current visible popup
1   -*** Variables ***
2   -
3   -${kekv_schemes} = ["KEKV", "КЕКВ"]
4   -${site_allowed_schemes} = ["ДК021", "ДК015", "ДК018", "ДК003", "specialNorms", "INN", "ATC"]
5   -${page_content_locator} = jquery=.page__content
6   -
7   -# alerts
8   -${alert_opened_locator} = jquery=.jconfirm:last .content
9   -${alert_confirm_btn_locator} = jquery=.jconfirm:last .buttons .js-btn-confirm
10   -${alert_opened_close_btn_locator} = jquery=.jconfirm:last .closeIcon
11   -${alert_message_contains_text_locator_tpl} = jquery=.jconfirm:last .message:contains(%text%)
12   -
13   -# popups
14   -${popup_opened_last_locator} = jquery=.fancybox-is-open:last
15   -${popup_opened_last_submit_btn_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .modal-footer:last .js-submit,.fancybox-is-open:last .fancybox-slide--current .modal-footer:last .js-popup-submit
16   -${popup_opened_content_locator} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content # for checking if it's visible
17   -
18   -# error pages
19   -${error_page_404_checker_element_locator} = jquery=.site-error[data-error-code="404"]
20   -
21   -# language
22   -${language_selector_active_element_locator} = jquery=.languages.page-header__languages .languages__btn
23   -${language_selector_active_element_code_attribute_name} = data-language-code
24   -${language_selector_open_element_locator} = jquery=.languages.page-header__languages .js-popup-open-initiator
25   -${language_selector_active_element_by_code_locator_tpl} = jquery=.languages.page-header__languages .languages__btn[data-language-code='%code%']
26   -${language_selector_list_element_locator_tpl} = jquery=.languages.page-header__languages .popup.languages__menu .languages__link[data-language-code='%code%']
27   -
28   -# classification popup
29   -${classification_popup_opened_content_locator} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content.classification-modal # for checking if it's visible
30   -${classification_popup_scheme_tab_locator_tpl} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content.classification-modal .nav a[data-toggle="tab"][data-scheme="%scheme%"]
31   -${classification_popup_search_input_locator} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content.classification-modal .js-search-wrapper:visible .js-input
32   -${classification_popup_serach_item_locator_tpl} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content.classification-modal .js-search-wrapper:visible .js-search-tree strong:contains(%code%)
33   -
34   -# authorization
35   -${login_popup_open_locator} = jquery=.page__header a[data-action="login"]
36   -${login_popup_login_input_locator} = id=loginform-identity
37   -#${login_popup_login_input_locator} = id=loginform-email
38   -${login_popup_password_input_locator} = id=loginform-password
39   -${login_popup_submit_btn_locator} = jquery=#login-form .js-submit-btn
40   -${user_logged_checker_element_locator} = id=notifications-button # елемент для перевірки чи авторизований користувач
41   -
42   -# item form
43   -${item_form_popup_description_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-description']
44   -${item_form_popup_description_ru_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-description_ru']
45   -${item_form_popup_description_en_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-description_en']
46   -${item_form_popup_quantity_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-quantity']
47   -${item_form_popup_unit_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-unit_id']
48   -${item_form_popup_classification_edit_btn_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content .js-classification-input-wrapper [data-toggle="classification"]
49   -${item_form_popup_additional_classification_edit_btn_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content .js-additional-classification-input-wrapper [data-toggle="additional-classification"]
50   -${item_form_popup_delivery_region_id_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_region_id']
51   -${item_form_popup_delivery_postal_code_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_postal_code']
52   -${item_form_popup_delivery_locality_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_locality']
53   -${item_form_popup_delivery_street_address_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_street_address']
54   -${item_form_popup_delivery_start_date_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_start_date']
55   -${item_form_popup_delivery_end_date_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_end_date']
56   -
57   -# buyer form
58   -${buyer_form_popup_legal_name_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-procuring_entity_name']
59   -${buyer_form_popup_identifier_id_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-procuring_entity_identifier_code']
60   -
61   -# tender form
62   -${tender_load_form_after_mode_locator} = jquery=#tender-form-pjax.loading-wrapper
63   -#${tender_form_submit_success_msg} = дочекайтеся опублікування на сайті уповноваженого органу
64   -${tender_form_submit_success_msg} = опублікування на сайті уповноваженого органу
65   -${tender_form_submit_reporting_success_msg} = Закупівля успішно створена, дочекайтесь закінчення синхронізації, після чого потрібно накласти ЕЦП/КЕП
66   -${tender_form_locator} = id=tender-form
67   -${tender_form_procurement_method_type_input_locator} = jquery=.form-inline [id$="form-procurement_method_type"]
68   -${tender_multilot_locator} = jquery=[id$="form-is_multilot"]
69   -${tender_form_general_panel_edit_btn_locator} = jquery=#General #headingGeneral .actions-wrapper .js-form-popup-update
70   -${tender_form_general_tender_plan_id_locator} = jquery=[id$="form-plan_id"]
71   -${tender_form_general_tender_title_locator} = jquery=[id$="form-title"]
72   -${tender_form_general_tender_title_en_locator} = jquery=[id$="form-title_en"]
73   -${tender_form_general_tender_description_locator} = jquery=[id$="form-description"]
74   -${tender_form_general_tender_description_en_locator} = jquery=[id$="form-description_en"]
75   -${tender_form_general_tender_funder_locator} = jquery=[id$="form-is_donor"]
76   -${tender_form_general_tender_funder_name_locator} = jquery=[id$="-funder_organization_id"]
77   -${tender_form_general_value_amount_input_locator} = jquery=[id$="form-value_amount-disp"]
78   -${tender_form_general_value_currency_input_locator} = jquery=[id$="form-value_currency"]
79   -${tender_form_general_value_added_tax_input_locator} = jquery=[id$="form-value_added_tax_included"]
80   -#${tender_form_general_minimalStep_amount_input_locator} = jquery=[id$="form-min_step_amount"]
81   -${tender_form_general_minimalStep_amount_input_locator} = jquery=[id$="form-min_step_amount-disp"]
82   -${tender_form_general_main_procurement_category_input_locator} = jquery=[id$="form-main_procurement_category"]
83   -${tender_enquiry_period_start_date_input_locator} = jquery=[id$="form-enquiry_period_start_date"]
84   -${tender_enquiry_period_end_date_input_locator} = jquery=[id$="form-enquiry_period_end_date"]
85   -${tender_tender_period_start_date_input_locator} = jquery=[id$="form-tender_period_start_date"]
86   -${tender_tender_period_end_date_input_locator} = jquery=[id$="form-tender_period_end_date"]
87   -${tender_tender_quick_mode_locator} = jquery=[id$="form-quick_mode"]
88   -${tender_cpv_form_submit_success_msg} = Вид предмету закупівлі не відповідає вказаному коду CPV
89   -${tender_cpv_submit_btn_locator} = jquery=.animated-content .js-btn-confirm
90   -${tender_cpv_js_submit_btn_locator} = $('.animated-content .js-btn-confirm').click()
91   -
92   -#esco
93   -${tender_form_general_funding_kind_input_locator} = id=tenderescoform-funding_kind
94   -${tender_form_general_nbu_discount_rate_input_locator} = id=tenderescoform-nbu_discount_rate
95   -${tender_form_general_minimal_step_percentage_input_locator} = jquery=[id$="-min_step_percentage"]
96   -${tender_form_general_yearly_payments_percentage_range_input_locator} = jquery=[id$="-yearly_payments_percentage_range"]
97   -#closeframework
98   -${tender_form_general_max_awards_count_input_locator} = jquery=[id$="form-max_awards_count"]
99   -${tender_form_general_agreement_duration_years_input_locator} = jquery=[id$="form-agreement_duration_years"]
100   -${tender_form_general_agreement_duration_months_input_locator} = jquery=[id$="form-agreement_duration_months"]
101   -${tender_form_general_agreement_duration_days_input_locator} = jquery=[id$="form-agreement_duration_days"]
102   -#closeFrameworkAgreementSelectionUA
103   -${tender_form_general_agreementid_input_locator} = jquery=[id$="form-agreement_id"]
104   -${tender_form_item_edit_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last > .panel-collapse.collapse.in .panel-heading .js-form-popup-update:first
105   -#${tender_form_general_max_awards_count_input_locator} = jquery=[id$="form-max_awards_count"]
106   -#${tender_form_general_agreement_duration_years_input_locator} = jquery=[id$="form-agreement_duration_years"]
107   -#${tender_form_general_agreement_duration_months_input_locator} = jquery=[id$="form-agreement_duration_months"]
108   -#${tender_form_general_agreement_duration_days_input_locator} = jquery=[id$="form-agreement_duration_days"]
109   -#negotiation
110   -${tender_form_general_cause_input_locator} = jquery=[id$="form-cause"]
111   -${tender_form_general_cause_description_input_locator} = jquery=[id$="form-cause_description"]
112   -${tender_form_cp_edit_btn_locator} = jquery=[id="headingContactPoint"] a[data-url="#contactpoint-form-popup"]
113   -${tender_form_organization_name_en_input_locator} = jquery=[id*="organization_name_en"]
114   -${tender_form_contact_point_name_en_input_locator} = jquery=[id*="contact_point_name_en"]
115   -
116   -#Tests Files.Complaints
117   -${tender_form_auction_skip_mode_input_locator} = jquery=input[id$="form-auction_skip_mode"]
118   -
119   -${tender_form_general_panel_add_feature_btn_locator} = jquery=#collapseGeneral .btn[data-attribute="features"]
120   -${tender_form_features_panel_edit_btn_locator} = $('.fancybox-content [href$="#add-features"]').trigger("click")
121   -#${tender_form_features_panel_edit_btn_locator} = jquery=.fancybox-content [href$="#add-features"]
122   -${feature_form_popup_title_input_locator} = jquery=.fancybox-is-open .tab-content:first > .tab-pane.active:first [id$="-title"]:first
123   -${feature_form_popup_description_input_locator} = jquery=.fancybox-is-open .tab-content:first > .tab-pane.active:first [id$="-description"]:first
124   -${feature_form_popup_title_en_input_locator} = jquery=.fancybox-is-open .tab-content:first > .tab-pane.active:first [id$="-title_en"]:first
125   -${feature_form_popup_description_en_input_locator} = jquery=.fancybox-is-open .tab-content:first > .tab-pane.active:first [id$="-description_en"]:first
126   -${feature_form_popup_value_input_locator} = jquery=[id$="-value"]
127   -${feature_form_popup_add-enums_btn_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .btn-add a[href$="#add-enums"]:last
128   -${feature_form_popup_enum_title_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:last > .tab-pane.active input[id$="-title"]
129   -${feature_form_popup_enum_title_en_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:last > .tab-pane.active input[id$="-title_en"]
130   -${feature_form_popup_enum_value_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:last > .tab-pane.active input[id$="-value"]
131   -#${feature_form_popup_enum_title_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:first > .tab-pane.active input[id$="-title"]
132   -#${feature_form_popup_enum_title_en_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:first > .tab-pane.active input[id$="-title_en"]
133   -#${feature_form_popup_enum_value_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:first > .tab-pane.active input[id$="-value"]
134   -
135   -${tender_form_general_panel_add_document_btn_locator} = jquery=#collapseGeneral .btn[data-attribute="documents"]
136   -${tender_form_general_panel_edit_add_document_btn_locator} = jquery=div[data-form="general-form-popup"] .js-form-hidden-popup-panel:last a.btn-update
137   -
138   -#${tender_form_item_add_edit_btn_locator} = jquery=.js-form-group-popup-panel .panel-heading .actions-wrapper .js-form-popup-add
139   -#последняя кнопка “Додати” для номенклатуры (для лотовой и безлотовой и репортинг)
140   -${tender_form_item_add_edit_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last > .panel-heading .js-form-popup-add
141   -${tender_form_item_panel_add_feature_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last .js-form-popup-panel-list:first > .js-form-popup-panel-item:last .actions-wrapper .btn[data-attribute="features"]
142   -${tender_form_item_add_feature_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last .js-form-popup-panel-list:first > .js-form-popup-panel-item:last .js-form-popup-panel[data-attribute="features"] .actions-wrapper .btn.js-form-popup-update
143   -${tender_form_item_edit_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last > .panel-heading .js-form-popup-add
144   -
145   -#${tender_form_milestones_panel_edit_btn_locator} = jquery=[data-url$="#milestones-form-popup"]
146   -${tender_form_milestones_panel_edit_btn_locator} = jquery=.form-popup-panel[data-attribute="milestones"]:last > .panel-heading .js-form-popup-update
147   -${milestone_form_popup_add_btn_locator} = jquery=.fancybox-is-open [href$="#add-milestones"]
148   -${milestone_form_popup_title_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-title"]
149   -${milestone_form_popup_description_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-description"]
150   -${milestone_form_popup_percentage_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-percentage"]
151   -${milestone_form_popup_code_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-code"]
152   -${milestone_form_popup_duration_days_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-duration_days"]
153   -${milestone_form_popup_duration_type_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-duration_type"]
154   -
155   -${tender_form_lots_panel_edit_btn_locator} = jquery=a.btn.btn-default.btn-update.js-form-popup-add
156   -${lot_form_popup_add_btn_locator} = jquery=[href$="#add-milestones"]
157   -${lot_form_popup_title_input_locator} = jquery=.fancybox-is-open [id$="-title"]
158   -${lot_form_popup_description_input_locator} = jquery=.fancybox-is-open [id$="-description"]
159   -${lot_form_popup_title_en_input_locator} = jquery=.fancybox-is-open [id$="-title_en"]
160   -${lot_form_popup_description_en_input_locator} = jquery=.fancybox-is-open [id$="-description_en"]
161   -${lot_form_popup_value_amount_input_locator} = jquery=.fancybox-is-open [id$="-value_amount-disp"]
162   -##${lot_form_popup_value_amount_input_locator} = jquery=.fancybox-is-open [id$="-value_amount"]
163   -${lot_form_popup_value_currency_input_locator} = jquery=.fancybox-is-open [id$="-value_currency"]
164   -${lot_form_popup_value_added_tax_input_locator} = jquery=.fancybox-is-open [id$="-value_added_tax_included"]
165   -${lot_form_popup_minimalstep_amount_input_locator} = jquery=.fancybox-is-open [id$="-min_step_amount-disp"]
166   -##${lot_form_popup_minimalstep_amount_input_locator} = jquery=.fancybox-is-open [id$="-min_step_amount"]
167   -${lot_form_popup_min_step_percentage_amount_input_locator} = jquery=.fancybox-is-open [id$="-min_step_percentage"]
168   -
169   -${tender_form_lot_panel_add_feature_btn_locator} = jquery=#Lots .js-form-popup-panel-list:first > .js-form-popup-panel-item:last .actions-wrapper .btn[data-attribute="features"]
170   -${tender_form_lot_panel_update_feature_btn_locator} = jquery=#Lots #collapseLots0 .js-form-popup-panel-list:first .js-form-hidden-popup-panel:nth(0) a.js-form-popup-update
171   -${tender_form_lot_panel_add_document_btn_locator_tpl} = jquery=#Lots #collapseLots div[data-title*="%lot_id%"] .actions-wrapper a.js-btn-add-form-popup-panel:last
172   -${tender_form_lot_panel_edit_add_document_btn_locator} = jquery=#Lots #collapseLots div[data-title*="%lot_id%"] .js-form-hidden-popup-panel:last .actions-wrapper a.js-form-popup-update
173   -
174   -
175   -${tender_form_procuringEntity_contactPoint_edit_btn_locator} = jquery=(#tender-form .panel.panel-default.form-popup-panel.js-form-popup-panel .panel-heading .actions-wrapper .js-form-popup-update)[4]
176   -${tender_form_submit_btn_locator} = jquery=#tender-form .js-submit-btn
177   -${tender_created_checker_element_locator} = id=tender-part-pjax
178   -
179   -# tender view
180   -${tender_view_checker_element_locator} = id=tender-general-info
181   -${tender_sync_element_locator} = jquery=#aside-part-pjax .status-label .fa-refresh
182   -${tender_uaid_text_locator} = jquery=#tender-general-info .tender-id .value
183   -${tender_edit_btn_locator} = jquery=#aside-part-pjax a[href*="tender/update"]
184   -${tender_status_value_locator} = jquery=#aside-part-pjax .hidden.opstatus
185   -#елемент проверки загрузки формы в попапе
186   -${popup_dynamic_form_loading_element_locator} = jquery=.fancybox-is-open .btn-add .fa-spin
187   -#${add_file_to_form} xpath=//input[@type='file']
188   -${add_file_to_form_locator} = jquery=.fancybox-is-open input[type$="file"]
189   -
190   -# tender index + search
191   -${tender_search_form_locator} = id=tender-filter-form
192   -${tender_search_form_query_input_locator} = jquery=#tender-filter-form .dynamic-search-query input
193   -${tender_search_form_result_locator_tpl} = jquery=#tender-list .lots__item .lot__characteristic li:contains(%query%)
194   -
195   -# -- for viewer --
196   -${tender_title_value_locator} = jquery=#tender-part-pjax > section > div > h1
197   -${tender_description_value_locator} = jquery=#tender-part-pjax > section > p
198   -${tender_mainProcurementCategory_value_locator} = jquery=#tender-part-pjax .main-procurement-category-source.hidden
199   -${tender_budget_amount_value_locator} = jquery=#tender-general-info .budget-amount.hidden
200   -${tender_budget_amount_value_type} = float
201   -${tender_tenderID_value_locator} = jquery=#tender-general-info .info-row.tender-id span.value
202   -${tender_milestones_0_code_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .code
203   -${tender_milestones_0_title_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .title
204   -${tender_milestones_0_percentage_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .percentage
205   -${tender_milestones_0_percentage_value_type} = float
206   -${tender_milestones_0_duration_days_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .duration_days
207   -${tender_milestones_0_duration_days_value_type} = integer
208   -${tender_milestones_0_duration_type_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .duration_type
209   -${tender_milestones_1_code_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .code
210   -${tender_milestones_1_title_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .title
211   -${tender_milestones_1_percentage_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .percentage
212   -${tender_milestones_1_percentage_value_type} = float
213   -${tender_milestones_1_duration_days_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .duration_days
214   -${tender_milestones_1_duration_days_value_type} = integer
215   -${tender_milestones_1_duration_type_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .duration_type
216   -${tender_milestones_2_code_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .code
217   -${tender_milestones_2_title_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .title
218   -${tender_milestones_2_percentage_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .percentage
219   -${tender_milestones_2_percentage_value_type} = float
220   -${tender_milestones_2_duration_days_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .duration_days
221   -${tender_milestones_2_duration_days_value_type} = integer
222   -${tender_milestones_2_duration_type_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .duration_type
223   -${tender_value_amount_value_locator} = jquery=#tender-general-info .budget-amount.hidden
224   -${tender_value_amount_value_type} = float
225   -${tender_value_currency_value_locator} = jquery=#tender-general-info .budget-currency.hidden
226   -${tender_value_valueAddedTaxIncluded_value_locator} = jquery=#tender-general-info .budget-tax-included.hidden
227   -${tender_minimalStep_amount_value_locator} = jquery=#tender-general-info .minimal-step-source.hidden
228   -${tender_minimalStep_amount_value_type} = float
229   -${tender_minimalStepPercentage_value_locator} = jquery=#tender-general-info .minimal-step-percentage-source.hidden
230   -${tender_fundingKind_value_locator} = jquery=#tender-general-info .funding-kind-source.hidden
231   -${tender_yearlyPaymentsPercentageRange_value_locator} = jquery=#tender-general-info .yearly-payments-percentage-range-source.hidden
232   -${tender_procuringEntity_name_value_locator} = jquery=#tender-part-pjax .info-row.organization span.value > span
233   -${tender_enquiryPeriod_startDate_value_locator} = jquery=#tender-part-pjax .info-row.enquiry-period-start-date.hidden
234   -${tender_enquiryPeriod_endDate_value_locator} = jquery=#tender-part-pjax .info-row.enquiry-period-end-date.hidden
235   -${tender_tenderPeriod_startDate_value_locator} = jquery=#tender-part-pjax .info-row.tender-period-start-date.hidden
236   -${tender_tenderPeriod_endDate_value_locator} = jquery=#tender-part-pjax .info-row.tender-period-end-date.hidden
237   -${tender_qualificationPeriod_endDate_value_locator} = jquery=#tender-general-info .prequalification-period .value .end-date
238   -#negotiation
239   -${tender_cause_value_locator} = jquery=#tender-general-info .cause-source.hidden
240   -${tender_causeDescription_value_locator} = jquery=#tender-general-info .cause-description .value
241   -
242   -${tender_items_0_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .description
243   -#${tender_items_0_description_value_locator} = jquery=#tender-part-pjax .tabs__pane--visible .pseudo-table .item-item-wrapper .textvalue.hidden
244   -#${tender_items_0_description_value_locator} = jquery=execute javascript return $('#tender-part-pjax .tabs__pane--visible .pseudo-table .item-item-wrapper').attr("data-title")
245   -
246   -#lots
247   -${tender_lot_switch_tabs_lot_btn_locator_tpl} jquery=#lots .tabs__list .tabs__item span.tabs__tab-big-text:contains("%lot_id%")
248   -${tender_lot_1_tabs_item_btn_locator} jquery=#lots .tabs__item:first > a
249   -${tender_lot_title_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue:first
250   -${tender_lot_description_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue:last
251   -#${tender_lot_description_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible #text-modal-description div.textvalue
252   -${tender_lot_value_amount_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
253   -${tender_lot_value_amount_value_type} = float
254   -${tender_lot_value_currency_value_locator} = jquery=#tender-general-info .budget-currency.hidden
255   -${tender_lot_value_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget .value
256   -${tender_lot_minimal_step_currency_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .minimal-step .value
257   -${tender_lot_minimal_step_amount_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .minimal-step-source.hidden
258   -${tender_lot_minimal_step_amount_value_type} = float
259   -${tender_lot_minimal_step_amount_currency_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
260   -${tender_lot_minimal_step_amount_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
261   -${tender_lot_minimal_step_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .minimal-step .value
262   -
263   -##### BOF - TMP #####
264   -${tender_lot_0_title_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue.hidden
265   -${tender_lot_0_value_amount_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
266   -${tender_lot_0_value_amount_value_type} = float
267   -${tender_lot_0_lots_0_description_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue.hidden
268   -${tender_lot_0_value_currency_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
269   -${tender_lot_0_value_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
270   -${tender_lot_0_minimal_step_amount_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
271   -${tender_lot_0_minimal_step_amount_value_type} = float
272   -${tender_lot_0_lot_0_minimal_step_amount_currency_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
273   -${tender_lot_0_lot_0_minimal_step_amount_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
274   -${tender_form_lots_edit_lot1_btn_locator} = jquery=#Lots #collapseLots #Lots0 .actions-wrapper a.btn.btn-default.btn-update.js-form-popup-update:first
275   -${tender_form_lots_add_item_btn_locator} = jquery=#Lots #collapseLots #Lots0 .actions-wrapper a.js-form-popup-add
276   -${tender_form_lots_remove_item_btn_locator_tpl} = jquery=#collapseLots0 .js-form-popup-panel[data-title*="%item_id%"] .actions-wrapper .js-form-popup-remove
277   -${tender_lots_remove_item_form_submit_success_msg} = Ви дійсно бажаєте видалити цей елемент?
278   -#${not_alert_opened_close_btn_locator} = jquery=.animated-content .js-btn-confirm
279   -${not_alert_opened_close_btn_locator} = $('.animated-content .js-btn-confirm').trigger("click")
280   -${tender_form_lots_add_item_reporting_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last #Items0 .js-form-popup-update
281   -##### EOF - TMP #####
282   -
283   -#item
284   -${tender_item_1_tabs_item_btn_locator} jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0)
285   -${tender_item_2_tabs_item_btn_locator} jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1)
286   -${tender_item_3_tabs_item_btn_locator} jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(2)
287   -
288   -${tender_form_general_panel_update_award_reporting_btn_locator} = jquery=#Award .js-form-popup-update
289   -${tender_form_general_panel_update_award_negotiation_btn_locator} = jquery=.js-form-popup-panel [data-attribute="awards"] .actions-wrapper .js-form-popup-update
290   -${tender_form_general_panel_add_award_negotiation_btn_locator} = jquery=.modal.modal-form [href="#add-awards"]
291   -
292   -#add\remove feature
293   -#${tender_form_features_panel_edit_btn_locator} = jquery=.fancybox-content [href$="#add-features"]
294   -${tender_form_general_panel_update_feature_btn_locator} = jquery=#collapseGeneral .js-form-popup-update:nth(0)
295   -${tender_update_feature_tender_btn_locator} = jquery=#collapseGeneral .js-form-popup-update:nth(0)
296   -${tender_update_feature_lot_btn_locator} = jquery=#collapseLots #Lots0 #collapseLots0 .js-form-hidden-popup-panel .js-form-popup-panel[data-attribute*="features"] .actions-wrapper .js-form-popup-update:last
297   -${tender_update_feature_item_btn_locator} = jquery=#collapseLots #Lots0 #collapseLots0 .js-form-hidden-popup-panel:nth(0) .actions-wrapper .js-form-popup-update:nth(0)
298   -${tender_feature_dell_btn_locator} = jquery=.fancybox-is-open .nav.nav-pills.js-nav.allow-empty .fa.fa-times:last
299   -${tender_feature_form_submit_success_msg} = Ви впевнені що бажаєте видалити поточний неціновий критерій?
300   -${tender_feature_dell_submit_btn_locator} = jquery=.animated-content .js-btn-confirm
301   -
302   -${tender_form_general_tender_plan_id_locator} = jquery=[id$="form-plan_id"]
303   -${tender_feature_switch_dell_btn_locator_tpl} = jquery=.fancybox-is-open .nav.nav-pills.js-nav.allow-empty li[data-title*="%feature_id%"] .js-dynamic-form-remove .fa.fa-times
304   -#${tender_feature_switch_dell_btn_locator_tpl} = $('.fancybox-is-open .nav.nav-pills.js-nav.allow-empty li[data-title*="%feature_id%"] a[href*="#features"]').click()
305   -
306   -#award reporting
307   -${tender_form_award_organization_name_locator} = jquery=[id$="-award_organization_name"]
308   -${tender_form_award_organization_identifier_code_locator} = jquery=[id$="-award_organization_identifier_code"]
309   -${tender_form_award_organization_scale_locator} = jquery=[id$="-award_organization_scale"]
310   -${tender_form_award_organization_region_id_locator} = jquery=[id$="-award_organization_region_id"]
311   -${tender_form_award_organization_postal_code_locator} = jquery=[id$="-award_organization_postal_code"]
312   -${tender_form_award_organization_locality_locator} = jquery=[id$="-award_organization_locality"]
313   -${tender_form_award_organization_street_address_locator} = jquery=[id$="-award_organization_street_address"]
314   -${tender_form_award_organization_contact_point_name_locator} = jquery=[id$="-award_organization_contact_point_name"]
315   -${tender_form_award_organization_contact_point_email_locator} = jquery=[id$="-award_organization_contact_point_email"]
316   -${tender_form_award_organization_contact_point_phone_locator} = jquery=[id$="-award_organization_contact_point_phone"]
317   -${tender_form_award_budget_locator} = jquery=[id$="-award_value_amount"]
318   -
319   -#stage2button
320   -${tender_stage2_open_btn_locator} = jquery=#aside-part-pjax a[href*="/tender/confirm-stage2"]
321   -${tender_stage2_submit_success_msg} = Ви впевнені що бажаєте підтвердити готовність переходу до другого етапу?
322   -${tender_stage2_submit_success_btn_locator} = jquery=.jconfirm-box.animated-content .js-btn-confirm
323   -${tender_stage2_submit_js_success_btn_locator} = $('.jconfirm-box.animated-content .js-btn-confirm').click()
324   -${tender_stage2_submit_alert_success_msg} = Підтвердження успішно надане.
325   -#search
326   -${tender_form_search_btn_locator} = jquery=#DymamicSearch .dynamic-search-submit .js-submit-btn
327   -
328   -${popup_opened_content_success_locator} = Відмінити
329   -${tender_form_general_panel_edit_btn_locator} = jquery=#General #headingGeneral .actions-wrapper .js-form-popup-update
330   -${tender_form_general_panel_draft_mode_input_locator} = jquery=[id*="-draft_mode"]
331   -${tender_form_general_panel_document_stage2_input_locator} = jquery=#collapseGeneral .actions-wrapper .js-btn-add-form-popup-panel[data-attribute="documents"]
332   -${stage2_form_add_document_type_input_locator} = jquery=.js-dynamic-form-content-item:last .document-type select[id*="-document_type"]
333   -${stage2_form_add_document_description_btn_locator} = jquery=.js-dynamic-form-content-item:last [href$="#edit"]:last
334   -${stage2_form_add_document_description_input_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in textarea[id*="-description"].form-control
335   -${stage2_form_add_document_close_description_btn_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in [href$="#close"]
336   -
337   -
338   -
1   -*** Settings ***
2   -
3   -Resource playtender_common.robot
4   -Resource playtender_variables.robot
5   -Resource playtender_question.robot
6   -Resource playtender_claim.robot
7   -Resource playtender_bid.robot
8   -Resource playtender_viewer.robot
9   -Resource playtender_viewer_variables.robot
10   -
11   -*** Keywords ***
12   -
13   -get value from features
14   - [Arguments] ${feature_id} ${field_name}
15   - [Documentation] Отримати значення поля field_name з нецінового показника з feature_id в описі для тендера tender_uaid.
16   -
17   - wait until page does not contain element with reloading ${tender_sync_element_locator}
18   - ${tender_features_new_value_locator} = replace string ${tender_features_new_value_locator_tpl} %feature_id% ${feature_id}
19   - wait until page contains element with reloading ${tender_features_new_value_locator}
20   - ${return_value} = Run Keyword If 'title' == '${field_name}' Отримати інформацію із нецінового показника title ${feature_id}
21   - ... ELSE IF 'description' == '${field_name}' Отримати інформацію із нецінового показника description ${feature_id}
22   - ... ELSE IF 'featureOf' == '${field_name}' Отримати інформацію із нецінового показника featureOf ${feature_id}
23   - [return] ${return_value}
24   -
25   -Отримати інформацію із нецінового показника title
26   - [Arguments] ${feature_id}
27   - [Documentation] Отримати значення поля title з нецінового показника з feature_id в описі для тендера tender_uaid.
28   -
29   - ${tender_features_title_value_locator} = replace string ${tender_features_title_value_locator_tpl} %feature_id% ${feature_id}
30   - ${return_value} = get value by locator on opened page ${tender_features_title_value_locator}
31   - [return] ${return_value}
32   -
33   -Отримати інформацію із нецінового показника description
34   - [Arguments] ${feature_id}
35   - [Documentation] Отримати значення поля description з нецінового показника з feature_id в описі для тендера tender_uaid.
36   -
37   - ${tender_features_description_value_locator} = replace string ${tender_features_description_value_locator_tpl} %feature_id% ${feature_id}
38   - ${return_value} = get value by locator on opened page ${tender_features_description_value_locator}
39   - [return] ${return_value}
40   -
41   -Отримати інформацію із нецінового показника featureOf
42   - [Arguments] ${feature_id}
43   - [Documentation] Отримати значення поля featureOf з нецінового показника з feature_id в описі для тендера tender_uaid.
44   -
45   - ${tender_features_featureof_value_locator} = replace string ${tender_features_featureof_value_locator_tpl} %feature_id% ${feature_id}
46   - ${return_value} = get value by locator on opened page ${tender_features_featureof_value_locator}
47   - [return] ${return_value}
48   -
49   -
50   -get value from item
51   - [Arguments] ${item_id} ${field_name}
52   - [Documentation] Отримати значення поля field_name з предмету з item_id в описі для тендера tender_uaid.
53   -
54   -# ${return_value} = Run Keyword If 'title' == '${field_name}' Отримати інформацію із предмету title ${item_id}
55   -# ... ELSE IF 'description' == '${field_name}' Отримати інформацію із предмету description ${item_id}
56   -# ... ELSE IF 'featureOf' == '${field_name}' Отримати інформацію із предмету featureOf ${item_id]}
57   - ${tender_items_new_value_locator} = replace string ${tender_items_new_value_locator_tpl} %item_id% ${item_id}
58   - wait until page contains element with reloading ${tender_items_new_value_locator}
59   - log many ${item_id}
60   - Run Keyword And Return If 'description' == '${field_name}' Отримати інформацію із предмету description ${item_id}
61   - Run Keyword And Return If 'deliveryDate.startDate' == '${field_name}' Отримати інформацію із предмету deliveryDate.startDate ${item_id}
62   - Run Keyword And Return If 'deliveryDate.endDate' == '${field_name}' Отримати інформацію із предмету deliveryDate.endDate ${item_id}
63   - Run Keyword And Return If 'deliveryAddress.countryName' == '${field_name}' Отримати інформацію із предмету deliveryAddress.countryName ${item_id}
64   - Run Keyword And Return If 'deliveryAddress.postalCode' == '${field_name}' Отримати інформацію із предмету deliveryAddress.postalCode ${item_id}
65   - Run Keyword And Return If 'deliveryAddress.region' == '${field_name}' Отримати інформацію із предмету deliveryAddress.region ${item_id}
66   - Run Keyword And Return If 'deliveryAddress.locality' == '${field_name}' Отримати інформацію із предмету deliveryAddress.locality ${item_id}
67   - Run Keyword And Return If 'deliveryAddress.streetAddress' == '${field_name}' Отримати інформацію із предмету deliveryAddress.streetAddress ${item_id}
68   - Run Keyword And Return If 'classification.scheme' == '${field_name}' Отримати інформацію із предмету classification.scheme ${item_id}
69   - Run Keyword And Return If 'classification.id' == '${field_name}' Отримати інформацію із предмету classification.id ${item_id}
70   - Run Keyword And Return If 'classification.description' == '${field_name}' Отримати інформацію із предмету classification.description ${item_id}
71   - Run Keyword And Return If 'additionalClassifications[0].scheme' == '${field_name}' Отримати інформацію із предмету additionalClassifications[0].scheme ${item_id}
72   - Run Keyword And Return If 'additionalClassifications[0].id' == '${field_name}' Отримати інформацію із предмету additionalClassifications[0].id ${item_id}
73   - Run Keyword And Return If 'additionalClassifications[0].description' == '${field_name}' Отримати інформацію із предмету additionalClassifications[0].description ${item_id}
74   - Run Keyword And Return If 'unit.name' == '${field_name}' Отримати інформацію із предмету unit.name ${item_id}
75   - Run Keyword And Return If 'unit.code' == '${field_name}' Отримати інформацію із предмету unit.code ${item_id}
76   - Run Keyword And Return If 'quantity' == '${field_name}' Отримати інформацію із предмету quantity ${item_id}
77   -# [return] ${return_value}
78   -
79   -
80   -Отримати інформацію із предмету description
81   - [Arguments] ${item_id}
82   - [Documentation] Отримати значення поля description з предмету з item_id в описі для тендера tender_uaid.
83   -
84   - log many ${item_id}
85   - ${tender_items_description_value_locator} = run keyword if ${number_of_lots} > 0 replace string ${tender_items_description_value_locator_tpl} %item_id% ${item_id}
86   - ... ELSE replace string ${tender_items_no_lot_description_value_locator_tpl} %item_id% ${item_id}
87   - ${return_value} = get value by locator on opened page ${tender_items_description_value_locator}
88   - [return] ${return_value}
89   -
90   -Отримати інформацію із предмету deliveryDate.startDate
91   - [Arguments] ${item_id}
92   - [Documentation] Отримати значення поля deliveryDate.startDate з предмету з item_id в описі для тендера tender_uaid.
93   -
94   - ${tender_items_delivery_start_date_value_locator} = replace string ${tender_items_delivery_start_date_value_locator_tpl} %item_id% ${item_id}
95   - ${return_value} = get value by locator on opened page ${tender_items_delivery_start_date_value_locator}
96   - [return] ${return_value}
97   -
98   -Отримати інформацію із предмету deliveryDate.endDate
99   - [Arguments] ${item_id}
100   - [Documentation] Отримати значення поля deliveryDate.endDate з предмету з item_id в описі для тендера tender_uaid.
101   -
102   - ${tender_items_delivery_end_date_value_locator} = replace string ${tender_items_delivery_end_date_value_locator_tpl} %item_id% ${item_id}
103   - ${return_value} = get value by locator on opened page ${tender_items_delivery_end_date_value_locator}
104   - [return] ${return_value}
105   -
106   -Отримати інформацію із предмету deliveryAddress.countryName
107   - [Arguments] ${item_id}
108   - [Documentation] Отримати значення поля deliveryAddress.countryName з предмету з item_id в описі для тендера tender_uaid.
109   -
110   - ${tender_items_delivery_country_value_locator} = replace string ${tender_items_delivery_country_value_locator_tpl} %item_id% ${item_id}
111   - ${return_value} = get value by locator on opened page ${tender_items_delivery_country_value_locator}
112   - [return] ${return_value}
113   -
114   -Отримати інформацію із предмету deliveryAddress.postalCode
115   - [Arguments] ${item_id}
116   - [Documentation] Отримати значення поля deliveryAddress.postalCode з предмету з item_id в описі для тендера tender_uaid.
117   -
118   - ${tender_items_delivery_postal_code_value_locator} = replace string ${tender_items_delivery_postal_code_value_locator_tpl} %item_id% ${item_id}
119   - ${return_value} = get value by locator on opened page ${tender_items_delivery_postal_code_value_locator}
120   - [return] ${return_value}
121   -
122   -Отримати інформацію із предмету deliveryAddress.region
123   - [Arguments] ${item_id}
124   - [Documentation] Отримати значення поля deliveryAddress.region з предмету з item_id в описі для тендера tender_uaid.
125   -
126   - ${tender_items_delivery_region_id_value_locator} = replace string ${tender_items_delivery_region_id_value_locator_tpl} %item_id% ${item_id}
127   - ${return_value} = get value by locator on opened page ${tender_items_delivery_region_id_value_locator}
128   - [return] ${return_value}
129   -
130   -Отримати інформацію із предмету deliveryAddress.locality
131   - [Arguments] ${item_id}
132   - [Documentation] Отримати значення поля deliveryAddress.locality з предмету з item_id в описі для тендера tender_uaid.
133   -
134   - ${tender_items_delivery_locality_value_locator} = replace string ${tender_items_delivery_locality_value_locator_tpl} %item_id% ${item_id}
135   - ${return_value} = get value by locator on opened page ${tender_items_delivery_locality_value_locator}
136   - [return] ${return_value}
137   -
138   -Отримати інформацію із предмету deliveryAddress.streetAddress
139   - [Arguments] ${item_id}
140   - [Documentation] Отримати значення поля deliveryAddress.streetAddress з предмету з item_id в описі для тендера tender_uaid.
141   -
142   - ${tender_items_delivery_street_address_value_locator} = replace string ${tender_items_delivery_street_address_value_locator_tpl} %item_id% ${item_id}
143   - ${return_value} = get value by locator on opened page ${tender_items_delivery_street_address_value_locator}
144   - [return] ${return_value}
145   -
146   -Отримати інформацію із предмету classification.scheme
147   - [Arguments] ${item_id}
148   - [Documentation] Отримати значення поля classification.scheme з предмету з item_id в описі для тендера tender_uaid.
149   -
150   - ${tender_items_classification_scheme_value_locator} = replace string ${tender_items_classification_scheme_value_locator_tpl} %item_id% ${item_id}
151   - ${return_value} = get value by locator on opened page ${tender_items_classification_scheme_value_locator}
152   - [return] ${return_value}
153   -
154   -Отримати інформацію із предмету classification.id
155   - [Arguments] ${item_id}
156   - [Documentation] Отримати значення поля classification.id з предмету з item_id в описі для тендера tender_uaid.
157   -
158   - ${tender_items_classification_code_value_locator} = replace string ${tender_items_classification_code_value_locator_tpl} %item_id% ${item_id}
159   - ${return_value} = get value by locator on opened page ${tender_items_classification_code_value_locator}
160   - [return] ${return_value}
161   -
162   -Отримати інформацію із предмету classification.description
163   - [Arguments] ${item_id}
164   - [Documentation] Отримати значення поля classification.description з предмету з item_id в описі для тендера tender_uaid.
165   -
166   - ${tender_items_classification_description_value_locator} = replace string ${tender_items_classification_description_value_locator_tpl} %item_id% ${item_id}
167   - ${return_value} = get value by locator on opened page ${tender_items_classification_description_value_locator}
168   - [return] ${return_value}
169   -
170   -Отримати інформацію із предмету additionalClassifications[0].scheme
171   - [Arguments] ${item_id}
172   - [Documentation] Отримати значення поля additionalClassifications[0].scheme з предмету з item_id в описі для тендера tender_uaid.
173   -
174   - ${tender_items_additional_classification_scheme_value_locator} = replace string ${tender_items_additional_classification_scheme_value_locator_tpl} %item_id% ${item_id}
175   - ${return_value} = get value by locator on opened page ${tender_items_additional_classification_scheme_value_locator}
176   - [return] ${return_value}
177   -
178   -Отримати інформацію із предмету additionalClassifications[0].id
179   - [Arguments] ${item_id}
180   - [Documentation] Отримати значення поля additionalClassifications[0].id з предмету з item_id в описі для тендера tender_uaid.
181   -
182   - ${tender_items_additional_classification_code_value_locator} = replace string ${tender_items_additional_classification_code_value_locator_tpl} %item_id% ${item_id}
183   - ${return_value} = get value by locator on opened page ${tender_items_additional_classification_code_value_locator}
184   - [return] ${return_value}
185   -
186   -Отримати інформацію із предмету additionalClassifications[0].description
187   - [Arguments] ${item_id}
188   - [Documentation] Отримати значення поля additionalClassifications[0].description з предмету з item_id в описі для тендера tender_uaid.
189   -
190   - ${tender_items_additional_classification_description_value_locator} = replace string ${tender_items_additional_classification_description_value_locator_tpl} %item_id% ${item_id}
191   - ${return_value} = get value by locator on opened page ${tender_items_additional_classification_description_value_locator}
192   - [return] ${return_value}
193   -
194   -Отримати інформацію із предмету unit.name
195   - [Arguments] ${item_id}
196   - [Documentation] Отримати значення поля unit.name з предмету з item_id в описі для тендера tender_uaid.
197   -
198   - ${tender_items_unit_title_value_locator} = replace string ${tender_items_unit_title_value_locator_tpl} %item_id% ${item_id}
199   - ${return_value} = get value by locator on opened page ${tender_items_unit_title_value_locator}
200   - [return] ${return_value}
201   -
202   -Отримати інформацію із предмету unit.code
203   - [Arguments] ${item_id}
204   - [Documentation] Отримати значення поля unit.code з предмету з item_id в описі для тендера tender_uaid.
205   -
206   - ${tender_items_unit_code_value_locator} = replace string ${tender_items_unit_code_value_locator_tpl} %item_id% ${item_id}
207   - ${return_value} = get value by locator on opened page ${tender_items_unit_code_value_locator}
208   - [return] ${return_value}
209   -
210   -Отримати інформацію із предмету quantity
211   - [Arguments] ${item_id}
212   - [Documentation] Отримати значення поля quantity з предмету з item_id в описі для тендера tender_uaid.
213   -
214   - ${tender_items_quantity_value_locator} = replace string ${tender_items_quantity_value_locator_tpl} %item_id% ${item_id}
215   - ${return_value} = get value by locator on opened page ${tender_items_quantity_value_locator} float
216   - [return] ${return_value}
217   -
218   -get value from lot
219   - [Arguments] ${lot_id} ${field_name}
220   - [Documentation] Отримати значення поля field_name з лоту з lot_id в описі для тендера tender_uaid.
221   -
222   - Run Keyword And Return If 'title' == '${field_name}' Отримати інформацію із лоту title ${lot_id}
223   - Run Keyword And Return If 'description' == '${field_name}' Отримати інформацію із лоту description ${lot_id}
224   - Run Keyword And Return If 'value.amount' == '${field_name}' Отримати інформацію із лоту value.amount ${lot_id}
225   - Run Keyword And Return If 'minimalStep.amount' == '${field_name}' Отримати інформацію із лоту minimalStep.amount ${lot_id}
226   - Run Keyword And Return If 'value.currency' == '${field_name}' Отримати інформацію із лоту value.currency ${lot_id}
227   - Run Keyword And Return If 'value.valueAddedTaxIncluded' == '${field_name}' Отримати інформацію із лоту value.valueAddedTaxIncluded ${lot_id}
228   - Run Keyword And Return If 'minimalStep.currency' == '${field_name}' Отримати інформацію із лоту minimalStep.currency ${lot_id}
229   - Run Keyword And Return If 'minimalStep.valueAddedTaxIncluded' == '${field_name}' Отримати інформацію із лоту minimalStep.valueAddedTaxIncluded ${lot_id}
230   -# Run Keyword And Return If 'auctionPeriod.startDate' == '${field_name}' get text jquery=#lots .tabs__content .tabs__pane--visible .auction-period .value .start-date
231   - Run Keyword And Return If 'auctionPeriod.startDate' == '${field_name}' Отримати інформацію із лоту auctionPeriod.startDate ${lot_id}
232   - Run Keyword And Return If 'auctionPeriod.endDate' == '${field_name}' Отримати інформацію із лоту auctionPeriod.endDate ${lot_id}
233   -# Run Keyword And Return If 'auctionPeriod.endDate' == '${field_name}' get text jquery=#lots .tabs__content .tabs__pane--visible .auction-period .value .end-date
234   - Run Keyword And Return If 'minimalStepPercentage' == '${field_name}' Отримати інформацію із лоту minimalStepPercentage ${lot_id}
235   - Run Keyword And Return If 'fundingKind' == '${field_name}' Отримати інформацію із лоту fundingKind ${lot_id}
236   - Run Keyword And Return If 'yearlyPaymentsPercentageRange' == '${field_name}' Отримати інформацію із лоту yearlyPaymentsPercentageRange ${lot_id}
237   -
238   -
239   -Отримати інформацію із лоту title
240   - [Arguments] ${lot_id}
241   - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.
242   -
243   -# ${tender_lot_title_value_locator} = replace string ${tender_lot_title_value_locator_tpl} %lot_id% ${lot_id}
244   - ${return_value} = get value by locator on opened page ${tender_lot_title_value_locator}
245   - [return] ${return_value}
246   -
247   -Отримати інформацію із лоту description
248   - [Arguments] ${lot_id}
249   - [Documentation] Отримати значення поля description з лоту з lot_id в описі для тендера tender_uaid.
250   -
251   -# ${tender_lot_description_value_locator} = replace string ${tender_lot_description_value_locator_tpl} %lot_id% ${lot_id}
252   - ${return_value} = get value by locator on opened page ${tender_lot_description_value_locator}
253   - [return] ${return_value}
254   -
255   -Отримати інформацію із лоту value.amount
256   - [Arguments] ${lot_id}
257   - [Documentation] Отримати значення поля description з лоту з lot_id в описі для тендера tender_uaid.
258   -
259   -# ${tender_lot_value_amount_value_locator} = replace string ${tender_lot_value_amount_value_locator_tpl} %lot_id% ${lot_id}
260   - ${return_value} = get value by locator on opened page ${tender_lot_value_amount_value_locator} ${tender_lot_value_amount_value_type}
261   - [return] ${return_value}
262   -
263   -Отримати інформацію із лоту minimalStep.amount
264   - [Arguments] ${lot_id}
265   - [Documentation] Отримати значення поля featureOf з лоту з lot_id в описі для тендера tender_uaid.
266   -
267   -# ${tender_lot_minimal_step_amount_value_locator} = replace string ${tender_lot_minimal_step_amount_value_locator_tpl} %lot_id% ${lot_id}
268   - ${return_value} = get value by locator on opened page ${tender_lot_minimal_step_amount_value_locator} ${tender_lot_minimal_step_amount_value_type}
269   - [return] ${return_value}
270   -
271   -Отримати інформацію із лоту value.currency
272   - [Arguments] ${lot_id}
273   - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.
274   -
275   -# ${tender_lot_value_currency_value_locator} = replace string ${tender_lot_value_currency_value_locator_tpl} %lot_id% ${lot_id}
276   - ${return_value} = get value by locator on opened page ${tender_lot_value_currency_value_locator}
277   - [return] ${return_value}
278   -
279   -Отримати інформацію із лоту value.valueAddedTaxIncluded
280   - [Arguments] ${lot_id}
281   - [Documentation] Отримати значення поля description з лоту з lot_id в описі для тендера tender_uaid.
282   -
283   -# ${tender_lot_value_value_added_tax_included_value_locator} = replace string ${tender_lot_value_value_added_tax_included_value_locator_tpl} %lot_id% ${lot_id}
284   - ${return_value} = get value by locator on opened page ${tender_lot_value_value_added_tax_included_value_locator}
285   - ${return_value} = set variable if 'з ПДВ' in '${return_value}' ${True} ${False}
286   -# ${return_value} = set variable if ${return_value} == 1 True
287   - [return] ${return_value}
288   -
289   -Отримати інформацію із лоту minimalStep.currency
290   - [Arguments] ${lot_id}
291   - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.
292   -
293   -# ${tender_lot_minimal_step_currency_value_locator} = replace string ${tender_lot_minimal_step_currency_value_locator_tpl} %lot_id% ${lot_id}
294   - ${return_value} = get value by locator on opened page ${tender_lot_minimal_step_currency_value_locator}
295   - ${return_value} = set variable if 'UAH' in '${return_value}' UAH
296   - [return] ${return_value}
297   -
298   -Отримати інформацію із лоту minimalStep.valueAddedTaxIncluded
299   - [Arguments] ${lot_id}
300   - [Documentation] Отримати значення поля description з лоту з lot_id в описі для тендера tender_uaid.
301   -
302   -# ${tender_lot_value_minimal_step_added_tax_included_value_locator} = replace string ${tender_lot_minimal_step_value_added_tax_included_value_locator_tpl} %lot_id% ${lot_id}
303   -# ${return_value} = get value by locator on opened page ${tender_lot_minimal_step_value_added_tax_included_value_locator}
304   - ${return_value} = get value by locator on opened page ${tender_lot_value_value_added_tax_included_value_locator}
305   - ${return_value} = set variable if 'з ПДВ' in '${return_value}' ${True} ${False}
306   - [return] ${return_value}
307   -
308   -Отримати інформацію із лоту auctionPeriod.startDate
309   - [Arguments] ${lot_id}
310   - [Documentation] Отримати значення поля featureOf з лоту з lot_id в описі для тендера tender_uaid.
311   -
312   -# ${tender_lot_delivery_region_id_value_locator} = replace string ${tender_lot_delivery_region_id_value_locator_tpl} %lot_id% ${lot_id}
313   - ${return_value} = get value by locator on opened page ${tender_auctionPeriod_startDate_value_locator}
314   -# ${return_value} = parse_complaintPeriod_date ${return_value}
315   - [return] ${return_value}
316   -
317   -Отримати інформацію із лоту auctionPeriod.endDate
318   - [Arguments] ${lot_id}
319   - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.
320   -
321   -# ${tender_lot_delivery_locality_value_locator} = replace string ${tender_lot_delivery_locality_value_locator_tpl} %lot_id% ${lot_id}
322   - ${return_value} = get value by locator on opened page ${tender_auctionPeriod_endDate_value_locator}
323   - [return] ${return_value}
324   -
325   -Отримати інформацію із лоту minimalStepPercentage
326   - [Arguments] ${lot_id}
327   - [Documentation] Отримати значення поля minimalStepPercentage з лоту з lot_id в описі для тендера tender_uaid.
328   -
329   -# ${tender_lot_delivery_street_address_value_locator} = replace string ${tender_lot_delivery_street_address_value_locator_tpl} %lot_id% ${lot_id}
330   -# ${return_value} = get field_value by field_name on opened page ${tender_minimalStepPercentage_value_locator}
331   - ${return_value} = get value by locator on opened page ${tender_minimalStepPercentage_value_locator}
332   - ${return_value} = convert_string_to_float ${return_value}
333   - [return] ${return_value}
334   -
335   -Отримати інформацію із лоту fundingKind
336   - [Arguments] ${lot_id}
337   - [Documentation] Отримати значення поля featureOf з лоту з lot_id в описі для тендера tender_uaid.
338   -
339   -# ${tender_lot_classification_scheme_value_locator} = replace string ${tender_lot_classification_scheme_value_locator_tpl} %lot_id% ${lot_id}
340   - ${return_value} = get value by locator on opened page ${tender_fundingKind_value_locator}
341   - [return] ${return_value}
342   -
343   -Отримати інформацію із лоту yearlyPaymentsPercentageRange
344   - [Arguments] ${lot_id}
345   - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.
346   -
347   -# ${tender_lot_classification_code_value_locator} = replace string ${tender_lot_classification_code_value_locator_tpl} %lot_id% ${lot_id}
348   -# ${field_name} = set variable tender.${field_name}.value
349   -# ${return_value} = get field_value by field_name on opened page ${tender_yearlyPaymentsPercentageRange_value_locator}
350   - ${return_value} = get value by locator on opened page ${tender_yearlyPaymentsPercentageRange_value_locator}
351   - ${return_value} = convert_string_to_float ${return_value}
352   - [return] ${return_value}
353   -
354   -Отримати інформацію із документа title
355   - [Arguments] ${doc_id}
356   - [Documentation] Отримати значення поля title з документу з doc_id в описі для тендера tender_uaid.
357   -
358   -#заготовка
359   - ${tender_new_doc_locator} = replace string ${tender_new_doc_locator_tpl} %doc_id% ${doc_id}
360   - wait until page contains element with reloading ${tender_new_doc_locator}
361   -
362   - ${tender_new_doc__title_locator} = replace string ${tender_new_doc_title_locator_tpl} %doc_id% ${doc_id}
363   -
364   - ${return_value} = Execute Javascript return ${tender_new_doc__title_locator}
365   - ##${return_value} = get text ${tender_new_doc_locator}
366   - #${return_value} = get value by locator on opened page ${tender_new_doc_locator}
367   - [return] ${return_value}
368   -
369   -wait for tender status
370   - [Documentation] Очикування відповідного статусу закупівлі, в залежності від кейворда
371   -
372   - Run Keyword If '${TEST_NAME}' == 'Неможливість завантажити документ першим учасником після закінчення прийому пропозицій' Wait Until Keyword Succeeds 480 s 20 s Wait For EndEnquire
373   - Run Keyword If '${TEST_NAME}' == 'Неможливість завантажити документ другим учасником після закінчення прийому пропозицій' Wait Until Keyword Succeeds 480 s 20 s Wait For EndEnquire
374   - Run Keyword If '${TEST_NAME}' == 'Неможливість задати запитання на тендер після закінчення періоду прийому пропозицій' Wait Until Keyword Succeeds 480 s 20 s Wait For EndEnquire
375   - #Run Keyword If '${TEST_NAME}' == 'Неможливість задати запитання на тендер після закінчення періоду уточнень' Wait Until Keyword Succeeds 480 s 20 s Wait For EndEnquire
376   - Run Keyword If '${TEST_NAME}' == 'Можливість подати пропозицію першим учасником' Wait Until Keyword Succeeds 480 s 20 s Wait For TenderPeriod
377   - Run Keyword If '${TEST_NAME}' == 'Можливість подати пропозицію другим учасником' Wait Until Keyword Succeeds 480 s 20 s Wait For TenderPeriod
378   - Run Keyword If '${TEST_NAME}' == 'Відображення дати закінчення періоду блокування перед початком аукціону' Wait Until Keyword Succeeds 80 s 20 s Wait For AuctionPeriod
379   - Run Keyword If '${TEST_NAME}' == 'Можливість підтвердити першу пропозицію кваліфікації' Wait Until Keyword Succeeds 80 s 20 s Wait For PreQualificationPeriod
380   - Run Keyword If '${TEST_NAME}' == 'Можливість підтвердити другу пропозицію кваліфікації' Wait Until Keyword Succeeds 80 s 20 s Wait For PreQualificationPeriod
381   - Run Keyword If '${TEST_NAME}' == 'Можливість дочекатися завершення роботи мосту' Wait Until Keyword Succeeds 6000 s 20 s Wait For CompletePeriod
382   - #cat Run Keyword If '${TEST_NAME}' == 'Можливість дочекатися початку періоду очікування' Wait Until Keyword Succeeds 600 s 20 s Wait For PreQualificationsStandPeriod
383   - Run Keyword If '${TEST_NAME}' == 'Можливість дочекатися початку періоду очікування' Wait Until Keyword Succeeds 600 s 20 s Wait For ActiveStage2Pending
384   - Run Keyword If '${TEST_NAME}' == 'Можливість перевести тендер в статус очікування обробки мостом' Wait Until Keyword Succeeds 600 s 20 s Wait For ActiveStage2Waiting
385   - Run Keyword If '${TEST_NAME}' == 'Можливість дочекатись дати закінчення прийому пропозицій' and '${SUITE NAME}' == 'Tests Files.Complaints' Wait Until Keyword Succeeds 800 s 20 s Wait For NotTenderPeriod
386   - Run Keyword If '${TEST_NAME}' == 'Можливість дочекатись дати початку періоду кваліфікації' and '${SUITE NAME}' == 'Tests Files.Complaints' Wait Until Keyword Succeeds 800 s 20 s Wait For QualificationsStandPeriod
387   - Run Keyword If '${TEST_NAME}' == 'Відображення статусу успішного завершення тендера' Wait Until Keyword Succeeds 6000 s 20 s Wait For CompletePeriod
388   -
389   -Wait For EndEnquire
390   - [Documentation] Очикування статусу закупівлі закінчення обговорення
391   -
392   - Reload Page
393   - ${return_value} = Get text ${tender_status_value_locator}
394   - Log Many CAT ${return_value}
395   - Page Should Not Contain Element ${tender_status_active_tendering_value_locator}
396   -
397   -Wait For TenderPeriod
398   - [Documentation] Очикування статусу закупівлі початку подачи пропозицій
399   -
400   - Reload Page
401   - ${return_value} = Get text ${tender_status_value_locator}
402   - Log Many CAT ${return_value}
403   - Page Should Contain Element ${tender_status_active_tendering_value_locator}
404   -
405   -Wait For AuctionPeriod
406   - [Documentation] Очикування статусу закупівлі аукціон
407   -
408   - Reload Page
409   - ${return_value} = Get text ${tender_status_value_locator}
410   - Log Many CAT ${return_value}
411   - Page Should Contain Element ${tender_status_active_auction_value_locator}
412   -
413   -Wait For PreQualificationPeriod
414   - [Documentation] Очикування статусу закупівлі аукціон
415   -
416   - Reload Page
417   - ${return_value} = Get text ${tender_status_value_locator}
418   - Log Many CAT ${return_value}
419   - Page Should Contain Element ${tender_status_active_pre_qualification_value_locator}
420   -
421   -Wait For CompletePeriod
422   - [Documentation] Очикування статусу закупівлі завершення
423   -
424   - Reload Page
425   - ${return_value} = Get text ${tender_status_value_locator}
426   - Log Many CAT ${return_value}
427   - Page Should Contain Element ${tender_status_complete_value_locator}
428   -
429   -Wait For ActiveStage2Pending
430   - [Documentation] Очикування статусу закупівлі завершення
431   -
432   - Reload Page
433   - ${return_value} = Get text ${tender_status_value_locator}
434   - Log Many CAT ${return_value}
435   - Page Should Contain Element ${tender_status_active_stage2_pending_value_locator}
436   -
437   -Wait For ActiveStage2Waiting
438   - [Documentation] Очикування статусу закупівлі завершення
439   -
440   - Reload Page
441   - ${return_value} = Get text ${tender_status_value_locator}
442   - Log Many CAT ${return_value}
443   - Page Should Contain Element ${tender_status_active_stage2_waiting_value_locator}
444   -
445   -Wait For NotTenderPeriod
446   - [Documentation] Очикування статусу закупівлі завершення
447   -
448   - Reload Page
449   - ${return_value} = Get text ${tender_status_value_locator}
450   - Log Many CAT ${return_value}
451   - Page Should Contain Element ${tender_status_active_tendering_value_locator}
452   -
453   -Wait For QualificationsStandPeriod
454   - [Documentation] Очикування статусу закупівлі завершення кваліфікації
455   -
456   - Reload Page
457   - ${return_value} = Get text ${tender_status_value_locator}
458   - Log Many CAT ${return_value}
459   - Page Should Contain Element ${tender_status_active_qualification_value_locator}
460   -
461   -Wait For QualificationsPeriodEnd
462   - [Documentation] Очикування дати завершення кваліфікації закупівлі
463   -
464   - Reload Page
465   - ${complaintPeriod} = get value by locator on opened page ${tender_qualificationPeriod_endDate_value_locator}
466   - Log Many CAT ${complaintPeriod}
467   - Run Keyword If '${complaintPeriod}' == '' input text to exist visible input ${contract_contractform_date_start_input_locator} ${date_start}
468   - :FOR ${INDEX} IN RANGE 1 60
469   - \ Run Keyword If '${complaintPeriod}' != '' Exit For Loop
470   - \ Reload Page
471   - \ ${complaintPeriod} = get value by locator on opened page ${tender_qualificationPeriod_endDate_value_locator}
472   -
473   -Отримати інформацію із contracts[0].status
474   - [Documentation] Отримати значення поля contracts[0].status
475   -
476   -# ${tmp} = get value by locator on opened page ${tender_contracts_0_status_value_locator}
477   -# ${return_value} = Set Variable If '${tmp}' in 'Підписаний Новий' active other
478   - Run Keyword If '${TEST_NAME}' == 'Відображення статусу підписаної угоди з постачальником переговорної процедури' Wait Until Keyword Succeeds 800 s 20 s Wait For contractactive
479   - Run Keyword If '${TEST_NAME}' == 'Відображення статусу підписаної угоди з постачальником звіту про укладений договір' Wait Until Keyword Succeeds 800 s 20 s Wait For contractactive
480   - Run Keyword If '${TEST_NAME}' == 'Відображення статусу підписаної угоди з постачальником закупівлі' Wait Until Keyword Succeeds 800 s 20 s Wait For contractactive
481   - ${return_value} = get value by locator on opened page ${tender_contracts_0_status_value_locator}
482   - [return] ${return_value}
483   -
484   -Wait For contractactive
485   - [Documentation] Очикування статусу закупівлі початку подачи пропозицій
486   -
487   - Reload Page
488   - ${return_value} = get value by locator on opened page ${tender_contracts_0_status_value_locator}
489   - Page Should Contain Element ${tender_contracts_status_active_value_locator}
490   -
491   -Отримати інформацію із awards.complaintPeriod.endDate
492   - [Documentation] Отримати значення поля awards.complaintPeriod.endDate
493   -
494   - run keyword and ignore error Wait Until Keyword Succeeds 600 s 30 s Wait For complaintPeriodendDate
495   - ${return_value} = get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}
496   -# ${return_value} = run keyword if '${mode}' in 'negotiation' get value by locator on opened page ${tender_awards_negotiation_complaintPeriod_endDate_value_locator}
497   -# ... ELSE get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}
498   -# ${return_value} = run keyword if '${mode}' in 'negotiation' parse_complaintPeriod_date ${return_value}
499   -# ... ELSE set variable ${return_value}
500   - [return] ${return_value}
501   -
502   -Отримати інформацію із complaintPeriod.endDate
503   - [Documentation] Отримати значення поля complaintPeriod.endDate
504   -
505   - ${return_value} = get value by locator on opened page ${tender_complaintPeriod_endDate_value_locator}
506   - [return] ${return_value}
507   -
508   -Wait For complaintPeriodendDate
509   - [Documentation] Очикування появи дати завершення подачи скарг на кваліфікацію закупівлі в belowThreshold та below_funders
510   -
511   - reload page
512   - ${complaintPeriod} = get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}
513   - :FOR ${INDEX} IN RANGE 1 60
514   - \ Run Keyword If '${complaintPeriod}' != '' Exit For Loop
515   - \ Reload Page
516   - \ ${complaintPeriod} = get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}
517   -
518   -Отримати інформацію із minimalStep.amount
519   - [Documentation] Отримати значення поля minimalStep.amount для тендера tender_uaid.
520   -
521   -# ${tender_lot_minimal_step_amount_value_locator} = replace string ${tender_lot_minimal_step_amount_value_locator_tpl} %lot_id% ${lot_id}
522   - ${return_value} = run keyword if ${number_of_lots} > 0 get value by locator on opened page ${tender_lot_minimal_step_amount_value_locator} ${tender_lot_minimal_step_amount_value_type}
523   - ... ELSE get value by locator on opened page ${tender_minimalStep_amount_value_locator} ${tender_lot_minimal_step_amount_value_type}
524   - [return] ${return_value}
525   -
526   -Отримати інформацію із awards[0].documents[0].title
527   - [Documentation] Отримати значення поля minimalStep.amount для тендера tender_uaid.
528   -
529   -# ${tender_lot_minimal_step_amount_value_locator} = replace string ${tender_lot_minimal_step_amount_value_locator_tpl} %lot_id% ${lot_id}
530   -# click visible element ${tender_awards_negotiation_documents_btn_locator}
531   - open popup by btn locator ${tender_awards_negotiation_documents_btn_locator}
532   - ${return_value} = get value by locator on opened page ${tender_awards_0_documents_0_title_value_locator}
533   - click visible element ${tender_awards_negotiation_documents_close_btn_locator}
534   - [return] ${return_value}
535   -
536   -Wait For stage2button
537   - [Documentation] Очикування кнопки переводу до другого етапу
538   -
539   - Reload Page
540   - Page Should Contain Element ${tender_stage2_open_btn_locator}
541   -
542   -Отримати інформацію із qualificationPeriod.endDate
543   - [Documentation] Отримати значення поля qualificationPeriod.endDate
544   -
545   -# run keyword and ignore error run keyword if '${mode}' in 'belowThreshold below_funders' Wait Until Keyword Succeeds 600 s 30 s Wait For complaintPeriodendDate
546   -# run keyword and ignore error Wait Until Keyword Succeeds 600 s 30 s Wait For complaintPeriodendDate
547   - ${return_value} = get value by locator on opened page ${tender_qualificationPeriod_endDate_value_locator}
548   - ${return_value} = parse_complaintPeriod_date ${return_value}
549   - [return] ${return_value}
550   -
551   -wait for agreements status active
552   - [Documentation] Очикування статусу agreements active
553   -
554   - Reload Page
555   - ${return_value} = get value by locator on opened page ${tender_agreements_0_status_value_locator}
556   - Page Should Contain Element ${tender_agreements_status_active_value_locator}
557   -
558   -Wait date
559   - [Arguments] ${date}
560   - ${sleep}= wait_to_date ${date}
561   - Run Keyword If ${sleep} > 0 Sleep ${sleep}
562   -
563   -
564   -
1   -*** Variables ***
2   -
3   -#features
4   -${tender_features_title_value_locator_tpl} = jquery=#lots .tabs__pane--visible .feature-list-wrapper [data-title*="%feature_id%"] .hidden.info-wrapper .title
5   -${tender_features_description_value_locator_tpl} = jquery=#lots .tabs__pane--visible .feature-list-wrapper [data-title*="%feature_id%"] .hidden.info-wrapper .description
6   -${tender_features_featureof_value_locator_tpl} = jquery=#lots .tabs__pane--visible .feature-list-wrapper [data-title*="%feature_id%"] .hidden.info-wrapper .featureOf
7   -${tender_features_new_value_locator_tpl} = jquery=.info-row.features div[data-title*="%feature_id%"]
8   -
9   -
10   -#item view
11   -${tender_items_new_value_locator_tpl} = jquery=.item-item-wrapper[data-title*="%item_id%"]
12   -${tender_items_description_value_locator_tpl} = jquery=#lots .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] div.textvalue
13   -${tender_items_no_lot_description_value_locator_tpl} = jquery=.pseudo-table .item-item-wrapper[data-title*="%item_id%"] div.textvalue
14   -${tender_items_quantity_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .quantity-source
15   -${tender_items_quantity_value_type} = float
16   -${tender_items_unit_title_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .unit-title-source
17   -${tender_items_unit_code_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .unit-code-source
18   -${tender_items_classification_scheme_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .main-classification-scheme
19   -${tender_items_classification_code_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .main-classification-code
20   -${tender_items_classification_description_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .main-classification-description
21   -${tender_items_additional_classification_scheme_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .additional-classification-scheme
22   -${tender_items_additional_classification_code_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .additional-classification-code
23   -${tender_items_additional_classification_description_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .additional-classification-description
24   -${tender_items_delivery_country_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-country
25   -${tender_items_delivery_region_id_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-region
26   -${tender_items_delivery_postal_code_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-postalcode
27   -${tender_items_delivery_locality_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-locality
28   -${tender_items_delivery_street_address_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-street-address
29   -${tender_items_delivery_start_date_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-start-date-source
30   -${tender_items_delivery_end_date_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-end-date-source
31   -${tender_items_delivery_latitude_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-latitude
32   -${tender_items_delivery_longitude_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-longitude
33   -
34   -#${tender_item_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .textvalue.hidden
35   -${tender_item_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .description
36   -${tender_item_description_ru_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper [id$='-description_ru']
37   -${tender_item_description_en_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper [id$='-description_en']
38   -${tender_item_quantity_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .quantity-source
39   -${tender_item_quantity_value_type} = float
40   -${tender_item_unit_title_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .unit-title-source
41   -${tender_item_unit_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .unit-code-source
42   -${tender_item_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-scheme
43   -${tender_item_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-code
44   -${tender_item_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-description
45   -${tender_item_additional_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-scheme
46   -${tender_item_additional_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-code
47   -${tender_item_additional_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-description
48   -${tender_item_delivery_region_id_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-country
49   -${tender_item_delivery_postal_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-postalcode
50   -${tender_item_delivery_locality_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-locality
51   -${tender_item_delivery_street_address_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-street-address
52   -${tender_item_delivery_start_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-start-date-source
53   -${tender_item_delivery_end_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-end-date-source
54   -${tender_item_delivery_latitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-latitude
55   -${tender_item_delivery_longitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-longitude
56   -
57   -${tender_lot_item_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper div.textvalue
58   -${tender_lot_item_quantity_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .quantity-source
59   -${tender_lot_item_quantity_value_type} = float
60   -${tender_lot_item_unit_title_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .unit-title-source
61   -${tender_lot_item_unit_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .unit-code-source
62   -${tender_lot_item_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-scheme
63   -${tender_lot_item_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-code
64   -${tender_lot_item_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-description
65   -${tender_lot_item_additional_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-scheme
66   -${tender_lot_item_additional_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-code
67   -${tender_lot_item_additional_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-description
68   -${tender_lot_item_delivery_region_id_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-country
69   -${tender_lot_item_delivery_postal_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-postalcode
70   -${tender_lot_item_delivery_locality_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-locality
71   -${tender_lot_item_delivery_street_address_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-street-address
72   -${tender_lot_item_delivery_start_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-start-date-source
73   -${tender_lot_item_delivery_end_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-end-date-source
74   -${tender_lot_item_delivery_latitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-latitude
75   -${tender_lot_item_delivery_longitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-longitude
76   -
77   -${tender_procurementMethodType_value_locator} = jquery=#aside-part-pjax .aside__inner .opprocurementmethodtype
78   -${tender_complaintPeriod_endDate_value_locator} = jquery=#tender-general-info .info-row.complaint-period .end-date
79   -${tender_qualifications_0_status_value_locator} = jquery=.pjax-container .pseudo-table__row[qualification-index="0"] .qualification-info-wrapper .status-source
80   -${tender_qualifications_1_status_value_locator} = jquery=.pjax-container .pseudo-table__row[qualification-index="1"] .qualification-info-wrapper .status-source
81   -
82   -#lots
83   -${tender_lots_0_title_value_locator} = jquery=#lots .tabs__list .tabs__item--active .tabs__tab-big-text
84   -${tender_lots_0_description_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div:nth(1)
85   -${tender_lots_title_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue:first
86   -${tender_lots_description_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue.hidden
87   -${tender_lots_value_amount_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
88   -${tender_lots_value_amount_value_type} = float
89   -${tender_lots_value_currency_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
90   -${tender_lots_value_value_added_tax_included_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
91   -${tender_lots_minimal_step_amount_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .minimal-step-source.hidden
92   -${tender_lots_minimal_step_amount_value_type} = float
93   -${tender_lots_minimal_step_amount_currency_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
94   -${tender_lots_minimal_step_amount_value_added_tax_included_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden
95   -
96   -#docs and auction
97   -${tender_new_doc_locator_tpl} = jquery=.docs__list .docs__item.js-item .doc__title:contains("%doc_id%")
98   -${tender_new_doc_title_locator_tpl} = $('.docs__list .docs__item.js-item:contains("%doc_id%")').attr("data-title")
99   -#${tender_new_doc_locator_tpl} = jquery=.docs__list .docs__item.js-item:first .doc__title:contains("%doc_id%")
100   -${tender_auction_locator} = jquery=#auction-info
101   -${tender_auction_input_locator} = $('#auction-info a[href*="https://auction-staging"]').attr("href")
102   -${tender_auction_belowThreshold_locator} = jquery=#aside-part-pjax a[href*="https://auction-staging"]
103   -${tender_auction_belowThreshold_input_locator} = jquery=#aside-part-pjax a[href*="https://auction-staging"]
104   -${tender_auction_belowThreshold_value_locator} = $('#aside-part-pjax a[href*="https://auction-staging"]').attr("href")
105   -${tender_auctionPeriod_startDate_value_locator} = jquery=#tender-general-info .auction-start-date.hidden
106   -${tender_auctionPeriod_endDate_value_locator} = jquery=#tender-general-info .auction-end-date.hidden
107   -${tender_lots_0_auctionPeriod_endDate_value_locator} = jquery=#tender-general-info .auction-end-date.hidden
108   -
109   -
110   -#wait for status
111   -${tender_status_active_tendering_value_locator} = xpath=//*[contains(text(), "active.tendering")]
112   -${tender_status_active_auction_value_locator} = xpath=//*[contains(text(), "active.auction")]
113   -${tender_status_active_pre_qualification_value_locator} = xpath=//*[contains(text(), "active.pre-qualification")]
114   -${tender_status_complete_value_locator} = jquery=#aside-part-pjax .hidden.opstatus:contains(complete)
115   -${tender_status_active_stage2_pending_value_locator} = xpath=//*[contains(text(), "active.stage2.pending")]
116   -${tender_status_active_stage2_waiting_value_locator} = xpath=//*[contains(text(), "active.stage2.waiting")]
117   -${tender_status_active_complete_value_locator} = jquery=#aside-part-pjax .hidden.opstatus:contains(complete)
118   -${tender_status_active_qualification_value_locator} = xpath=//*[contains(text(), "active.qualification")]
119   -
120   -#funders
121   -${tender_funders_0_name_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .organization_name.hidden .definitions__value
122   -${tender_funders_0_address_countryName_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .country.hidden .definitions__value
123   -${tender_funders_0_address_locality_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .locality.hidden .definitions__value
124   -${tender_funders_0_address_postalCode_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .postcode.hidden .definitions__value
125   -${tender_funders_0_address_region_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .region.hidden .definitions__value
126   -${tender_funders_0_address_streetAddress_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .street-address.hidden .definitions__value
127   -${tender_funders_0_identifier_id_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .identifier_id .definitions__value
128   -${tender_funders_0_identifier_legalName_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .identifier_legal_name.hidden .definitions__value
129   -${tender_funders_0_identifier_scheme_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .identifier_scheme.hidden .definitions__value
130   -
131   -#negotiation
132   -#${tender_procuringEntity_contactPoint_name_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .contact-point-name.hidden .definitions__value
133   -#${tender_procuringEntity_contactPoint_telephone_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .contact-point-phone.hidden .definitions__value
134   -#${tender_procuringEntity_identifier_legalName_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .identifier_legal_name.hidden .definitions__value
135   -#${tender_procuringEntity_identifier_scheme_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .identifier_scheme.hidden .definitions__value
136   -${tender_procuringEntity_contactPoint_name_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.contact-point-name.hidden .definitions__value
137   -${tender_procuringEntity_contactPoint_telephone_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.contact-point-phone.hidden .definitions__value
138   -${tender_procuringEntity_identifier_legalName_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.identifier_legal_name.hidden .definitions__value
139   -${tender_procuringEntity_identifier_scheme_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.identifier_scheme.hidden .definitions__value
140   -
141   -${tender_procuringEntity_organization_name_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.organization-name.hidden .definitions__value
142   -${tender_procuringEntity_address_countryName_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.country.hidden .definitions__value
143   -${tender_procuringEntity_address_locality_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.locality.hidden .definitions__value
144   -${tender_procuringEntity_address_postalCode_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.postcode.hidden .definitions__value
145   -${tender_procuringEntity_address_region_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.region.hidden .definitions__value
146   -${tender_procuringEntity_address_streetAddress_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.street-address.hidden .definitions__value
147   -${tender_procuringEntity_contactPoint_url_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.url .definitions__value
148   -${tender_procuringEntity_identifier_id_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.identifier_id.hidden .definitions__value
149   -
150   -${tender_items_1_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .description
151   -${tender_items_1_quantity_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .quantity-source
152   -${tender_items_1_quantity_value_type} = float
153   -${tender_items_1_unit_title_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .unit-title-source
154   -${tender_items_1_unit_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .unit-code-source
155   -${tender_items_1_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .main-classification-scheme
156   -${tender_items_1_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .main-classification-code
157   -${tender_items_1_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .main-classification-description
158   -${tender_items_1_additional_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .additional-classification-scheme
159   -${tender_items_1_additional_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .additional-classification-code
160   -${tender_items_1_additional_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .additional-classification-description
161   -${tender_items_1_delivery_country_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-country
162   -${tender_items_1_delivery_region_id_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-region
163   -${tender_items_1_delivery_postal_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-postalcode
164   -${tender_items_1_delivery_locality_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-locality
165   -${tender_items_1_delivery_street_address_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-street-address
166   -${tender_items_1_delivery_start_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-start-date-source
167   -${tender_items_1_delivery_end_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-end-date-source
168   -${tender_items_1_delivery_latitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-latitude
169   -${tender_items_1_delivery_longitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-longitude
170   -
171   -
172   -${tender_awards_0_suppliers_0_contactPoint_telephone_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .contact-point-phone.hidden .definitions__value
173   -${tender_awards_0_suppliers_0_contactPoint_name_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .contact-point-name.hidden .definitions__value
174   -${tender_awards_0_suppliers_0_contactPoint_email_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .contact-point-email.hidden .definitions__value
175   -${tender_awards_0_suppliers_0_identifier_scheme_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .identifier_scheme.hidden .definitions__value
176   -${tender_awards_0_suppliers_0_identifier_legalName_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .identifier_legal_name.hidden .definitions__value
177   -${tender_awards_0_suppliers_0_address_countryName_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .country.hidden .definitions__value
178   -${tender_awards_0_suppliers_0_address_locality_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .locacity.hidden .definitions__value
179   -${tender_awards_0_suppliers_0_address_postalCode_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .postcode.hidden .definitions__value
180   -${tender_awards_0_suppliers_0_address_region_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .region.hidden .definitions__value
181   -${tender_awards_0_suppliers_0_address_streetAddress_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .street-address.hidden .definitions__value
182   -
183   -#esco
184   -${tender_NBUdiscountRate_value_locator} = jquery=#tender-general-info .nbu-discount-rate-source.hidden
185   -${tender_NBUdiscountRate_value_type} = float
186   -${tender_minimalStepPercentage_value_locator} = jquery=#tender-general-info .minimal-step-percentage-source.hidden
187   -${tender_minimalStepPercentage_value_type} = float
188   -${tender_fundingKind_value_locator} = jquery=#tender-general-info .funding-kind-source.hidden
189   -${tender_yearlyPaymentsPercentageRange_value_locator} = jquery=#tender-general-info .yearly-payments-percentage-range-source.hidden
190   -${tender_yearlyPaymentsPercentageRange_value_type} = float
191   -${tender_lots_0_minimalStepPercentage_value_locator} = jquery=#tender-general-info .minimal-step-percentage-source.hidden
192   -${tender_lots_0_minimalStepPercentage_value_type} = float
193   -${tender_lots_0_yearlyPaymentsPercentageRange_value_locator} = jquery=#tender-general-info .yearly-payments-percentage-range-source.hidden
194   -${tender_lots_0_yearlyPaymentsPercentageRange_value_type} = float
195   -
196   -#awards
197   -${tender_awards_0_complaintPeriod_endDate_value_locator} = jquery=#tender-general-info .complaint-period .value .end-date
198   -${tender_awards_1_complaintPeriod_endDate_value_locator} = jquery=#tender-general-info .complaint-period .value .end-date
199   -${tender_awards_complaintPeriod_endDate_value_locator} = jquery=.award-info-wrapper.hidden .complaint-period-end-date
200   -${tender_awards_negotiation_complaintPeriod_endDate_value_locator} = jquery=#bids-pjax .pseudo-table__cell .end-date
201   -#${tender_awards_complaintPeriod_endDate_value_locator} = jquery=#tender-contract-form .js-award-complaint-period-wrapper .end-date
202   -${tender_awards_negotiation_documents_btn_locator} = jquery=[href*="/tender/view-qualification-result-documents?award"]
203   -${tender_awards_negotiation_documents_close_btn_locator} = jquery=.modal.fade.fancybox-content .modal-footer .btn.btn-default
204   -${tender_awards_0_documents_0_title_value_locator} = jquery=.doc__table_title a[href*="https://public-docs-staging.prozorro.gov.ua"]
205   -${tender_awards_0_status_value_locator} = jquery=.award-info-wrapper.hidden .status-source
206   -
207   -#status contract
208   -#${tender_contracts_0_status_value_locator} = jquery=#contracts-pjax .tabs__pane--visible .definitions__item--offset-big .badge__text
209   -${tender_contracts_0_status_value_locator} = jquery=#contracts-pjax .tabs__pane--visible .status-source.hidden
210   -${tender_contracts_status_active_value_locator} = jquery=#contracts-pjax .tabs__pane--visible .status-source.hidden:contains(active)
211   -
212   -${wait_msg_contract} = Завантаження контракту буде
213   -
214   -#framework_agreement
215   -${tender_maxAwardsCount_value_locator} = jquery=#tender-general-info .max-award-count.hidden
216   -${tender_maxAwardsCount_value_type} = integer
217   -${tender_agreementDuration_value_locator} = jquery=#tender-general-info .agreement-duration
218   -${tender_agreements_0_status_value_locator} = jquery=.tabs__pane--visible[id*="tab-agreement-contract"] .status-source.hidden
219   -${tender_agreements_status_active_value_locator} = jquery=.tabs__pane--visible[id*="tab-agreement-contract"] .status-source.hidden:contains(active)
220   -
221   -${tender_agreements_0_agreementID_value_locator} = jquery=#agreement-contracts-list .agreement-info-wrapper.info-wrapper .agreement-id .value
Please register or login to post a comment