Commit 5ce9e70463ef86da6e42d697201c3a038b5bd62a

Authored by alexdiatlov
Committed by GitHub
2 parents 05d403f3 ef5191f3

Merge pull request #272 from ProzorroUKR/master

CS-7783 PQ test acceptance
@@ -217,6 +217,94 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status @@ -217,6 +217,94 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status
217 Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID} 217 Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID}
218 218
219 219
  220 +Можливість оголосити тендер з недоліками в параметрах
  221 + ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact_plan.yaml
  222 + ${ARTIFACT}= load_data_from ${file_path}
  223 + Log ${ARTIFACT.tender_uaid}
  224 + ${NUMBER_OF_LOTS}= Convert To Integer ${NUMBER_OF_LOTS}
  225 + ${NUMBER_OF_ITEMS}= Convert To Integer ${NUMBER_OF_ITEMS}
  226 + ${NUMBER_OF_MILESTONES}= Convert To Integer ${NUMBER_OF_MILESTONES}
  227 + ${WRONG_TENDER_DATE} Get Variable Value ${WRONG_TENDER_DATE} ${False}
  228 + ${EMPTY_PROFILE} Get Variable Value ${EMPTY_PROFILE} ${False}
  229 + ${WRONG_PROFILE} Get Variable Value ${PROFILE} ${True}
  230 + ${PROFILES_HIDDEN_STATUS} Get Variable Value ${PROFILES_HIDDEN_STATUS} ${False}
  231 + ${PROFILES_SHORTLISTEDFIRMS_EMPTY} Get Variable Value ${PROFILES_SHORTLISTEDFIRMS_EMPTY} ${False}
  232 + ${UNKNOWN_PROFILE} Get Variable Value ${UNKNOWN_PROFILE} ${False}
  233 + ${tender_parameters}= Create Dictionary
  234 + ... mode=${MODE}
  235 + ... number_of_items=${NUMBER_OF_ITEMS}
  236 + ... number_of_lots=${NUMBER_OF_LOTS}
  237 + ... number_of_milestones=${NUMBER_OF_MILESTONES}
  238 + ... tender_meat=${${TENDER_MEAT}}
  239 + ... lot_meat=${${LOT_MEAT}}
  240 + ... item_meat=${${ITEM_MEAT}}
  241 + ... api_host_url=${API_HOST_URL}
  242 + ... moz_integration=${${MOZ_INTEGRATION}}
  243 + ... vat_included=${${VAT_INCLUDED}}
  244 + ... road_index=${${ROAD_INDEX}}
  245 + ... gmdn_index=${${GMDN_INDEX}}
  246 + ... plan_tender=${${PLAN_TENDER}}
  247 + ... wrong_tender_date=${${WRONG_TENDER_DATE}}
  248 + ... empty_profile=${${EMPTY_PROFILE}}
  249 + ... wrong_profile=${${WRONG_PROFILE}}
  250 + ... profiles_hidden_status=${${PROFILES_HIDDEN_STATUS}}
  251 + ... profiles_shortlistedfirms_empty=${${PROFILES_SHORTLISTEDFIRMS_EMPTY}}
  252 + ... unknown_profile=${${UNKNOWN_PROFILE}}
  253 + ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE}
  254 + ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND}
  255 + Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE}
  256 + Run keyword if '${FUNDING_KIND}' != '${None}' Set to dictionary ${tender_parameters} fundingKind=${FUNDING_KIND}
  257 + :FOR ${username} IN ${viewer} ${tender_owner}
  258 + \ ${status}= Run Keyword And Return Status List Should Contain Value ${USERS.users['${username}']} plan_client
  259 + \ Run Keyword If ${status} Exit For Loop
  260 + ${plan_data}= знайти план за ідентифікатором ${ARTIFACT.tender_uaid} ${username}
  261 + Log ${plan_data}
  262 + ${tender_data}= Підготувати дані для створення тендера ${tender_parameters} ${plan_data}
  263 + ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_data}
  264 + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер ${adapted_data} ${ARTIFACT.tender_uaid}
  265 + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}
  266 + Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID}
  267 +
  268 +
  269 +Можливість оголосити тендер без 2-ї фази commit-у
  270 + ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact_plan.yaml
  271 + ${ARTIFACT}= load_data_from ${file_path}
  272 + Log ${ARTIFACT.tender_uaid}
  273 + ${NUMBER_OF_LOTS}= Convert To Integer ${NUMBER_OF_LOTS}
  274 + ${NUMBER_OF_ITEMS}= Convert To Integer ${NUMBER_OF_ITEMS}
  275 + ${NUMBER_OF_MILESTONES}= Convert To Integer ${NUMBER_OF_MILESTONES}
  276 + ${TENDER_WRONG_STATUS} Get Variable Value ${TENDER_WRONG_STATUS} ${False}
  277 + ${tender_parameters}= Create Dictionary
  278 + ... mode=${MODE}
  279 + ... number_of_items=${NUMBER_OF_ITEMS}
  280 + ... number_of_lots=${NUMBER_OF_LOTS}
  281 + ... number_of_milestones=${NUMBER_OF_MILESTONES}
  282 + ... tender_meat=${${TENDER_MEAT}}
  283 + ... lot_meat=${${LOT_MEAT}}
  284 + ... item_meat=${${ITEM_MEAT}}
  285 + ... api_host_url=${API_HOST_URL}
  286 + ... moz_integration=${${MOZ_INTEGRATION}}
  287 + ... vat_included=${${VAT_INCLUDED}}
  288 + ... road_index=${${ROAD_INDEX}}
  289 + ... gmdn_index=${${GMDN_INDEX}}
  290 + ... plan_tender=${${PLAN_TENDER}}
  291 + ... tender_wrong_status=${${TENDER_WRONG_STATUS}}
  292 + ${DIALOGUE_TYPE}= Get Variable Value ${DIALOGUE_TYPE}
  293 + ${FUNDING_KIND}= Get Variable Value ${FUNDING_KIND}
  294 + Run keyword if '${DIALOGUE_TYPE}' != '${None}' Set to dictionary ${tender_parameters} dialogue_type=${DIALOGUE_TYPE}
  295 + Run keyword if '${FUNDING_KIND}' != '${None}' Set to dictionary ${tender_parameters} fundingKind=${FUNDING_KIND}
  296 + :FOR ${username} IN ${viewer} ${tender_owner}
  297 + \ ${status}= Run Keyword And Return Status List Should Contain Value ${USERS.users['${username}']} plan_client
  298 + \ Run Keyword If ${status} Exit For Loop
  299 + ${plan_data}= знайти план за ідентифікатором ${ARTIFACT.tender_uaid} ${username}
  300 + Log ${plan_data}
  301 + ${tender_data}= Підготувати дані для створення тендера ${tender_parameters} ${plan_data}
  302 + ${adapted_data}= Адаптувати дані для оголошення тендера ${tender_data}
  303 + ${TENDER_UAID}= Run As ${tender_owner} Створити тендер без 2-ї фази commit-у ${adapted_data} ${ARTIFACT.tender_uaid}
  304 + Set To Dictionary ${USERS.users['${tender_owner}']} initial_data=${adapted_data}
  305 + Set To Dictionary ${TENDER} TENDER_UAID=${TENDER_UAID}
  306 +
  307 +
220 Можливість створити об'єкт моніторингу 308 Можливість створити об'єкт моніторингу
221 ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers} 309 ${period_intervals}= compute_intrs ${BROKERS} ${used_brokers}
222 ${accelerator}= Get Variable Value ${accelerator} 310 ${accelerator}= Get Variable Value ${accelerator}
@@ -2084,6 +2172,17 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status @@ -2084,6 +2172,17 @@ ${ERROR_PLAN_MESSAGE}= Calling method 'get_plan' failed: ResourceGone: {"status
2084 Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids} 2172 Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids} ${features_ids}
2085 2173
2086 2174
  2175 +Можливість подати цінову пропозицію priceQuotation користувачем ${username}
  2176 + ${bid}= Підготувати дані для подання пропозиції priceQuotation ${username}
  2177 + ${bidresponses}= Create Dictionary bid=${bid}
  2178 + Set To Dictionary ${USERS.users['${username}']} bidresponses=${bidresponses}
  2179 + ${lots}= Get Variable Value ${USERS.users['${tender_owner}'].initial_data.data.lots} ${None}
  2180 + ${lots_ids}= Run Keyword IF ${lots}
  2181 + ... Отримати ідентифікатори об’єктів ${username} lots
  2182 + ... ELSE Set Variable ${None}
  2183 + Run As ${username} Подати цінову пропозицію ${TENDER['TENDER_UAID']} ${bid} ${lots_ids}
  2184 +
  2185 +
2087 Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username} 2186 Неможливість подати цінову пропозицію без прив’язки до лоту користувачем ${username}
2088 ${bid}= Підготувати дані для подання пропозиції 2187 ${bid}= Підготувати дані для подання пропозиції
2089 ${values}= Get Variable Value ${bid.data.lotValues[0]} 2188 ${values}= Get Variable Value ${bid.data.lotValues[0]}
@@ -237,6 +237,7 @@ Library openprocurement_client.utils @@ -237,6 +237,7 @@ Library openprocurement_client.utils
237 ${status}= Set Variable If 'below' in '${MODE}' active.enquiries ${status} 237 ${status}= Set Variable If 'below' in '${MODE}' active.enquiries ${status}
238 ${status}= Set Variable If 'selection' in '${MODE}' draft.pending ${status} 238 ${status}= Set Variable If 'selection' in '${MODE}' draft.pending ${status}
239 ${status}= Set Variable If '${status}'=='${EMPTY}' active ${status} 239 ${status}= Set Variable If '${status}'=='${EMPTY}' active ${status}
  240 + ${status}= Set Variable If 'priceQuotation' in '${MODE}' draft.publishing ${status}
240 Set To Dictionary ${tender['data']} status=${status} 241 Set To Dictionary ${tender['data']} status=${status}
241 ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender 242 ${tender}= Call Method ${USERS.users['${username}'].client} patch_tender
242 ... ${tender.data.id} 243 ... ${tender.data.id}
@@ -272,6 +273,29 @@ Library openprocurement_client.utils @@ -272,6 +273,29 @@ Library openprocurement_client.utils
272 [return] ${tender.data.tenderID} 273 [return] ${tender.data.tenderID}
273 274
274 275
  276 +Створити тендер без 2-ї фази commit-у
  277 + [Arguments] ${username} ${tender_data} ${plan_uaid}
  278 + ${file_path}= Get Variable Value ${ARTIFACT_FILE} artifact_plan.yaml
  279 + ${ARTIFACT}= load_data_from ${file_path}
  280 + Log ${ARTIFACT.tender_owner_access_token}
  281 + Log ${ARTIFACT.tender_id}
  282 + ${tender}= Call Method ${USERS.users['${username}'].tender_create_client} create_tender
  283 + ... ${ARTIFACT.tender_id}
  284 + ... ${tender_data}
  285 + ... access_token=${ARTIFACT.tender_owner_access_token}
  286 + Log ${tender}
  287 + ${access_token}= Get Variable Value ${tender.access.token}
  288 + ${tender_uaid}= Get Variable Value ${tender.data.tenderID}
  289 + ${tender_id}= Get Variable Value ${tender.data.id}
  290 + :FOR ${user} IN @{USED_ROLES}
  291 + \ Set To Dictionary ${USERS.users['${${user}}'].id_map} ${tender_uaid} ${tender_id}
  292 + Log ${\n}${API_HOST_URL}/api/${API_VERSION}/tenders/${tender.data.id}${\n} WARN
  293 + Set To Dictionary ${USERS.users['${username}']} access_token=${access_token}
  294 + Set To Dictionary ${USERS.users['${username}']} tender_data=${tender}
  295 + Log ${USERS.users['${username}'].tender_data}
  296 + [return] ${tender.data.tenderID}
  297 +
  298 +
275 Створити об'єкт моніторингу 299 Створити об'єкт моніторингу
276 [Arguments] ${username} ${monitoring_data} 300 [Arguments] ${username} ${monitoring_data}
277 ${monitoring}= Call Method ${USERS.users['${username}'].dasu_client} create_monitoring ${monitoring_data} 301 ${monitoring}= Call Method ${USERS.users['${username}'].dasu_client} create_monitoring ${monitoring_data}
@@ -1963,6 +1987,15 @@ Library openprocurement_client.utils @@ -1963,6 +1987,15 @@ Library openprocurement_client.utils
1963 ... access_token=${tender.access.token} 1987 ... access_token=${tender.access.token}
1964 Log ${reply} 1988 Log ${reply}
1965 1989
  1990 +
  1991 +Отримати інформацію із рішення
  1992 + [Arguments] ${username} ${tender_uaid} ${field_name} ${award_index}=${None}
  1993 + openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
  1994 + ${award}= Get Variable Value ${USERS.users['${username}'].tender_data.data.awards[${award_index}]}
  1995 + ${field_value}= Get Variable Value ${award['status']}
  1996 + [Return] ${field_value}
  1997 +
  1998 +
1966 ############################################################################## 1999 ##############################################################################
1967 # Limited procurement 2000 # Limited procurement
1968 ############################################################################## 2001 ##############################################################################
@@ -2015,7 +2048,7 @@ Library openprocurement_client.utils @@ -2015,7 +2048,7 @@ Library openprocurement_client.utils
2015 ... ${cancellation_id} 2048 ... ${cancellation_id}
2016 ... ${document_id} 2049 ... ${document_id}
2017 ... ${new_description} 2050 ... ${new_description}
2018 - ${cancellation}= run keyword if '${procurementMethodType}' in ['belowThreshold', 'reporting', 'closeFrameworkAgreementSelectionUA', 'negotiation', 'negotiation.quick'] 2051 + ${cancellation}= run keyword if '${procurementMethodType}' in ['belowThreshold', 'reporting', 'closeFrameworkAgreementSelectionUA', 'negotiation', 'negotiation.quick', 'priceQuotation']
2019 ... openprocurement_client.Підтвердити скасування закупівлі ${username} ${tender_uaid} ${cancellation_id} 2052 ... openprocurement_client.Підтвердити скасування закупівлі ${username} ${tender_uaid} ${cancellation_id}
2020 ... ELSE openprocurement_client.Перевести скасування закупівлі в період очікування ${username} ${tender_uaid} ${cancellation_id} 2053 ... ELSE openprocurement_client.Перевести скасування закупівлі в період очікування ${username} ${tender_uaid} ${cancellation_id}
2021 Set To Dictionary ${USERS.users['${tender_owner}']} cancellation_data=${cancellation} 2054 Set To Dictionary ${USERS.users['${tender_owner}']} cancellation_data=${cancellation}
@@ -80,6 +80,9 @@ Quinta: @@ -80,6 +80,9 @@ Quinta:
80 tender: [0, 30] 80 tender: [0, 30]
81 framework_selection: 81 framework_selection:
82 accelerator: 360 82 accelerator: 360
  83 + priceQuotation:
  84 + tender: [0, 15]
  85 + accelerator: 1440
83 keywords_file: openprocurement_client 86 keywords_file: openprocurement_client
84 roles: 87 roles:
85 provider: Tender_User 88 provider: Tender_User
@@ -22,6 +22,7 @@ mode_open = ["belowThreshold", "aboveThresholdUA", "aboveThresholdEU", @@ -22,6 +22,7 @@ mode_open = ["belowThreshold", "aboveThresholdUA", "aboveThresholdEU",
22 "aboveThresholdUA.defense", "competitiveDialogueUA", "competitiveDialogueEU", "esco", 22 "aboveThresholdUA.defense", "competitiveDialogueUA", "competitiveDialogueEU", "esco",
23 "closeFrameworkAgreementUA"] 23 "closeFrameworkAgreementUA"]
24 mode_limited = ["reporting", "negotiation.quick", "negotiation"] 24 mode_limited = ["reporting", "negotiation.quick", "negotiation"]
  25 +mode_selective = ["priceQuotation"]
25 violationType = ["corruptionDescription", "corruptionProcurementMethodType", "corruptionChanges", 26 violationType = ["corruptionDescription", "corruptionProcurementMethodType", "corruptionChanges",
26 "corruptionPublicDisclosure", "corruptionBiddingDocuments", "documentsForm", 27 "corruptionPublicDisclosure", "corruptionBiddingDocuments", "documentsForm",
27 "corruptionAwarded", "corruptionCancelled", "corruptionContracting"] 28 "corruptionAwarded", "corruptionCancelled", "corruptionContracting"]
@@ -367,12 +368,20 @@ def test_tender_data_planning(params): @@ -367,12 +368,20 @@ def test_tender_data_planning(params):
367 data["tender"]["procurementMethod"] = "open" 368 data["tender"]["procurementMethod"] = "open"
368 if params['mode'] in mode_limited: 369 if params['mode'] in mode_limited:
369 data["tender"]["procurementMethod"] = "limited" 370 data["tender"]["procurementMethod"] = "limited"
  371 + if params['mode'] in mode_selective:
  372 + data["tender"]["procurementMethod"] = "selective"
370 if params.get('number_of_breakdown'): 373 if params.get('number_of_breakdown'):
371 value_data = breakdown_value_generation(params['number_of_breakdown'], data['budget']['amount']) 374 value_data = breakdown_value_generation(params['number_of_breakdown'], data['budget']['amount'])
372 for value in value_data: 375 for value in value_data:
373 breakdown_element = test_breakdown_data() 376 breakdown_element = test_breakdown_data()
374 breakdown_element['value']['amount'] = value 377 breakdown_element['value']['amount'] = value
375 data['budget']['breakdown'].append(breakdown_element) 378 data['budget']['breakdown'].append(breakdown_element)
  379 + if params['mode'] == "priceQuotation":
  380 + for buyer in data['buyers']:
  381 + del buyer['kind']
  382 + del buyer['address']
  383 + del data['procuringEntity']['kind']
  384 + del data['procuringEntity']['address']
376 return munchify(data) 385 return munchify(data)
377 386
378 387
@@ -704,6 +713,36 @@ def test_bid_data_selection(data, index): @@ -704,6 +713,36 @@ def test_bid_data_selection(data, index):
704 return bid 713 return bid
705 714
706 715
  716 +def test_bid_data_pq(data, over_limit=False, missing_criteria=False, more_than_two_requirements=False, invalid_expected_value=False):
  717 + bid = test_bid_data()
  718 + bid.data.requirementResponses = []
  719 + if 'criteria' in data:
  720 + for criteria in data['criteria']:
  721 + for requirements in criteria['requirementGroups']:
  722 + for requirement in requirements['requirements']:
  723 + if requirement.get('expectedValue'):
  724 + value = requirement.get('expectedValue')
  725 + if invalid_expected_value:
  726 + value = "invalid_value"
  727 + else:
  728 + value = fake.random_int(min=int(requirement.get('minValue')), max=int(data['value']['amount']))
  729 + requirement = {
  730 + "requirement": {"id": requirement['id']},
  731 + "value": value
  732 + }
  733 + bid.data.requirementResponses.append(requirement)
  734 + if not more_than_two_requirements:
  735 + break
  736 + bid.data['status'] = 'draft'
  737 + bid.data.update(test_bid_value(fake.random_int(min=1, max=int(data['value']['amount'])),
  738 + data['value']['valueAddedTaxIncluded']))
  739 + if over_limit:
  740 + bid.data['value']['amount'] = int(data['value']['amount']) + fake.random_int(min=1, max=1000)
  741 + if missing_criteria:
  742 + del bid['data']['requirementResponses'][-1]
  743 + return bid
  744 +
  745 +
707 def test_supplier_data(): 746 def test_supplier_data():
708 return munchify({ 747 return munchify({
709 "data": { 748 "data": {
@@ -1033,6 +1072,33 @@ def test_tender_data_esco(params, submissionMethodDetails, plan_data): @@ -1033,6 +1072,33 @@ def test_tender_data_esco(params, submissionMethodDetails, plan_data):
1033 return data 1072 return data
1034 1073
1035 1074
  1075 +def test_tender_data_pq(params, submissionMethodDetails, plan_data):
  1076 + data = test_tender_data(params, plan_data, ('tender',), submissionMethodDetails)
  1077 + del data["minimalStep"]
  1078 + del data["title_en"]
  1079 + data['procurementMethodType'] = 'priceQuotation'
  1080 + data["procuringEntity"]["kind"] = random.choice(['authority', 'defense', 'general', 'other', 'social', 'special'])
  1081 + data['profile'] = fake.valid_profile()
  1082 + if params.get('wrong_profile'):
  1083 + data['profile'] = fake.invalid_profile()
  1084 + if params.get('wrong_tender_date'):
  1085 + start_date = data['tenderPeriod']['startDate']
  1086 + from op_robot_tests.tests_files.service_keywords import add_minutes_to_date
  1087 + data['tenderPeriod']['endDate'] = add_minutes_to_date(start_date, 1)
  1088 + if params.get('empty_profile'):
  1089 + data['profile'] = ""
  1090 + if params.get('tender_wrong_status'):
  1091 + data['status'] = fake.wrong_status()
  1092 + if params.get('profiles_hidden_status'):
  1093 + data['profile'] = fake.profiles_hidden()
  1094 + if params.get('profiles_shortlistedfirms_empty'):
  1095 + data['profile'] = fake.shortlistedfirms_empty()
  1096 + if params.get('unknown_profile'):
  1097 + data['profile'] = fake.tender_unknown_profile()
  1098 +
  1099 + return munchify(data)
  1100 +
  1101 +
1036 def test_milestone_data(): 1102 def test_milestone_data():
1037 return munchify({ 1103 return munchify({
1038 "code": random.choice(["prepayment", "postpayment"]), 1104 "code": random.choice(["prepayment", "postpayment"]),
@@ -356,6 +356,20 @@ Get Broker Property By Username @@ -356,6 +356,20 @@ Get Broker Property By Username
356 [Return] ${bid} 356 [Return] ${bid}
357 357
358 358
  359 +Підготувати дані для подання пропозиції priceQuotation
  360 + [Arguments] ${username}
  361 + ${BID_OVER_LIMIT}= Get Variable Value ${BID_OVER_LIMIT} ${False}
  362 + ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING}= Get Variable Value ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING} ${False}
  363 + ${BID_SAME_GROUPS_DIFFERENT_CRITERIA}= Get Variable Value ${BID_SAME_GROUPS_DIFFERENT_CRITERIA} ${False}
  364 + ${BID_INVALID_EXPECTED_VALUE}= Get Variable Value ${BID_INVALID_EXPECTED_VALUE} ${False}
  365 + ${bid}= test_bid_data_pq ${USERS.users['${username}'].tender_data.data}
  366 + ... ${BID_OVER_LIMIT}
  367 + ... ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING}
  368 + ... ${BID_SAME_GROUPS_DIFFERENT_CRITERIA}
  369 + ... ${BID_INVALID_EXPECTED_VALUE}
  370 + [Return] ${bid}
  371 +
  372 +
359 Підготувати дані про постачальника 373 Підготувати дані про постачальника
360 [Arguments] ${username} ${lotIndex}=${-1} 374 [Arguments] ${username} ${lotIndex}=${-1}
361 ${lotIndex}= Convert To Integer ${lotIndex} 375 ${lotIndex}= Convert To Integer ${lotIndex}
@@ -1040,6 +1054,12 @@ Require Failure @@ -1040,6 +1054,12 @@ Require Failure
1040 Порівняти об'єкти ${left} ${right} 1054 Порівняти об'єкти ${left} ${right}
1041 1055
1042 1056
  1057 +Звірити статус рішення
  1058 + [Arguments] ${username} ${tender_uaid} ${left} ${award_index}=${None}
  1059 + ${right}= Run as ${username} Отримати інформацію із рішення ${tender_uaid} status ${award_index}
  1060 + Порівняти об'єкти ${left} ${right}
  1061 +
  1062 +
1043 Звірити статус cancellations 1063 Звірити статус cancellations
1044 [Arguments] ${username} ${tender_uaid} ${left} ${cancellation_index} 1064 [Arguments] ${username} ${tender_uaid} ${left} ${cancellation_index}
1045 ${right}= Run as ${username} Отримати інформацію із cancellation ${tender_uaid} status ${cancellation_index} 1065 ${right}= Run as ${username} Отримати інформацію із cancellation ${tender_uaid} status ${cancellation_index}
@@ -1238,6 +1258,32 @@ Require Failure @@ -1238,6 +1258,32 @@ Require Failure
1238 ... active.qualification.stand-still 1258 ... active.qualification.stand-still
1239 1259
1240 1260
  1261 +Дочекатись зміни статусу unsuccessful
  1262 + [Arguments] ${username} ${tender_uaid}
  1263 + Оновити LAST_MODIFICATION_DATE
  1264 + Дочекатись синхронізації з майданчиком ${username}
  1265 + Wait until keyword succeeds
  1266 + ... 40 min 15 sec
  1267 + ... 15 sec
  1268 + ... Звірити статус тендера
  1269 + ... ${username}
  1270 + ... ${tender_uaid}
  1271 + ... unsuccessful
  1272 +
  1273 +
  1274 +Дочекатись зміни статусу рішення
  1275 + [Arguments] ${username} ${status} ${award_index}=${None}
  1276 + Дочекатись синхронізації з майданчиком ${username}
  1277 + Wait until keyword succeeds
  1278 + ... 8 min 15 sec
  1279 + ... 15 sec
  1280 + ... Звірити статус рішення
  1281 + ... ${username}
  1282 + ... ${TENDER['TENDER_UAID']}
  1283 + ... ${status}
  1284 + ... ${award_index}
  1285 +
  1286 +
1241 Дочекатись дати закінчення періоду подання скарг 1287 Дочекатись дати закінчення періоду подання скарг
1242 [Arguments] ${username} 1288 [Arguments] ${username}
1243 Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate} 1289 Дочекатись дати ${USERS.users['${username}'].tender_data.data.complaintPeriod.endDate}
@@ -1343,4 +1389,17 @@ Require Failure @@ -1343,4 +1389,17 @@ Require Failure
1343 \ Set To Dictionary ${contract_data.data.unitPrices[${index}].value} amount=${value} 1389 \ Set To Dictionary ${contract_data.data.unitPrices[${index}].value} amount=${value}
1344 ${contract_data}= munch_dict arg=${contract_data} 1390 ${contract_data}= munch_dict arg=${contract_data}
1345 Log ${contract_data} 1391 Log ${contract_data}
1346 - [Return] ${contract_data}  
  1392 + [Return] ${contract_data}
  1393 +
  1394 +
  1395 +Дочекатися припинення процесу
  1396 + [Arguments] ${username} ${tender_uaid}
  1397 + Оновити LAST_MODIFICATION_DATE
  1398 + Дочекатись синхронізації з майданчиком ${username}
  1399 + Wait until keyword succeeds
  1400 + ... 10 min 15 sec
  1401 + ... 15 sec
  1402 + ... Звірити статус тендера
  1403 + ... ${username}
  1404 + ... ${tender_uaid}
  1405 + ... draft.unsuccessful
@@ -33,6 +33,12 @@ class OP_Provider(BaseProvider): @@ -33,6 +33,12 @@ class OP_Provider(BaseProvider):
33 rationale_types = _fake_data.rationale_types 33 rationale_types = _fake_data.rationale_types
34 title_of_milestones = _fake_data.title_of_milestones 34 title_of_milestones = _fake_data.title_of_milestones
35 procuringTenderers = _fake_data.procuringTenderers 35 procuringTenderers = _fake_data.procuringTenderers
  36 + valid_profile_ids = _fake_data.valid_profile_ids
  37 + invalid_profile_ids = _fake_data.invalid_profile_ids
  38 + tender_wrong_status = _fake_data.wrong_status_when_create_tender
  39 + profiles_hidden_status = _fake_data.profiles_hidden_status
  40 + profiles_shortlistedfirms_empty = _fake_data.profiles_shortlistedfirms_empty
  41 + unknown_profile = _fake_data.unknown_profiles
36 42
37 @classmethod 43 @classmethod
38 def randomize_nb_elements(self, number=10, le=60, ge=140): 44 def randomize_nb_elements(self, number=10, le=60, ge=140):
@@ -223,4 +229,28 @@ class OP_Provider(BaseProvider): @@ -223,4 +229,28 @@ class OP_Provider(BaseProvider):
223 229
224 @classmethod 230 @classmethod
225 def milestone_title(self): 231 def milestone_title(self):
226 - return self.random_element(self.title_of_milestones)  
  232 + return self.random_element(self.title_of_milestones)
  233 +
  234 + @classmethod
  235 + def valid_profile(self):
  236 + return self.random_element(self.valid_profile_ids)
  237 +
  238 + @classmethod
  239 + def invalid_profile(self):
  240 + return self.random_element(self.invalid_profile_ids)
  241 +
  242 + @classmethod
  243 + def wrong_status(self):
  244 + return self.random_element(self.tender_wrong_status)
  245 +
  246 + @classmethod
  247 + def profiles_hidden(self):
  248 + return self.random_element(self.profiles_hidden_status)
  249 +
  250 + @classmethod
  251 + def shortlistedfirms_empty(self):
  252 + return self.random_element(self.profiles_shortlistedfirms_empty)
  253 +
  254 + @classmethod
  255 + def tender_unknown_profile(self):
  256 + return self.random_element(self.unknown_profile)
@@ -8153,5 +8153,33 @@ @@ -8153,5 +8153,33 @@
8153 "dateOfInvoicing", 8153 "dateOfInvoicing",
8154 "endDateOfTheReportingPeriod", 8154 "endDateOfTheReportingPeriod",
8155 "anotherEvent" 8155 "anotherEvent"
  8156 + ],
  8157 + "valid_profile_ids": [
  8158 + "999999-33140000-555666-42000111"
  8159 + ],
  8160 + "invalid_profile_ids": [
  8161 + "333222-33140000-555666-42000111",
  8162 + "333222-33140000-999888-42000111",
  8163 + "999999-33140000-222111-42000111"
  8164 + ],
  8165 + "profiles_hidden_status": [
  8166 + "333222-33140000-555666-42000111"
  8167 + ],
  8168 + "profiles_shortlistedfirms_empty": [
  8169 + "333222-33140000-999888-42000111",
  8170 + "999999-33140000-222111-42000111"
  8171 + ],
  8172 + "unknown_profiles": [
  8173 + "834922-33600000-555555-55555555"
  8174 + ],
  8175 + "wrong_status_when_create_tender": [
  8176 + "draft.unsuccessful",
  8177 + "draft.publishing",
  8178 + "active.tendering",
  8179 + "active.qualification",
  8180 + "active.awarded",
  8181 + "cancelled",
  8182 + "unsuccessful",
  8183 + "complete"
8156 ] 8184 ]
8157 } 8185 }
  1 +*** Settings ***
  2 +Resource base_keywords.robot
  3 +Suite Setup Test Suite Setup
  4 +Suite Teardown Test Suite Teardown
  5 +
  6 +
  7 +*** Variables ***
  8 +${MODE} priceQuotation
  9 +@{USED_ROLES} tender_owner provider provider1 provider2 viewer
  10 +@{USED_PROVIDERS} provider provider1 provider2
  11 +${RESOURCE} tenders
  12 +
  13 +${NUMBER_OF_ITEMS} ${1}
  14 +${NUMBER_OF_LOTS} ${1}
  15 +${NUMBER_OF_MILESTONES} ${0}
  16 +${TENDER_MEAT} ${False}
  17 +${LOT_MEAT} ${False}
  18 +${ITEM_MEAT} ${False}
  19 +${MOZ_INTEGRATION} ${False}
  20 +${VAT_INCLUDED} ${True}
  21 +${ROAD_INDEX} ${False}
  22 +${GMDN_INDEX} ${False}
  23 +${PLAN_TENDER} ${True}
  24 +
  25 +*** Test Cases ***
  26 +Неможливість оголосити тендер з tenderPeriod:endDate < 2 робочих дні
  27 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  28 + ... tender_owner
  29 + ... ${USERS.users['${tender_owner}'].broker}
  30 + ... create_tender_wrong_date level1
  31 + ... critical
  32 + [Teardown] Оновити LAST_MODIFICATION_DATE
  33 + Set Test Variable ${WRONG_TENDER_DATE} ${True}
  34 + ${value}= Run Keyword And Expect Error * Можливість оголосити тендер з недоліками в параметрах
  35 + ${value}= Convert To Lowercase ${value}
  36 + Should Contain ${value} the tenderperiod cannot end earlier than 2 business days after the start
  37 +
  38 +
  39 +Неможливість оголосити тендер з порожнім profile параметром
  40 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  41 + ... tender_owner
  42 + ... ${USERS.users['${tender_owner}'].broker}
  43 + ... create_tender_empty_profile level1
  44 + ... critical
  45 + [Teardown] Оновити LAST_MODIFICATION_DATE
  46 + Set Test Variable ${EMPTY_PROFILE} ${True}
  47 + ${value}= Run Keyword And Expect Error * Можливість оголосити тендер з недоліками в параметрах
  48 + ${value}= Convert To Lowercase ${value}
  49 + Should Contain ${value} the profile value doesn't match id pattern
  50 +
  51 +
  52 +Неможливість явно оголосити тендер з доступних статусів за виключенням draft
  53 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  54 + ... tender_owner
  55 + ... ${USERS.users['${tender_owner}'].broker}
  56 + ... create_tender_without_2_phase_commit level1
  57 + ... critical
  58 + [Teardown] Оновити LAST_MODIFICATION_DATE
  59 + Set Test Variable ${TENDER_WRONG_STATUS} ${True}
  60 + Можливість оголосити тендер без 2-ї фази commit-у
  61 +
  62 +
  63 +Відображення статуса тендера draft
  64 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  65 + ... viewer
  66 + ... ${USERS.users['${viewer}'].broker}
  67 + ... tender_view_status_draft
  68 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  69 + Звірити поле тендера із значенням ${tender_owner} ${TENDER['TENDER_UAID']}
  70 + ... draft
  71 + ... status
  72 +
  73 +
  74 +Неможливість змінити tenderPeriod:endDate < 2 робочих дні
  75 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  76 + ... tender_owner
  77 + ... ${USERS.users['${tender_owner}'].broker}
  78 + ... patch_tender_wrong_date level1
  79 + ... critical
  80 + [Teardown] Оновити LAST_MODIFICATION_DATE
  81 + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.startDate} 1
  82 + Перевірити неможливість зміни поля tenderPeriod.endDate тендера на значення ${endDate} для користувача ${tender_owner}
  83 +
  84 +
  85 +Неможливість змінити procuringEntity.kind на central
  86 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  87 + ... tender_owner
  88 + ... ${USERS.users['${tender_owner}'].broker}
  89 + ... patch_tender_wrong_procuringEntity_kind level1
  90 + ... critical
  91 + [Teardown] Оновити LAST_MODIFICATION_DATE
  92 + Перевірити неможливість зміни поля procuringEntity.kind тендера на значення central для користувача ${tender_owner}
  93 +
  94 +
  95 +Неможливість змінити статус з draft на один із інших, крім draft.publishing
  96 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  97 + ... tender_owner
  98 + ... ${USERS.users['${tender_owner}'].broker}
  99 + ... impossible_change_tender_status_form_draft_to_another_except_draft_publishing level1
  100 + ... critical
  101 + [Teardown] Оновити LAST_MODIFICATION_DATE
  102 + @{statuses}= Create List
  103 + ... draft.unsuccessful
  104 + ... active.tendering
  105 + ... active.qualification
  106 + ... active.awarded
  107 + ... complete
  108 + ... cancelled
  109 + ... unsuccessful
  110 + :FOR ${status} IN @{statuses}
  111 + \ ${value}= Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} status ${status}
  112 + \ Convert To Lowercase ${value}
  113 + \ Should Contain ${value} can't switch tender from status (draft) to (${status})
  114 +
  115 +
  116 +Можливість оголосити тендер з профайлом, статус якого hidden
  117 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  118 + ... tender_owner
  119 + ... ${USERS.users['${tender_owner}'].broker}
  120 + ... create_tender_hidden level1
  121 + ... critical
  122 + [Teardown] Оновити LAST_MODIFICATION_DATE
  123 + Set Test Variable ${PROFILES_HIDDEN_STATUS} ${True}
  124 + Можливість оголосити тендер з недоліками в параметрах
  125 +
  126 +
  127 +Можливість оголосити тендер з пустим shortlistedfirms
  128 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  129 + ... tender_owner
  130 + ... ${USERS.users['${tender_owner}'].broker}
  131 + ... create_tender_shortlistedfirms_empty level1
  132 + ... critical
  133 + [Teardown] Оновити LAST_MODIFICATION_DATE
  134 + Set Test Variable ${PROFILES_SHORTLISTEDFIRMS_EMPTY} ${True}
  135 + Можливість оголосити тендер з недоліками в параметрах
  136 +
  137 +
  138 +Можливість оголосити тендер з неіснуючим профайлом
  139 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  140 + ... tender_owner
  141 + ... ${USERS.users['${tender_owner}'].broker}
  142 + ... create_tender_unknown_profile level1
  143 + ... critical
  144 + [Teardown] Оновити LAST_MODIFICATION_DATE
  145 + Set Test Variable ${UNKNOWN_PROFILE} ${True}
  146 + Можливість оголосити тендер з недоліками в параметрах
  147 +
  148 +
  149 +Можливість оголосити тендер
  150 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  151 + ... tender_owner
  152 + ... ${USERS.users['${tender_owner}'].broker}
  153 + ... create_tender level1
  154 + ... critical
  155 + [Teardown] Оновити LAST_MODIFICATION_DATE
  156 + Можливість оголосити тендер
  157 +
  158 +
  159 +Можливість оголосити тендер з некоректним профайлом
  160 + [Tags] ${USERS.users['${tender_owner}'].broker}: Оголошення тендера
  161 + ... tender_owner
  162 + ... ${USERS.users['${tender_owner}'].broker}
  163 + ... create_tender_invalid_profile level1
  164 + ... critical
  165 + [Teardown] Оновити LAST_MODIFICATION_DATE
  166 + Set Test Variable ${WROGN_PROFILE} ${True}
  167 + Можливість оголосити тендер з недоліками в параметрах
  168 +
  169 +
  170 +Неможливість змінити статус з draft.publishing на active.tendering
  171 + [Tags] ${USERS.users['${tender_owner}'].broker}: Неможливість редагувати тендер
  172 + ... tender_owner
  173 + ... ${USERS.users['${tender_owner}'].broker}
  174 + ... impossible_change_tendering_status level1
  175 + ... critical
  176 + [Teardown] Оновити LAST_MODIFICATION_DATE
  177 + ${value}= Require Failure ${tender_owner} Внести зміни в тендер ${TENDER['TENDER_UAID']} status active.tendering
  178 + Convert To Lowercase ${value}
  179 + Should Contain ${value} can't switch tender from status (draft.publishing) to (active.tendering)
  180 +
  181 +
  182 +Можливість знайти тендер по ідентифікатору
  183 + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера
  184 + ... viewer tender_owner provider provider1
  185 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  186 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  187 + ... find_tender level1
  188 + ... critical
  189 + Можливість знайти тендер по ідентифікатору для усіх користувачів
  190 +
  191 +
  192 +Відображення заголовку тендера
  193 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  194 + ... viewer
  195 + ... ${USERS.users['${viewer}'].broker}
  196 + ... tender_view level1
  197 + ... critical
  198 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  199 + Звірити відображення поля title тендера для користувача ${viewer}
  200 +
  201 +
  202 +Відображення заголовку тендера російською мовою
  203 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  204 + ... viewer
  205 + ... ${USERS.users['${viewer}'].broker}
  206 + ... tender_view level1
  207 + ... non-critical
  208 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  209 + Звірити відображення поля title_ru тендера для користувача ${viewer}
  210 +
  211 +
  212 +Відсутнє відображення заголовку тендера англійською мовою якщо при створенні не вказувались дані
  213 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  214 + ... viewer
  215 + ... ${USERS.users['${viewer}'].broker}
  216 + ... tender_view level1
  217 + ... non-critical
  218 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  219 + Run Keyword And Expect Error * Звірити відображення поля title_en тендера для користувача ${viewer}
  220 +
  221 +
  222 +Відображення опису тендера
  223 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  224 + ... viewer
  225 + ... ${USERS.users['${viewer}'].broker}
  226 + ... tender_view level2
  227 + ... non-critical
  228 + Звірити відображення поля description тендера для користувача ${viewer}
  229 +
  230 +
  231 +Відображення бюджету тендера
  232 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  233 + ... viewer
  234 + ... ${USERS.users['${viewer}'].broker}
  235 + ... tender_view_value level1
  236 + ... critical
  237 + Звірити відображення поля value.amount тендера для усіх користувачів
  238 +
  239 +
  240 +Відображення валюти тендера
  241 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  242 + ... viewer
  243 + ... ${USERS.users['${viewer}'].broker}
  244 + ... tender_view_value level2
  245 + ... non-critical
  246 + Звірити відображення поля value.currency тендера для користувача ${viewer}
  247 +
  248 +
  249 +Відображення ПДВ в бюджеті тендера
  250 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  251 + ... viewer
  252 + ... ${USERS.users['${viewer}'].broker}
  253 + ... tender_view_value level2
  254 + ... non-critical
  255 + Звірити відображення поля value.valueAddedTaxIncluded тендера для користувача ${viewer}
  256 +
  257 +
  258 +Відображення дати початку доставки номенклатур тендера
  259 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  260 + ... viewer
  261 + ... ${USERS.users['${viewer}'].broker}
  262 + ... tender_view_deliveryDate level2
  263 + ... non-critical
  264 + Звірити відображення дати deliveryDate.startDate усіх предметів для користувача ${viewer}
  265 +
  266 +
  267 +Відображення дати кінця доставки номенклатур тендера
  268 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  269 + ... viewer
  270 + ... ${USERS.users['${viewer}'].broker}
  271 + ... tender_view_deliveryDate level2
  272 + ... non-critical
  273 + Звірити відображення дати deliveryDate.endDate усіх предметів для користувача ${viewer}
  274 +
  275 +
  276 +Відображення кількості номенклатур тендера
  277 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення номенклатури тендера
  278 + ... viewer
  279 + ... ${USERS.users['${viewer}'].broker}
  280 + ... tender_view_quantity level2
  281 + ... non-critical
  282 + Звірити відображення поля quantity усіх предметів для користувача ${viewer}
  283 +
  284 +
  285 +Неможливість змінити дату закінчення періоду подання пропозиції на 1 день після публікації
  286 + [Tags] ${USERS.users['${tender_owner}'].broker}: Неможливість редагувати тендер
  287 + ... tender_owner
  288 + ... ${USERS.users['${tender_owner}'].broker}
  289 + ... extend_tendering_period level3
  290 + ... critical
  291 + [Teardown] Оновити LAST_MODIFICATION_DATE
  292 + ${endDate}= add_minutes_to_date ${USERS.users['${tender_owner}'].tender_data.data.tenderPeriod.endDate} 1
  293 + Перевірити неможливість зміни поля tenderPeriod.endDate тендера на значення ${endDate} для користувача ${tender_owner}
  294 +
  295 +
  296 +Відображення зміни закінчення періоду прийому пропозицій тендера
  297 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних тендера
  298 + ... viewer
  299 + ... ${USERS.users['${viewer}'].broker}
  300 + ... extend_tendering_period level2
  301 + ... non-critical
  302 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  303 + Звірити відображення дати tenderPeriod.endDate тендера для усіх користувачів
  304 +
  305 +
  306 +Можливість пройти процедуру валідації
  307 + [Tags] ${USERS.users['${viewer}'].broker}: Валідація тендера
  308 + ... viewer tender_owner provider provider1
  309 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  310 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  311 + ... successfully_tender_validation level1
  312 + ... critical
  313 + Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
  314 +
  315 +
  316 +Неможливість змінити заголовок тендера під час прийому пропозицій
  317 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування тендера
  318 + ... tender_owner
  319 + ... ${USERS.users['${tender_owner}'].broker}
  320 + ... change_data_active_tendering
  321 + ... critical
  322 + ${new_title}= create_fake_title
  323 + Перевірити неможливість зміни поля title тендера на значення ${new_title} для користувача ${tender_owner}
  324 + Remove From Dictionary ${USERS.users['${tender_owner}'].tender_data.data} title
  325 +
  326 +
  327 +Неможливість подати пропозицію з перевищеним лімітом
  328 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  329 + ... provider
  330 + ... ${USERS.users['${provider}'].broker}
  331 + ... impossible_make_bid_with_over_amount
  332 + ... non-critical
  333 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  334 + Set Test Variable ${BID_OVER_LIMIT} ${True}
  335 + Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider}
  336 +
  337 +
  338 +Неможливість подати пропозицію при відсутності однієї з характеристик
  339 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  340 + ... provider
  341 + ... ${USERS.users['${provider}'].broker}
  342 + ... impossible_make_bid
  343 + ... non-critical
  344 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  345 + Set Test Variable ${BID_ONE_OF_THE_CRITERIAS_IS_MISSING} ${True}
  346 + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider}
  347 + ${value}= Convert To Lowercase ${value}
  348 + Should Contain ${value} missing references for criterias
  349 +
  350 +
  351 +Неможливість подати пропозицію, якщо більше однієї характеристики знаходяться в різних групах, але в одній критерії
  352 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  353 + ... provider
  354 + ... ${USERS.users['${provider}'].broker}
  355 + ... impossible_make_bid
  356 + ... non-critical
  357 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  358 + Set Test Variable ${BID_SAME_GROUPS_DIFFERENT_CRITERIA} ${True}
  359 + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider}
  360 + ${value}= Convert To Lowercase ${value}
  361 + Should Contain ${value} conflicting in criteria
  362 +
  363 +
  364 +Неможливість подати пропозицію, якщо характеристика не відповідає вимозі
  365 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  366 + ... provider
  367 + ... ${USERS.users['${provider}'].broker}
  368 + ... impossible_make_bid
  369 + ... non-critical
  370 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  371 + Set Test Variable ${BID_INVALID_EXPECTED_VALUE} ${True}
  372 + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider}
  373 + ${value}= Convert To Lowercase ${value}
  374 + Should Contain ${value} does not match expected value
  375 +
  376 +
  377 +Можливість подати пропозицію першим учасником
  378 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  379 + ... provider
  380 + ... ${USERS.users['${provider}'].broker}
  381 + ... make_bid_by_provider level1
  382 + ... critical
  383 + [Setup] Дочекатись дати початку прийому пропозицій ${provider} ${TENDER['TENDER_UAID']}
  384 + [Teardown] Оновити LAST_MODIFICATION_DATE
  385 + Можливість подати цінову пропозицію priceQuotation користувачем ${provider}
  386 +
  387 +
  388 +Можливість зменшити пропозицію на 5% першим учасником
  389 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  390 + ... provider
  391 + ... ${USERS.users['${provider}'].broker}
  392 + ... modify_bid_by_provider
  393 + ... critical
  394 + [Teardown] Оновити LAST_MODIFICATION_DATE
  395 + Можливість зменшити пропозицію до 95 відсотків користувачем ${provider}
  396 +
  397 +
  398 +Можливість завантажити документ в пропозицію першим учасником
  399 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  400 + ... provider
  401 + ... ${USERS.users['${provider}'].broker}
  402 + ... add_doc_to_bid_by_provider
  403 + ... critical
  404 + [Teardown] Оновити LAST_MODIFICATION_DATE
  405 + Можливість завантажити документ в пропозицію користувачем ${provider}
  406 +
  407 +
  408 +Можливість змінити документацію цінової пропозиції першим учасником
  409 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  410 + ... provider
  411 + ... ${USERS.users['${provider}'].broker}
  412 + ... add_doc_to_bid_by_provider
  413 + ... critical
  414 + [Teardown] Оновити LAST_MODIFICATION_DATE
  415 + Можливість змінити документацію цінової пропозиції користувачем ${provider}
  416 +
  417 +
  418 +Можливість подати пропозицію другим учасником
  419 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  420 + ... provider1
  421 + ... ${USERS.users['${provider1}'].broker}
  422 + ... make_bid_by_provider1 level1
  423 + ... critical
  424 + [Setup] Дочекатись дати початку прийому пропозицій ${provider1} ${TENDER['TENDER_UAID']}
  425 + [Teardown] Оновити LAST_MODIFICATION_DATE
  426 + Можливість подати цінову пропозицію priceQuotation користувачем ${provider1}
  427 +
  428 +
  429 +Можливість подати пропозицію третім учасником
  430 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  431 + ... provider1
  432 + ... ${USERS.users['${provider1}'].broker}
  433 + ... make_bid_by_provider2 level1
  434 + ... critical
  435 + [Setup] Дочекатись дати початку прийому пропозицій ${provider2} ${TENDER['TENDER_UAID']}
  436 + [Teardown] Оновити LAST_MODIFICATION_DATE
  437 + Можливість подати цінову пропозицію priceQuotation користувачем ${provider2}
  438 +
  439 +
  440 +Неможливість видалити пропозицію першим учасником під час прийому пропозицій
  441 + [Tags] ${USERS.users['${provider1}'].broker}: Скасування пропозиції
  442 + ... provider
  443 + ... ${USERS.users['${provider1}'].broker}
  444 + ... delete_bid_while_tendering_period_by_provider
  445 + ... non-critical
  446 + ${value}= Run Keyword And Expect Error * Можливість скасувати цінову пропозицію користувачем ${provider}
  447 + ${value}= Convert To Lowercase ${value}
  448 + Should Contain ${value} can't delete bid in price quotation tender
  449 +
  450 +
  451 +Можливість дочекатись дати початку періоду кваліфікації
  452 + [Tags] ${USERS.users['${provider}'].broker}: Подання кваліфікації
  453 + ... provider
  454 + ... ${USERS.users['${provider}'].broker}
  455 + ... awardPeriod_startDate
  456 + ... critical
  457 + [Teardown] Оновити LAST_MODIFICATION_DATE
  458 + Дочекатись дати початку періоду кваліфікації ${provider} ${TENDER['TENDER_UAID']}
  459 +
  460 +
  461 +Відображення пропозиції з мінімальною ціною на розгляді
  462 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  463 + ... viewer
  464 + ... ${USERS.users['${viewer}'].broker}
  465 + ... award_view_min_amount
  466 + ... non-critical
  467 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  468 + ${min_bid_amount}= Отримати мінімальне значення amount з поданих пропозицій
  469 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  470 + Log ${min_bid_amount}
  471 + Log ${award}
  472 + Порівняти об'єкти ${min_bid_amount} ${award.value.amount}
  473 +
  474 +
  475 +Можливість завантажити документ рішення кваліфікаційної комісії для підтвердження постачальника
  476 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  477 + ... tender_owner
  478 + ... ${USERS.users['${tender_owner}'].broker}
  479 + ... qualification_add_doc_to_first_award
  480 + ... critical
  481 + ${file_path} ${file_name} ${file_content}= create_fake_doc
  482 + Run As ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${file_path} ${TENDER['TENDER_UAID']} 0
  483 + Remove File ${file_path}
  484 +
  485 +
  486 +Неможливість кваліфікуватися замовником
  487 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  488 + ... tender_owner
  489 + ... ${USERS.users['${tender_owner}'].broker}
  490 + ... impossible_approve_first_award_by_customer
  491 + ... critical
  492 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  493 + [Teardown] Оновити LAST_MODIFICATION_DATE
  494 + ${file_path} ${file_name} ${file_content}= create_fake_doc
  495 + Run Keyword And Expect Error * Run As ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${file_path} ${TENDER['TENDER_UAID']} 0
  496 + Run Keyword And Expect Error * Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0
  497 + Remove File ${file_path}
  498 +
  499 +
  500 +Неможливість скасувати своє рішення на етапі кваліфікації
  501 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  502 + ... provider
  503 + ... provider1
  504 + ... provider2
  505 + ... ${USERS.users['${tender_owner}'].broker}
  506 + ... impossible_cancel_1_award_qualification_by_provider
  507 + ... critical
  508 + ${user}= Пошук постачальника пропозиції з awards по індексу 0
  509 + Run Keyword And Expect Error * Run As ${user} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 0
  510 +
  511 +
  512 +Можливість дискваліфікуватися постачальником
  513 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  514 + ... provider
  515 + ... provider1
  516 + ... provider2
  517 + ... disqualification_first_award_by_provider
  518 + ... critical
  519 + ${user}= Пошук постачальника пропозиції з awards по індексу 0
  520 + Run As ${user} Дискваліфікувати постачальника ${TENDER['TENDER_UAID']} 0
  521 +
  522 +
  523 +Неможливість видалити пропозицію учасником після закінчення прийому пропозицій
  524 + [Tags] ${USERS.users['${provider1}'].broker}: Подання пропозиції
  525 + ... provider
  526 + ... ${USERS.users['${provider1}'].broker}
  527 + ... cancel_bid_after_tendering_period_by_provider
  528 + ... non-critical
  529 + ${value}= Run Keyword And Expect Error * Можливість скасувати цінову пропозицію користувачем ${provider}
  530 + ${value}= Convert To Lowercase ${value}
  531 + Should Contain ${value} can't delete bid in current (active.qualification) tender status
  532 +
  533 +
  534 +Можливість дискваліфікації другого постачальника, якщо 2 дні не було підтвердження
  535 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  536 + ... tender_owner
  537 + ... ${USERS.users['${tender_owner}'].broker}
  538 + ... qualification_reject_second_award_after_2_days
  539 + ... critical
  540 + Дочекатись зміни статусу рішення ${tender_owner} unsuccessful 1
  541 +
  542 +
  543 +Можливість кваліфікувати постачальником першої пропозиції
  544 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  545 + ... provider
  546 + ... provider1
  547 + ... provider2
  548 + ... qualification_approve_first_award_by_provider
  549 + ... critical
  550 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  551 + [Teardown] Оновити LAST_MODIFICATION_DATE
  552 + ${user}= Пошук постачальника пропозиції з awards по індексу 0
  553 + Run As ${user} Підтвердити постачальника ${TENDER['TENDER_UAID']} 0
  554 +
  555 +
  556 +Можливість кваліфікувати постачальником другої пропозиції
  557 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  558 + ... provider
  559 + ... provider1
  560 + ... provider2
  561 + ... qualification_approve_second_award_by_provider
  562 + ... critical
  563 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  564 + [Teardown] Оновити LAST_MODIFICATION_DATE
  565 + ${user}= Пошук постачальника пропозиції з awards по індексу 1
  566 + Run As ${user} Підтвердити постачальника ${TENDER['TENDER_UAID']} 1
  567 +
  568 +
  569 +Можливість кваліфікувати третього постачальника
  570 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  571 + ... provider
  572 + ... provider1
  573 + ... provider2
  574 + ... qualification_approve_third_award_by_provider
  575 + ... critical
  576 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  577 + [Teardown] Оновити LAST_MODIFICATION_DATE
  578 + ${user}= Пошук постачальника пропозиції з awards по індексу 2
  579 + Run As ${user} Підтвердити постачальника ${TENDER['TENDER_UAID']} 2
  580 +
  581 +
  582 +Неможливість відмовитися постачальником від третього підтвердження
  583 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  584 + ... provider
  585 + ... provider1
  586 + ... provider2
  587 + ... ${USERS.users['${tender_owner}'].broker}
  588 + ... impossible_cancel_3_award_qualification_by_provider
  589 + ... critical
  590 + ${user}= Пошук постачальника пропозиції з awards по індексу 2
  591 + Run Keyword And Expect Error * Run As ${user} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 2
  592 +
  593 +
  594 +Можливість відмовитися замовником від третього підтвердження
  595 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  596 + ... tender_owner
  597 + ... ${USERS.users['${tender_owner}'].broker}
  598 + ... qualification_cancel_3_award_qualification_by_customer
  599 + ... critical
  600 + Run As ${tender_owner} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 2
  601 +
  602 +
  603 +Неможливість повторно кваліфікувати постачальником четверте підтвердження
  604 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  605 + ... provider
  606 + ... provider1
  607 + ... provider2
  608 + ... impossible_approve_fourth_award_by_provider
  609 + ... critical
  610 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  611 + [Teardown] Оновити LAST_MODIFICATION_DATE
  612 + ${user}= Пошук постачальника пропозиції з awards по індексу 3
  613 + Run Keyword And Expect Error * Run As ${user} Підтвердити постачальника ${TENDER['TENDER_UAID']} 3
  614 +
  615 +
  616 +Можливість підтвердженя постачальника замовником
  617 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  618 + ... tender_owner
  619 + ... ${USERS.users['${tender_owner}'].broker}
  620 + ... qualification_approve_4_award_by_customer
  621 + ... critical
  622 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  623 + [Teardown] Оновити LAST_MODIFICATION_DATE
  624 + ${file_path} ${file_name} ${file_content}= create_fake_doc
  625 + Run As ${tender_owner} Завантажити документ рішення кваліфікаційної комісії ${file_path} ${TENDER['TENDER_UAID']} 3
  626 + Run As ${tender_owner} Підтвердити постачальника ${TENDER['TENDER_UAID']} 3
  627 + Remove File ${file_path}
  628 +
  629 +
  630 +Можливість відмовитися замовником від четвертого підтвердження
  631 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  632 + ... tender_owner
  633 + ... ${USERS.users['${tender_owner}'].broker}
  634 + ... qualification_cancel_4_award_qualification_by_customer
  635 + ... critical
  636 + Run As ${tender_owner} Скасування рішення кваліфікаційної комісії ${TENDER['TENDER_UAID']} 3
  637 +
  638 +
  639 +Можливість відхилити постачальника замовником
  640 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес кваліфікації
  641 + ... tender_owner
  642 + ... ${USERS.users['${tender_owner}'].broker}
  643 + ... qualification_reject_fifth_award
  644 + ... critical
  645 + Run As ${tender_owner} Дискваліфікувати постачальника ${TENDER['TENDER_UAID']} 4
  646 +
  647 +
  648 +Відображення статусу завершення тендеру
  649 + [Tags] ${USERS.users['${viewer}'].broker}: Завершення тендера
  650 + ... viewer tender_owner provider provider1
  651 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  652 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  653 + ... unsuccefully_tender level1
  654 + ... critical
  655 + Дочекатись зміни статусу unsuccessful ${viewer} ${TENDER['TENDER_UAID']}
  656 +
  657 +
  658 +Відображення статусу завершення, якщо не було подано коректного профайлу
  659 + [Tags] ${USERS.users['${viewer}'].broker}: Завершення тендера
  660 + ... viewer tender_owner provider provider1
  661 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  662 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  663 + ... unsuccessfully_tender_verification_wrong_profile level1
  664 + ... critical
  665 + Дочекатися припинення процесу ${viewer} ${TENDER['TENDER_UAID']}
  666 +
  667 +
  668 +Відображення причини відхилення тендера, якщо профайл із hidden статусом
  669 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  670 + ... viewer
  671 + ... ${USERS.users['${viewer}'].broker}
  672 + ... tender_unsuccessfully_reason_profile_hidden
  673 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  674 + ... Обраний профіль неактивний в системі Prozorro.Market
  675 + ... unsuccessfulReason
  676 +
  677 +
  678 +Відображення причини відхилення тендера, якщо shortlistedfirms пустий
  679 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  680 + ... viewer
  681 + ... ${USERS.users['${viewer}'].broker}
  682 + ... tender_unsuccessfully_reason_shortlistedfirms_empty
  683 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  684 + ... В обраному профілі немає активних постачальників
  685 + ... unsuccessfulReason
  686 +
  687 +
  688 +Відображення причини відхилення тендера, якщо профайл неіснуючий
  689 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  690 + ... viewer
  691 + ... ${USERS.users['${viewer}'].broker}
  692 + ... tender_unsuccessfully_reason_unknown_profile
  693 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  694 + ... Обраний профіль не існує в системі Prozorro.Market
  695 + ... unsuccessfulReason
  696 +
  697 +
  698 +
  699 +Неможливість подати пропозицію в статусі draft
  700 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  701 + ... provider
  702 + ... ${USERS.users['${provider}'].broker}
  703 + ... impossible_make_bid_when_draft
  704 + ... non-critical
  705 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  706 + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider}
  707 + ${value}= Convert To Lowercase ${value}
  708 + Should Contain ${value} can't add bid in current (draft) tender status
  709 +
  710 +
  711 +Неможливість подати пропозицію в статусі draft.unsuccessful
  712 + [Tags] ${USERS.users['${provider}'].broker}: Подання пропозиції
  713 + ... provider
  714 + ... ${USERS.users['${provider}'].broker}
  715 + ... impossible_make_bid_when_draft_unsuccessful
  716 + ... non-critical
  717 + [Setup] Дочекатись синхронізації з майданчиком ${provider}
  718 + ${value}= Run Keyword And Expect Error * Можливість подати цінову пропозицію priceQuotation користувачем ${provider}
  719 + ${value}= Convert To Lowercase ${value}
  720 + Should Contain ${value} can't add bid in current (draft.unsuccessful) tender status
  721 +
  722 +
  723 +Відображення статусу завершення, якщо не було подано жодних пропозицій
  724 + [Tags] ${USERS.users['${viewer}'].broker}: Завершення тендера
  725 + ... viewer tender_owner provider provider1
  726 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  727 + ... ${USERS.users['${provider}'].broker} ${USERS.users['${provider1}'].broker}
  728 + ... unsuccefully_tender_without_bids level1
  729 + ... critical
  730 + Дочекатись зміни статусу unsuccessful ${viewer} ${TENDER['TENDER_UAID']}
  731 +
  732 +
  733 +Відображення вартості угоди без урахування ПДВ
  734 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  735 + ... viewer
  736 + ... ${USERS.users['${viewer}'].broker}
  737 + ... contract_view
  738 + ... non-critical
  739 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  740 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  741 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  742 + Log ${award}
  743 + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer}
  744 + Log ${contract}
  745 + Log ${award.value.amount}
  746 + Звірити відображення поля contracts[${contract_index}].value.amountNet тендера із ${award.value.amount} для користувача ${viewer}
  747 +
  748 +
  749 +Відображення вартості угоди
  750 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  751 + ... viewer
  752 + ... ${USERS.users['${viewer}'].broker}
  753 + ... contract_view
  754 + ... non-critical
  755 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  756 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  757 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  758 + Log ${award}
  759 + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer}
  760 + Log ${contract}
  761 + Log ${award.value.amount}
  762 + Звірити відображення поля contracts[${contract_index}].value.amount тендера із ${award.value.amount} для користувача ${viewer}
  763 +
  764 +
  765 +Неможливість зменшити ціну договору без ПДВ на суму більшу за 20% від ціни договору з ПДВ (закупівля з ПДВ)
  766 +# contract:value:amountNet can be <= contract:value:amount but no more than on contract:value:amount/1.2 if valueAddedTaxIncluded=ture
  767 +# lots:value:valueAddedTaxIncluded:true - contract:value:valueAddedTaxIncluded:true
  768 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  769 + ... tender_owner
  770 + ... ${USERS.users['${tender_owner}'].broker}
  771 + ... modify_contract_invalid_amountNet_tender_vat_true
  772 + ... critical
  773 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  774 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  775 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  776 + ${invalid_amountNet}= Evaluate ${award.value.amount} / 2
  777 + ${value}= Require Failure ${tender_owner} Редагувати угоду
  778 + ... ${TENDER['TENDER_UAID']}
  779 + ... ${contract_index}
  780 + ... value.amountNet
  781 + ... ${invalid_amountNet}
  782 + Should Contain ${value} Amount should be greater than amountNet and differ by no more than 20.0%
  783 +
  784 +
  785 +Можливість редагувати вартість угоди без урахування ПДВ
  786 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  787 + ... tender_owner
  788 + ... ${USERS.users['${tender_owner}'].broker}
  789 + ... modify_contract_amount_net
  790 + ... critical
  791 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  792 + [Teardown] Оновити LAST_MODIFICATION_DATE
  793 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  794 + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer}
  795 + ${amount_net}= create_fake_amount_net ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded}
  796 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  797 + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net}
  798 + Run As ${tender_owner} Редагувати угоду
  799 + ... ${TENDER['TENDER_UAID']}
  800 + ... ${contract_index}
  801 + ... value.amountNet
  802 + ... ${amount_net}
  803 +
  804 +
  805 +Відображення відредагованої вартості угоди без урахування ПДВ
  806 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  807 + ... viewer
  808 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  809 + ... contract_view_new_amountNet
  810 + ... non-critical
  811 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  812 + ${amount_net}= Get Variable Value ${USERS.users['${tender_owner}'].new_amount_net}
  813 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  814 + ${amount_net_field}= Set Variable contracts[${contract_index}].value.amountNet
  815 + Звірити відображення поля ${amount_net_field} тендера із ${amount_net} для користувача ${viewer}
  816 +
  817 +
  818 +Можливість редагувати вартість угоди
  819 + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer}
  820 + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner}
  821 + [Tags] ${tender_owner_data.broker}: Редагування угоди
  822 + ... tender_owner
  823 + ... ${tender_owner_data.broker}
  824 + ... modify_contract_value
  825 + ... critical
  826 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  827 + [Teardown] Оновити LAST_MODIFICATION_DATE
  828 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  829 + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer}
  830 + ${amount}= create_fake_amount ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded}
  831 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  832 + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount}
  833 + Run As ${tender_owner} Редагувати угоду
  834 + ... ${TENDER['TENDER_UAID']}
  835 + ... ${contract_index}
  836 + ... value.amount
  837 + ... ${amount}
  838 +
  839 +
  840 +Відображення відредагованої вартості угоди
  841 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  842 + ... viewer
  843 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  844 + ... contract_view_new_amount
  845 + ... non-critical
  846 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  847 + ${amount}= Get Variable Value ${USERS.users['${tender_owner}'].new_amount}
  848 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  849 + ${amount_field}= Set Variable contracts[${contract_index}].value.amount
  850 + Звірити відображення поля ${amount_field} тендера із ${amount} для користувача ${viewer}
  851 +
  852 +
  853 +Неможливість вказати ціну договору з ПДВ більше ніж результат проведення аукціону
  854 +# contract:value:amount should be <= award.value.amount if valueAddedTaxIncluded=ture
  855 +# lots:value:valueAddedTaxIncluded:true - contract:value:valueAddedTaxIncluded:true
  856 +# lots:value:valueAddedTaxIncluded:true - contract:value:valueAddedTaxIncluded:false
  857 +# lots:value:valueAddedTaxIncluded:false - contract:value:valueAddedTaxIncluded:false
  858 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  859 + ... tender_owner
  860 + ... ${USERS.users['${tender_owner}'].broker}
  861 + ... modify_contract_invalid_amount
  862 + ... critical
  863 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  864 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  865 + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer}
  866 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  867 + ${amount}= Evaluate ${award.value.amount} * 2
  868 + ${value}= Require Failure ${tender_owner} Редагувати угоду
  869 + ... ${TENDER['TENDER_UAID']}
  870 + ... ${contract_index}
  871 + ... value.amount
  872 + ... ${amount}
  873 + Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${True}' and '${contract.value.valueAddedTaxIncluded}' == '${True}' and '${MODE}' == 'open_esco'
  874 + ... Should Contain ${value} Can't update amount for contract value
  875 + ... ELSE
  876 + ... Should Contain ${value} Amount should be less or equal to awarded amount
  877 + Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${True}' and '${contract.value.valueAddedTaxIncluded}' == '${False}'
  878 + ... Should Contain ${value} Amount should be less or equal to awarded amount
  879 + Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${False}' and '${contract.value.valueAddedTaxIncluded}' == '${False}'
  880 + ... Should Contain ${value} Amount should be less or equal to awarded amount
  881 +
  882 +
  883 +Можливість встановити дату підписання угоди
  884 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  885 + ... tender_owner
  886 + ... ${USERS.users['${tender_owner}'].broker}
  887 + ... modify_contract
  888 + ... critical
  889 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  890 + [Teardown] Оновити LAST_MODIFICATION_DATE
  891 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  892 + ${dateSigned}= create_fake_date
  893 + Set to dictionary ${USERS.users['${tender_owner}']} dateSigned=${dateSigned}
  894 + Run As ${tender_owner} Встановити дату підписання угоди ${TENDER['TENDER_UAID']} ${contract_index} ${dateSigned}
  895 +
  896 +
  897 +Можливість вказати період дії угоди
  898 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди
  899 + ... tender_owner
  900 + ... ${USERS.users['${tender_owner}'].broker}
  901 + ... modify_contract
  902 + ... critical
  903 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  904 + [Teardown] Оновити LAST_MODIFICATION_DATE
  905 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  906 + ${startDate}= create_fake_date
  907 + ${endDate}= add_minutes_to_date ${startDate} 10
  908 + Set to dictionary ${USERS.users['${tender_owner}']} contract_startDate=${startDate} contract_endDate=${endDate}
  909 + Run As ${tender_owner} Вказати період дії угоди ${TENDER['TENDER_UAID']} ${contract_index} ${startDate} ${endDate}
  910 +
  911 +
  912 +Можливість укласти угоду для закупівлі
  913 + [Tags] ${USERS.users['${tender_owner}'].broker}: Процес укладання угоди
  914 + ... tender_owner
  915 + ... ${USERS.users['${tender_owner}'].broker}
  916 + ... contract_sign level1
  917 + ... critical
  918 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  919 + [Teardown] Оновити LAST_MODIFICATION_DATE
  920 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  921 + Run As ${tender_owner} Підтвердити підписання контракту ${TENDER['TENDER_UAID']} ${contract_index}
  922 +
  923 +
  924 +Відображення статусу підписаної угоди з постачальником закупівлі
  925 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  926 + ... viewer
  927 + ... ${USERS.users['${viewer}'].broker}
  928 + ... contract_sign
  929 + ... critical
  930 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  931 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  932 + Run As ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
  933 + Звірити відображення поля contracts[${contract_index}].status тендера із active для користувача ${viewer}
  934 +
  935 +
  936 +Можливість знайти закупівлю по ідентифікатору
  937 + [Tags] ${USERS.users['${viewer}'].broker}: Пошук тендера
  938 + ... ${USERS.users['${tender_owner}'].broker}: Пошук тендера
  939 + ... viewer tender_owner
  940 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  941 + ... find_tender_contract
  942 + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer}
  943 + ${CONTRACT_UAID}= Get variable value ${USERS.users['${tender_owner}'].tender_data.data.contracts[${contract_index}].contractID}
  944 + Set Suite Variable ${CONTRACT_UAID}
  945 +
  946 +
  947 +Можливість знайти договір по ідентифікатору
  948 + [Tags] ${USERS.users['${viewer}'].broker}: Пошук договору
  949 + ... ${USERS.users['${tender_owner}'].broker}: Пошук договору
  950 + ... viewer tender_owner
  951 + ... ${USERS.users['${viewer}'].broker} ${USERS.users['${tender_owner}'].broker}
  952 + ... find_contract
  953 + :FOR ${username} IN @{used_roles}
  954 + \ Run As ${${username}} Пошук договору по ідентифікатору ${CONTRACT_UAID}
  955 +
  956 +
  957 +Можливість отримати доступ до договору
  958 + [Tags] ${USERS.users['${tender_owner}'].broker}: Отримання прав доступу до договору
  959 + ... tender_owner
  960 + ... ${USERS.users['${tender_owner}'].broker}
  961 + ... access_contract
  962 + Run As ${tender_owner} Отримати доступ до договору ${CONTRACT_UAID}
  963 +
  964 +
  965 +Можливість внести зміну до умов договору
  966 + [Tags] ${USERS.users['${tender_owner}'].broker}: Внесення зміни
  967 + ... tender_owner
  968 + ... ${USERS.users['${tender_owner}'].broker}
  969 + ... submit_change
  970 + [Teardown] Оновити LAST_MODIFICATION_DATE
  971 + ${change_data}= Підготувати дані про зміну до договору ${tender_owner}
  972 + Run As ${tender_owner} Внести зміну в договір ${CONTRACT_UAID} ${change_data}
  973 +
  974 +
  975 +Відображення опису причини зміни договору
  976 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору
  977 + ... tender_owner
  978 + ... ${USERS.users['${viewer}'].broker}
  979 + ... view_change
  980 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  981 + Звірити відображення поля rationale зміни до договору для користувача ${viewer}
  982 +
  983 +
  984 +Відображення причин зміни договору
  985 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору
  986 + ... tender_owner
  987 + ... ${USERS.users['${viewer}'].broker}
  988 + ... view_change
  989 + Звірити відображення причин зміни договору
  990 +
  991 +
  992 +Відображення непідтвердженого статусу зміни договору
  993 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору
  994 + ... tender_owner
  995 + ... ${USERS.users['${viewer}'].broker}
  996 + ... view_change
  997 + Звірити поле зміни до договору із значенням
  998 + ... ${viewer}
  999 + ... ${CONTRACT_UAID}
  1000 + ... pending
  1001 + ... status
  1002 +
  1003 +
  1004 +Можливість додати документацію до зміни договору
  1005 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору
  1006 + ... tender_owner
  1007 + ... ${USERS.users['${tender_owner}'].broker}
  1008 + ... upload_change_document
  1009 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1010 + Додати документацію до зміни договору
  1011 +
  1012 +
  1013 +Відображення заголовку документації до зміни договору
  1014 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації
  1015 + ... viewer
  1016 + ... ${USERS.users['${viewer}'].broker}
  1017 + ... upload_change_document
  1018 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  1019 + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['change_doc']['id']} до договору з ${USERS.users['${tender_owner}']['change_doc']['name']} для користувача ${viewer}
  1020 +
  1021 +
  1022 +Відображення вмісту документації до зміни договору
  1023 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації
  1024 + ... viewer
  1025 + ... ${USERS.users['${viewer}'].broker}
  1026 + ... upload_change_document
  1027 + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['change_doc']['id']} до договору з ${USERS.users['${tender_owner}']['change_doc']['content']} для користувача ${viewer}
  1028 +
  1029 +
  1030 +Можливість редагувати опис причини зміни договору
  1031 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування зміни
  1032 + ... tender_owner
  1033 + ... ${USERS.users['${tender_owner}'].broker}
  1034 + ... modify_change
  1035 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1036 + ${new_rationale}= create_fake_sentence
  1037 + Set to dictionary ${USERS.users['${tender_owner}']} new_rationale=${new_rationale}
  1038 + Run As ${tender_owner} Редагувати зміну ${CONTRACT_UAID} rationale ${new_rationale}
  1039 +
  1040 +
  1041 +Можливість редагувати вартість договору без ПДВ
  1042 + [Tags] ${USERS.users['${tender_owner}']}: Редагування договору
  1043 + ... tender_owner
  1044 + ... ${USERS.users['${tender_owner}']}
  1045 + ... change_contract_amountNet
  1046 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1047 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  1048 + ${amount_net}= create_fake_amount_net
  1049 + ... ${USERS.users['${tender_owner}'].contract_data.data.value.amount}
  1050 + ... ${award.value.valueAddedTaxIncluded}
  1051 + ... ${USERS.users['${tender_owner}'].contract_data.data.value.valueAddedTaxIncluded}
  1052 + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net}
  1053 + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} value.amountNet ${amount_net}
  1054 +
  1055 +
  1056 +Можливість редагувати вартість договору
  1057 + [Tags] ${USERS.users['${tender_owner}']}: Редагування договору
  1058 + ... tender_owner
  1059 + ... ${USERS.users['${tender_owner}']}
  1060 + ... change_contract_amount
  1061 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1062 + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer}
  1063 + ${amount}= create_fake_amount
  1064 + ... ${USERS.users['${tender_owner}'].contract_data.data.value.amount}
  1065 + ... ${award.value.valueAddedTaxIncluded}
  1066 + ... ${USERS.users['${tender_owner}'].contract_data.data.value.valueAddedTaxIncluded}
  1067 + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount}
  1068 + Run As ${tender_owner} Редагувати поле договору ${CONTRACT_UAID} value.amount ${amount}
  1069 +
  1070 +
  1071 +Можливість застосувати зміну договору
  1072 + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування договору
  1073 + ... tender_owner
  1074 + ... ${USERS.users['${tender_owner}'].broker}
  1075 + ... apply_change
  1076 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1077 + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner}
  1078 + ${dateSigned}= create_fake_date
  1079 + Run As ${tender_owner} Застосувати зміну ${CONTRACT_UAID} ${dateSigned}
  1080 + Set to dictionary ${USERS.users['${tender_owner}'].change_data.data} status=active
  1081 +
  1082 +
  1083 +Відображення підтвердженого статусу зміни договору
  1084 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення зміни договору
  1085 + ... tender_owner
  1086 + ... ${USERS.users['${viewer}'].broker}
  1087 + ... apply_change
  1088 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  1089 + Delete From Dictionary ${USERS.users['${viewer}'].contract_data.data.changes[0]} status
  1090 + Звірити поле зміни до договору із значенням
  1091 + ... ${viewer}
  1092 + ... ${CONTRACT_UAID}
  1093 + ... active
  1094 + ... status
  1095 +
  1096 +
  1097 +Можливість завантажити документацію до договору
  1098 + [Tags] ${USERS.users['${tender_owner}'].broker}: Додання документації до договору
  1099 + ... tender_owner
  1100 + ... ${USERS.users['${tender_owner}'].broker}
  1101 + ... add_contract_doc
  1102 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1103 + Додати документацію до договору
  1104 +
  1105 +
  1106 +Відображення заголовку документації до договору
  1107 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації
  1108 + ... viewer
  1109 + ... ${USERS.users['${viewer}'].broker}
  1110 + ... add_contract_doc
  1111 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  1112 + Звірити відображення поля title документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з ${USERS.users['${tender_owner}']['contract_doc']['name']} для користувача ${viewer}
  1113 +
  1114 +
  1115 +Відображення вмісту документації до договору
  1116 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації
  1117 + ... viewer
  1118 + ... ${USERS.users['${viewer}'].broker}
  1119 + ... add_contract_doc
  1120 + Звірити відображення вмісту документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з ${USERS.users['${tender_owner}']['contract_doc']['content']} для користувача ${viewer}
  1121 +
  1122 +
  1123 +Відображення належності документа до договору
  1124 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення документації
  1125 + ... viewer
  1126 + ... ${USERS.users['${viewer}'].broker}
  1127 + ... add_contract_doc
  1128 + Звірити відображення поля documentOf документа ${USERS.users['${tender_owner}']['contract_doc']['id']} до договору з contract для користувача ${viewer}
  1129 +
  1130 +
  1131 +Відображення статусу успішного завершення тендера
  1132 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних угоди
  1133 + ... viewer
  1134 + ... ${USERS.users['${viewer}'].broker}
  1135 + ... agreement_registration
  1136 + ... critical
  1137 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  1138 + Звірити відображення поля status тендера із complete для користувача ${viewer}
  1139 +
  1140 +
  1141 +Можливість скасувати тендер
  1142 + [Tags] ${USERS.users['${tender_owner}'].broker}: Скасування тендера
  1143 + ... tender_owner
  1144 + ... ${USERS.users['${tender_owner}'].broker}
  1145 + ... tender_cancellation
  1146 + [Teardown] Оновити LAST_MODIFICATION_DATE
  1147 + Можливість скасувати тендер
  1148 +
  1149 +
  1150 +Відображення активного статусу скасування тендера
  1151 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  1152 + ... viewer
  1153 + ... ${USERS.users['${viewer}'].broker}
  1154 + ... tender_cancellation
  1155 + [Setup] Дочекатись синхронізації з майданчиком ${viewer}
  1156 + ${cancellation_index}= Отримати останній індекс cancellations ${tender_owner} ${viewer}
  1157 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  1158 + ... active
  1159 + ... cancellations[${cancellation_index}].status
  1160 +
  1161 +
  1162 +Відображення причини скасування тендера
  1163 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  1164 + ... viewer
  1165 + ... ${USERS.users['${viewer}'].broker}
  1166 + ... tender_cancellation
  1167 + ${cancellation_index}= Отримати останній індекс cancellations ${tender_owner} ${viewer}
  1168 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']}
  1169 + ... ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_reason']}
  1170 + ... cancellations[${cancellation_index}].reason
  1171 +
  1172 +
  1173 +Відображення опису документа до скасування тендера
  1174 + [Tags] ${USERS.users['${viewer}'].broker}: Відображення скасування тендера
  1175 + ... viewer
  1176 + ... ${USERS.users['${viewer}'].broker}
  1177 + ... tender_cancellation
  1178 + Звірити відображення поля description документа ${USERS.users['${tender_owner}']['tender_cancellation_data']['document']['doc_id']} до скасування ${USERS.users['${tender_owner}']['tender_cancellation_data']['cancellation_id']} із ${USERS.users['${tender_owner}']['tender_cancellation_data']['description']} для користувача ${viewer}
  1179 +
  1180 +
  1181 +*** Keywords ***
  1182 +Пошук постачальника пропозиції з awards по індексу
  1183 + [Arguments] ${index}
  1184 + :FOR ${user_role} IN @{USED_PROVIDERS}
  1185 + \ ${user_name}= Get Variable Value ${BROKERS['${BROKER}'].roles['${user_role}']}
  1186 + \ ${bid_id}= Отримати дані із тендера ${user_name} ${TENDER['TENDER_UAID']} awards[${index}].bid_id
  1187 + \ ${bid_id_by_user}= Get Variable Value ${USERS.users['${user_name}'].bidresponses.bid.data.id}
  1188 + \ Exit For Loop If '${bid_id}' == '${bid_id_by_user}'
  1189 + [Return] ${user_name}
  1190 +
  1191 +
  1192 +Можливість скасувати тендер
  1193 + ${cancellation_data}= Підготувати дані про скасування ${USERS.users['${tender_owner}'].initial_data.data.procurementMethodType}
  1194 + Run As ${tender_owner}
  1195 + ... Скасувати закупівлю
  1196 + ... ${TENDER['TENDER_UAID']}
  1197 + ... ${cancellation_data['cancellation_reason']}
  1198 + ... ${cancellation_data['cancellation_reasonType']}
  1199 + ... ${cancellation_data['document']['doc_path']}
  1200 + ... ${cancellation_data['description']}
  1201 + Set To Dictionary ${USERS.users['${tender_owner}']} tender_cancellation_data=${cancellation_data}
  1202 +
  1203 +
  1204 +Звірити відображення поля ${field} документа ${doc_id} до скасування ${cancel_id} із ${left} для користувача ${username}
  1205 + ${right}= Run As ${username} Отримати інформацію із документа до скасування ${TENDER['TENDER_UAID']} ${cancel_id} ${doc_id} ${field}
  1206 + Порівняти об'єкти ${left} ${right}
  1207 +
  1208 +
  1209 +Отримати мінімальне значення amount з поданих пропозицій
  1210 + ${bids}= Отримати дані із тендера ${provider} ${TENDER['TENDER_UAID']} bids
  1211 + ${values}= Create List
  1212 + :FOR ${value} IN @{bids}
  1213 + \ ${item}= Get Variable Value ${value['value']['amount']}
  1214 + \ Append To List ${values} ${item}
  1215 + ${min_amount}= get_lowest_value_from_list ${values}
  1216 + [Return] ${min_amount}
@@ -35,6 +35,7 @@ from .initial_data import ( @@ -35,6 +35,7 @@ from .initial_data import (
35 test_bid_value, 35 test_bid_value,
36 test_bid_value_esco, 36 test_bid_value_esco,
37 test_bid_data_selection, 37 test_bid_data_selection,
  38 + test_bid_data_pq,
38 test_change_data, 39 test_change_data,
39 test_claim_answer_data, 40 test_claim_answer_data,
40 test_claim_data, 41 test_claim_data,
@@ -58,6 +59,7 @@ from .initial_data import ( @@ -58,6 +59,7 @@ from .initial_data import (
58 test_tender_data_planning, 59 test_tender_data_planning,
59 test_tender_data_openua_defense, 60 test_tender_data_openua_defense,
60 test_tender_data_framework_agreement, 61 test_tender_data_framework_agreement,
  62 + test_tender_data_pq,
61 test_tender_data_selection, 63 test_tender_data_selection,
62 test_bid_competitive_data, 64 test_bid_competitive_data,
63 test_monitoring_data, 65 test_monitoring_data,
@@ -379,6 +381,9 @@ def prepare_test_tender_data(procedure_intervals, @@ -379,6 +381,9 @@ def prepare_test_tender_data(procedure_intervals,
379 elif mode == 'open_esco': 381 elif mode == 'open_esco':
380 return munchify({'data': test_tender_data_esco( 382 return munchify({'data': test_tender_data_esco(
381 tender_parameters, submissionMethodDetails, plan_data)}) 383 tender_parameters, submissionMethodDetails, plan_data)})
  384 + elif mode == 'priceQuotation':
  385 + return munchify({'data': test_tender_data_pq(tender_parameters, submissionMethodDetails, plan_data)})
  386 +
382 # The previous line needs an explicit keyword argument because, 387 # The previous line needs an explicit keyword argument because,
383 # unlike previous functions, this one has three arguments. 388 # unlike previous functions, this one has three arguments.
384 raise ValueError("Invalid mode for prepare_test_tender_data") 389 raise ValueError("Invalid mode for prepare_test_tender_data")
@@ -774,3 +779,7 @@ def edit_tender_data_for_plan_tender(data, mode, data_version): @@ -774,3 +779,7 @@ def edit_tender_data_for_plan_tender(data, mode, data_version):
774 if data_version is 4: 779 if data_version is 4:
775 dict_data['data']['procurementMethodType'] = plan_tedner_test_data[data_version] 780 dict_data['data']['procurementMethodType'] = plan_tedner_test_data[data_version]
776 return munchify(dict_data) 781 return munchify(dict_data)
  782 +
  783 +
  784 +def get_lowest_value_from_list(list_value):
  785 + return min(list_value)
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender
  11 +-i find_tender
  12 +-i extend_tendering_period
  13 +-i tender_view
  14 +-i tender_view_value
  15 +-i tender_view_deliveryDate
  16 +-i tender_view_quantity
  17 +
  18 +-i successfully_tender_validation
  19 +
  20 +-i impossible_make_bid_with_over_amount
  21 +-i make_bid_by_provider
  22 +-i add_doc_to_bid_by_provider
  23 +-i add_doc_to_bid_by_provider
  24 +-i make_bid_by_provider1
  25 +-i make_bid_by_provider2
  26 +
  27 +-i awardPeriod_startDate
  28 +-i award_view_min_amount
  29 +-i disqualification_first_award_by_provider
  30 +-i qualification_approve_second_award_by_provider
  31 +
  32 +-i contract_view
  33 +-i modify_contract_invalid_amountNet_tender_vat_true
  34 +-i modify_contract_amount_net
  35 +-i contract_view_new_amountNet
  36 +-i modify_contract_value
  37 +-i contract_view_new_amount
  38 +-i modify_contract_invalid_amount
  39 +-i modify_contract
  40 +-i contract_sign
  41 +-i find_tender_contract
  42 +-i find_contract
  43 +-i access_contract
  44 +-i submit_change
  45 +-i view_change
  46 +-i upload_change_document
  47 +-i modify_change
  48 +-i change_contract_amountNet
  49 +-i change_contract_amount
  50 +-i apply_change
  51 +-i add_contract_doc
  52 +-i agreement_registration
  53 +
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_invalid_profile
  11 +-i find_tender
  12 +-i unsuccessfully_tender_verification_wrong_profile
  13 +-i impossible_make_bid_when_draft_unsuccessful
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_hidden
  11 +-i unsuccessfully_tender_verification_wrong_profile
  12 +-i tender_unsuccessfully_reason_profile_hidden
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_shortlistedfirms_empty
  11 +-i unsuccessfully_tender_verification_wrong_profile
  12 +-i tender_unsuccessfully_reason_shortlistedfirms_empty
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_unknown_profile
  11 +-i unsuccessfully_tender_verification_wrong_profile
  12 +-i tender_unsuccessfully_reason_unknown_profile
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender
  11 +-i find_tender
  12 +-i successfully_tender_validation
  13 +-i make_bid_by_provider
  14 +-i awardPeriod_startDate
  15 +-i qualification_approve_first_award_by_provider
  16 +-i tender_cancellation
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender
  11 +-i find_tender
  12 +-i succefully_tender_verification
  13 +-i make_bid_by_provider
  14 +-i awardPeriod_startDate
  15 +-i tender_cancellation
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender
  11 +-i find_tender
  12 +-i succefully_tender_verification
  13 +-i make_bid_by_provider
  14 +-i tender_cancellation
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender
  11 +-i find_tender
  12 +
  13 +-i successfully_tender_validation
  14 +
  15 +-i unsuccefully_tender_without_bids
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_wrong_date
  11 +-i create_tender_empty_profile
  12 +-i create_tender
  13 +-i impossible_change_tendering_status
  14 +-i successfully_tender_validation
  15 +-i change_data_active_tendering
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender_without_2_phase_commit
  11 +-i tender_view_status_draft
  12 +-i patch_tender_wrong_date
  13 +-i patch_tender_wrong_procuringEntity_kind
  14 +-i impossible_change_tender_status_form_draft_to_another_except_draft_publishing
  15 +-i impossible_make_bid_when_draft
  1 +-v MODE:priceQuotation
  2 +
  3 +-v NUMBER_OF_ITEMS:1
  4 +-v NUMBER_OF_LOTS:0
  5 +
  6 +-v TENDER_MEAT:False
  7 +-v ITEM_MEAT:False
  8 +-v LOT_MEAT:False
  9 +
  10 +-i create_tender
  11 +
  12 +-i successfully_tender_validation
  13 +-i impossible_make_bid
  14 +-i make_bid_by_provider
  15 +-i make_bid_by_provider1
  16 +-i delete_bid_while_tendering_period_by_provider
  17 +-i make_bid_by_provider2
  18 +
  19 +-i awardPeriod_startDate
  20 +-i impossible_approve_first_award_by_customer
  21 +-i impossible_cancel_1_award_qualification_by_provider
  22 +-i disqualification_first_award_by_provider
  23 +-i cancel_bid_after_tendering_period_by_provider
  24 +-i qualification_reject_second_award_after_2_days
  25 +
  26 +-i qualification_approve_third_award_by_provider
  27 +-i impossible_cancel_3_award_qualification_by_provider
  28 +-i qualification_cancel_3_award_qualification_by_customer
  29 +-i impossible_approve_fourth_award_by_provider
  30 +-i qualification_approve_4_award_by_customer
  31 +-i qualification_cancel_4_award_qualification_by_customer
  32 +-i qualification_reject_fifth_award
  33 +
  34 +-i unsuccefully_tender
Please register or login to post a comment