Showing
16 changed files
with
366 additions
and
20 deletions
... | ... | @@ -740,6 +740,48 @@ ${award_index} ${0} |
740 | 740 | Дочекатись дати ${standstillEnd} |
741 | 741 | |
742 | 742 | |
743 | +Можливість редагувати вартість угоди без урахування ПДВ | |
744 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
745 | + ... tender_owner | |
746 | + ... ${USERS.users['${tender_owner}'].broker} | |
747 | + ... modify_contract_amount_net | |
748 | + ... critical | |
749 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
750 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
751 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
752 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
753 | + ${amount_net}= create_fake_amount_net ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
754 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
755 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net} | |
756 | + Run As ${tender_owner} Редагувати угоду | |
757 | + ... ${TENDER['TENDER_UAID']} | |
758 | + ... ${contract_index} | |
759 | + ... value.amountNet | |
760 | + ... ${amount_net} | |
761 | + | |
762 | + | |
763 | +Можливість редагувати вартість угоди | |
764 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
765 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
766 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
767 | + ... tender_owner | |
768 | + ... ${tender_owner_data.broker} | |
769 | + ... modify_contract_value | |
770 | + ... critical | |
771 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
772 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
773 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
774 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
775 | + ${amount}= create_fake_amount ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
776 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
777 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} | |
778 | + Run As ${tender_owner} Редагувати угоду | |
779 | + ... ${TENDER['TENDER_UAID']} | |
780 | + ... ${contract_index} | |
781 | + ... value.amount | |
782 | + ... ${amount} | |
783 | + | |
784 | + | |
743 | 785 | Можливість укласти угоду для закупівлі |
744 | 786 | [Tags] ${USERS.users['${tender_owner}'].broker}: Процес укладання угоди |
745 | 787 | ... tender_owner | ... | ... |
... | ... | @@ -253,8 +253,12 @@ Suite Teardown Test Suite Teardown |
253 | 253 | ... ${contract_index} |
254 | 254 | ... value.amount |
255 | 255 | ... ${amount} |
256 | - Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${True}' and '${contract.value.valueAddedTaxIncluded}' == '${True}' | |
256 | + Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${True}' and '${contract.value.valueAddedTaxIncluded}' == '${True}' and '${MODE}' == 'open_esco' | |
257 | + ... Should Contain ${value} Can't update amount for contract value | |
258 | + ... ELSE | |
257 | 259 | ... Should Contain ${value} Amount should be less or equal to awarded amount |
260 | + #Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${True}' and '${contract.value.valueAddedTaxIncluded}' == '${True}' | |
261 | + #... Should Contain ${value} Amount should be less or equal to awarded amount | |
258 | 262 | Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${True}' and '${contract.value.valueAddedTaxIncluded}' == '${False}' |
259 | 263 | ... Should Contain ${value} Amount should be less or equal to awarded amount |
260 | 264 | Run Keyword IF '${award.value.valueAddedTaxIncluded}' == '${False}' and '${contract.value.valueAddedTaxIncluded}' == '${False}' | ... | ... |
... | ... | @@ -669,6 +669,48 @@ ${VAT_INCLUDED} ${True} |
669 | 669 | Звірити відображення поля contracts[0].status тендера із pending для користувача ${viewer} |
670 | 670 | |
671 | 671 | |
672 | +Можливість редагувати вартість угоди без урахування ПДВ | |
673 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
674 | + ... tender_owner | |
675 | + ... ${USERS.users['${tender_owner}'].broker} | |
676 | + ... modify_contract_amount_net | |
677 | + ... critical | |
678 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
679 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
680 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
681 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
682 | + ${amount_net}= create_fake_amount_net ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
683 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
684 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net} | |
685 | + Run As ${tender_owner} Редагувати угоду | |
686 | + ... ${TENDER['TENDER_UAID']} | |
687 | + ... ${contract_index} | |
688 | + ... value.amountNet | |
689 | + ... ${amount_net} | |
690 | + | |
691 | + | |
692 | +Можливість редагувати вартість угоди | |
693 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
694 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
695 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
696 | + ... tender_owner | |
697 | + ... ${tender_owner_data.broker} | |
698 | + ... modify_contract_value | |
699 | + ... critical | |
700 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
701 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
702 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
703 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
704 | + ${amount}= create_fake_amount ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
705 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
706 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} | |
707 | + Run As ${tender_owner} Редагувати угоду | |
708 | + ... ${TENDER['TENDER_UAID']} | |
709 | + ... ${contract_index} | |
710 | + ... value.amount | |
711 | + ... ${amount} | |
712 | + | |
713 | + | |
672 | 714 | Можливість укласти угоду для переговорної процедури за нагальною потребою |
673 | 715 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для процедури |
674 | 716 | ... ${tender_owner} | ... | ... |
... | ... | @@ -742,6 +742,48 @@ ${VAT_INCLUDED} ${True} |
742 | 742 | \ Отримати дані із тендера ${username} ${TENDER['TENDER_UAID']} awards[0].complaintPeriod.endDate |
743 | 743 | |
744 | 744 | |
745 | +Можливість редагувати вартість угоди без урахування ПДВ | |
746 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
747 | + ... tender_owner | |
748 | + ... ${USERS.users['${tender_owner}'].broker} | |
749 | + ... modify_contract_amount_net | |
750 | + ... critical | |
751 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
752 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
753 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
754 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
755 | + ${amount_net}= create_fake_amount_net ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
756 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
757 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net} | |
758 | + Run As ${tender_owner} Редагувати угоду | |
759 | + ... ${TENDER['TENDER_UAID']} | |
760 | + ... ${contract_index} | |
761 | + ... value.amountNet | |
762 | + ... ${amount_net} | |
763 | + | |
764 | + | |
765 | +Можливість редагувати вартість угоди | |
766 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
767 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
768 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
769 | + ... tender_owner | |
770 | + ... ${tender_owner_data.broker} | |
771 | + ... modify_contract_value | |
772 | + ... critical | |
773 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
774 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
775 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
776 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
777 | + ${amount}= create_fake_amount ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
778 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
779 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} | |
780 | + Run As ${tender_owner} Редагувати угоду | |
781 | + ... ${TENDER['TENDER_UAID']} | |
782 | + ... ${contract_index} | |
783 | + ... value.amount | |
784 | + ... ${amount} | |
785 | + | |
786 | + | |
745 | 787 | Можливість укласти угоду для переговорної процедури |
746 | 788 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для процедури |
747 | 789 | ... ${tender_owner} | ... | ... |
... | ... | @@ -55,6 +55,48 @@ ${VAT_INCLUDED} ${True} |
55 | 55 | Можливість зареєструвати, додати документацію і підтвердити першого постачальника до закупівлі |
56 | 56 | |
57 | 57 | |
58 | +Можливість редагувати вартість угоди без урахування ПДВ | |
59 | + [Tags] ${USERS.users['${tender_owner}'].broker}: Редагування угоди | |
60 | + ... tender_owner | |
61 | + ... ${USERS.users['${tender_owner}'].broker} | |
62 | + ... modify_contract_amount_net | |
63 | + ... critical | |
64 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
65 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
66 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
67 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
68 | + ${amount_net}= create_fake_amount_net ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
69 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
70 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount_net=${amount_net} | |
71 | + Run As ${tender_owner} Редагувати угоду | |
72 | + ... ${TENDER['TENDER_UAID']} | |
73 | + ... ${contract_index} | |
74 | + ... value.amountNet | |
75 | + ... ${amount_net} | |
76 | + | |
77 | + | |
78 | +Можливість редагувати вартість угоди | |
79 | + ${viewer_data}= Get From Dictionary ${USERS.users} ${viewer} | |
80 | + ${tender_owner_data}= Get From Dictionary ${USERS.users} ${tender_owner} | |
81 | + [Tags] ${tender_owner_data.broker}: Редагування угоди | |
82 | + ... tender_owner | |
83 | + ... ${tender_owner_data.broker} | |
84 | + ... modify_contract_value | |
85 | + ... critical | |
86 | + [Setup] Дочекатись синхронізації з майданчиком ${tender_owner} | |
87 | + [Teardown] Оновити LAST_MODIFICATION_DATE | |
88 | + ${award}= Отримати останній элемент awards ${tender_owner} ${viewer} | |
89 | + ${contract}= Отримати останній элемент contracts ${tender_owner} ${viewer} | |
90 | + ${amount}= create_fake_amount ${award.value.amount} ${award.value.valueAddedTaxIncluded} ${contract.value.valueAddedTaxIncluded} | |
91 | + ${contract_index}= Отримати останній індекс contracts ${tender_owner} ${viewer} | |
92 | + Set to dictionary ${USERS.users['${tender_owner}']} new_amount=${amount} | |
93 | + Run As ${tender_owner} Редагувати угоду | |
94 | + ... ${TENDER['TENDER_UAID']} | |
95 | + ... ${contract_index} | |
96 | + ... value.amount | |
97 | + ... ${amount} | |
98 | + | |
99 | + | |
58 | 100 | Можливість укласти угоду для звіту про укладений договір |
59 | 101 | [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість укласти угоду для процедури |
60 | 102 | ... ${tender_owner} | ... | ... |
... | ... | @@ -43,5 +43,28 @@ |
43 | 43 | -i qualification_add_doc_to_second_award |
44 | 44 | -i qualification_approve_second_award |
45 | 45 | |
46 | +-i contract_stand_still | |
47 | +-i contract_view | |
48 | +-i modify_contract_invalid_amount | |
49 | +-i modify_contract_invalid_amountNet_tender_vat_true | |
50 | +-i modify_contract_amount_net | |
51 | +-i modify_contract_value | |
52 | +-i modify_contract | |
53 | +-i add_doc_to_contract | |
54 | +-i contract_doc_documentOf | |
46 | 55 | -i contract_sign |
47 | --i contract_stand_still | |
\ No newline at end of file | ||
56 | + | |
57 | +-i find_contract | |
58 | +-i access_contract | |
59 | +-i submit_change | |
60 | +-i view_change | |
61 | +-i upload_change_document | |
62 | +-i modify_change | |
63 | +-i change_contract_amountNet | |
64 | +-i change_contract_amount | |
65 | +-i apply_change | |
66 | +-i add_contract_doc | |
67 | +-i termination_reasons | |
68 | +-i amount_paid | |
69 | +-i change_amount_paid | |
70 | +-i contract_termination | |
\ No newline at end of file | ... | ... |
... | ... | @@ -32,4 +32,26 @@ |
32 | 32 | -i qualification_approve_first_award |
33 | 33 | |
34 | 34 | -i contract_sign |
35 | --i contract_stand_still | |
\ No newline at end of file | ||
35 | +-i contract_stand_still | |
36 | + | |
37 | +-i modify_contract_invalid_amount | |
38 | +-i modify_contract_invalid_amountNet_tender_vat_true | |
39 | + | |
40 | +-i modify_contract | |
41 | +-i add_doc_to_contract | |
42 | +-i contract_doc_documentOf | |
43 | +-i contract_sign | |
44 | + | |
45 | +-i find_contract | |
46 | +-i access_contract | |
47 | +-i submit_change | |
48 | +-i view_change | |
49 | +-i upload_change_document | |
50 | +-i modify_change | |
51 | + | |
52 | +-i apply_change | |
53 | +-i add_contract_doc | |
54 | +-i termination_reasons | |
55 | +-i amount_paid | |
56 | + | |
57 | +-i contract_termination | |
\ No newline at end of file | ... | ... |
... | ... | @@ -61,12 +61,12 @@ |
61 | 61 | |
62 | 62 | -i qualification_approve_first_award |
63 | 63 | |
64 | +-i contract_sign | |
64 | 65 | -i contract_stand_still |
65 | --i contract_view | |
66 | + | |
66 | 67 | -i modify_contract_invalid_amount |
67 | 68 | -i modify_contract_invalid_amountNet_tender_vat_true |
68 | --i modify_contract_amount_net | |
69 | --i modify_contract_value | |
69 | + | |
70 | 70 | -i modify_contract |
71 | 71 | -i add_doc_to_contract |
72 | 72 | -i contract_doc_documentOf |
... | ... | @@ -78,11 +78,10 @@ |
78 | 78 | -i view_change |
79 | 79 | -i upload_change_document |
80 | 80 | -i modify_change |
81 | --i change_contract_amountNet | |
82 | --i change_contract_amount | |
81 | + | |
83 | 82 | -i apply_change |
84 | 83 | -i add_contract_doc |
85 | 84 | -i termination_reasons |
86 | 85 | -i amount_paid |
87 | --i change_amount_paid | |
86 | + | |
88 | 87 | -i contract_termination |
\ No newline at end of file | ... | ... |
1 | +-v MODE:open_competitive_dialogue | |
2 | + | |
3 | +-v DIALOGUE_TYPE:UA | |
4 | + | |
5 | +-v NUMBER_OF_ITEMS:1 | |
6 | +-v NUMBER_OF_LOTS:1 | |
7 | + | |
8 | +-v TENDER_MEAT:False | |
9 | +-v ITEM_MEAT:False | |
10 | +-v LOT_MEAT:False | |
11 | + | |
12 | + | |
13 | +-i create_tender | |
14 | +-i find_tender | |
15 | +-i tender_view | |
16 | +-i tender_view_milestone | |
17 | +-i tender_view_value | |
18 | +-i tender_view_minimalStep | |
19 | +-i tender_view_deliveryDate | |
20 | +-i tender_view_quantity | |
21 | +-i tender_view_unit_name | |
22 | +-i tender_view_unit_code | |
23 | +-i tender_view_coordinates | |
24 | +-i lot_view | |
25 | +-i lot_view_value | |
26 | +-i lot_view_minimalStep | |
27 | + | |
28 | +-i make_bid_by_provider | |
29 | +-i make_bid_by_provider1 | |
30 | +-i make_bid_by_provider2 | |
31 | + | |
32 | +-i open_tender_view | |
33 | + | |
34 | +#-i pre-qualifications_check_by_edrpou | |
35 | + | |
36 | +-i pre-qualification_approve_first_bid | |
37 | +-i pre-qualification_approve_second_bid | |
38 | +-i pre-qualification_approve_third_bid | |
39 | + | |
40 | +-i pre-qualification_approve_qualifications | |
41 | + | |
42 | +-i stage2_pending_status_view | |
43 | + | |
44 | +-i wait_bridge_for_work | |
45 | + | |
46 | +-i get_second_stage | |
47 | + | |
48 | +-i compare_stages | |
49 | + | |
50 | +-i save_tender_second_stage | |
51 | + | |
52 | +-i activate_second_stage | |
53 | + | |
54 | +-i make_bid_by_provider_second_stage | |
55 | +-i make_bid_by_provider1_second_stage | |
56 | + | |
57 | +-i auction | |
58 | + | |
59 | +-i qualification_approve_first_award | |
60 | + | |
61 | +-i contract_sign | |
62 | +-i contract_stand_still | |
63 | + | |
64 | +-i modify_contract_invalid_amount | |
65 | +-i modify_contract_invalid_amountNet_tender_vat_true | |
66 | + | |
67 | +-i modify_contract | |
68 | +-i add_doc_to_contract | |
69 | +-i contract_doc_documentOf | |
70 | +-i contract_sign | |
71 | + | |
72 | +-i find_contract | |
73 | +-i access_contract | |
74 | +-i submit_change | |
75 | +-i view_change | |
76 | +-i upload_change_document | |
77 | +-i modify_change | |
78 | + | |
79 | +-i apply_change | |
80 | +-i add_contract_doc | |
81 | +-i termination_reasons | |
82 | +-i amount_paid | |
83 | + | |
84 | +-i contract_termination | |
\ No newline at end of file | ... | ... |
... | ... | @@ -80,9 +80,8 @@ |
80 | 80 | -i contract_view |
81 | 81 | -i modify_contract_invalid_amount |
82 | 82 | -i modify_contract_invalid_amountNet_tender_vat_true |
83 | --i modify_contract_amount_net | |
84 | --i modify_contract_value | |
85 | --i modify_contract | |
86 | --i add_doc_to_contract | |
87 | --i contract_doc_documentOf | |
88 | --i contract_sign | |
\ No newline at end of file | ||
83 | +#-i modify_contract_amount_net | |
84 | +#-i modify_contract | |
85 | +#-i add_doc_to_contract | |
86 | +#-i contract_doc_documentOf | |
87 | +#-i contract_sign | |
\ No newline at end of file | ... | ... |
... | ... | @@ -47,7 +47,7 @@ |
47 | 47 | -i qualification_add_doc_to_second_award |
48 | 48 | -i qualification_approve_second_award |
49 | 49 | |
50 | --i contract_stand_still | |
50 | + | |
51 | 51 | -i contract_view |
52 | 52 | -i modify_contract_invalid_amount |
53 | 53 | -i modify_contract_invalid_amountNet_tender_vat_true |
... | ... | @@ -55,7 +55,6 @@ |
55 | 55 | -i modify_contract_value |
56 | 56 | -i modify_contract |
57 | 57 | -i add_doc_to_contract |
58 | --i contract_doc_documentOf | |
59 | 58 | -i contract_sign |
60 | 59 | |
61 | 60 | -i find_contract | ... | ... |
... | ... | @@ -40,4 +40,26 @@ |
40 | 40 | -i qualification_approve_first_award |
41 | 41 | |
42 | 42 | -i contract_sign |
43 | --i contract_stand_still | |
\ No newline at end of file | ||
43 | +-i contract_stand_still | |
44 | + | |
45 | +-i modify_contract_invalid_amount | |
46 | +-i modify_contract_invalid_amountNet_tender_vat_true | |
47 | + | |
48 | +-i modify_contract | |
49 | +-i add_doc_to_contract | |
50 | +-i contract_doc_documentOf | |
51 | +-i contract_sign | |
52 | + | |
53 | +-i find_contract | |
54 | +-i access_contract | |
55 | +-i submit_change | |
56 | +-i view_change | |
57 | +-i upload_change_document | |
58 | +-i modify_change | |
59 | + | |
60 | +-i apply_change | |
61 | +-i add_contract_doc | |
62 | +-i termination_reasons | |
63 | +-i amount_paid | |
64 | + | |
65 | +-i contract_termination | |
\ No newline at end of file | ... | ... |
... | ... | @@ -32,4 +32,26 @@ |
32 | 32 | -i qualification_approve_first_award |
33 | 33 | |
34 | 34 | -i contract_sign |
35 | --i contract_stand_still | |
\ No newline at end of file | ||
35 | +-i contract_stand_still | |
36 | + | |
37 | +-i modify_contract_invalid_amount | |
38 | +-i modify_contract_invalid_amountNet_tender_vat_true | |
39 | + | |
40 | +-i modify_contract | |
41 | +-i add_doc_to_contract | |
42 | +-i contract_doc_documentOf | |
43 | +-i contract_sign | |
44 | + | |
45 | +-i find_contract | |
46 | +-i access_contract | |
47 | +-i submit_change | |
48 | +-i view_change | |
49 | +-i upload_change_document | |
50 | +-i modify_change | |
51 | + | |
52 | +-i apply_change | |
53 | +-i add_contract_doc | |
54 | +-i termination_reasons | |
55 | +-i amount_paid | |
56 | + | |
57 | +-i contract_termination | |
\ No newline at end of file | ... | ... |
Please
register
or
login
to post a comment