diff --git a/reports/design/lib/bids.js b/reports/design/lib/bids.js index c148682..f1ab752 100644 --- a/reports/design/lib/bids.js +++ b/reports/design/lib/bids.js @@ -260,7 +260,10 @@ function check_award_for_bid(tender, bid) { if (date === null) { date = award.date; } - checker = (['active', 'pending', 'cancelled'].indexOf(award.status) !== -1 && (date >= award.date)); + if (award.date >= date) { + date = award.date; + checker = (['active', 'pending', 'cancelled'].indexOf(award.status) !== -1); + } } }); return ((checker) || (!is_awarded)); @@ -276,7 +279,10 @@ function check_award_for_bid_multilot(tender, bid, lot) { if (date === null) { date = award.date; } - checker = (['active', 'pending', 'cancelled'].indexOf(award.status) !== -1 && (date >= award.date)); + if (award.date >= date) { + date = award.date; + checker = (['active', 'pending', 'cancelled'].indexOf(award.status) !== -1); + } } }); // this check is unnecessary @@ -319,7 +325,8 @@ function get_info_about_cancelled_lot(actual_tender, old_tender, bid, lot) { }); } else { if ("awards" in old_tender) { - return (check_qualification_for_bid(actual_tender, bid, lot) && check_award_for_bid_multilot(actual_tender, bid, lot)); + return (check_qualification_for_bid(lot.status === 'cancelled' ? old_tender : actual_tender, bid, lot) && + check_award_for_bid_multilot(actual_tender, bid, lot)); } else { return check_qualification_for_bid(actual_tender, bid, lot); diff --git a/reports/tests/views/bids_tests.js b/reports/tests/views/bids_tests.js index 15e5037..1670677 100644 --- a/reports/tests/views/bids_tests.js +++ b/reports/tests/views/bids_tests.js @@ -413,7 +413,9 @@ describe("bids view tests", () => { }); it("tender has valid award and no awards in status active or pending - should return false.", () => { + bid.date = '1970-01-01'; tender.awards[0].bid_id = bid.id; + tender.awards[0].date = bid.date; assert.isFalse(bids.check_award_for_bid(tender, bid)); }) @@ -471,7 +473,9 @@ describe("bids view tests", () => { }); it("tender has valid awards and awards in status active or pending - should return true.", () => { + bid.date = '1970-01-01'; tender.awards[0].status = "active"; + tender.awards[0].date = bid.date; assert.isTrue(bids.check_award_for_bid_multilot(tender, bid, lot)); });