Ответ на самом деле казался гораздо более сложным и все же простым на практике.
Следуя блок-схеме, я прошел через все возможные комбинации флажков, которые необходимо включить. Завершая, похоже на перевернутый турнир. В конце концов, для его работы потребовались вложенные циклы.
Для тех, кто заинтересован, смотрите код ниже:
import datetime
from datetime import datetime
from datetime import timedelta
FIXED_WEEK_1 = "16/04/2019"
W1 = timedelta(days=7)
W2 = timedelta(days=14)
W3 = timedelta(days=21)
W4 = timedelta(days=28)
W5 = timedelta(days=35)
W6 = timedelta(days=42)
W7 = timedelta(days=49)
W8 = timedelta(days=56)
BOX_1 = 1
BOX_2 = 0
BOX_3 = 1
BOX_4 = 1
week_one_raw = datetime.strptime(FIXED_WEEK_1, '%d/%m/%Y')
week_one_refined = week_one_raw
week_two_refined = week_one_raw + W1
week_three_refined = week_two_refined + W1
week_four_refined = week_three_refined + W1
week_to_pay_refined = week_four_refined + W1
if BOX_1 == 0:
week_one_refined = week_one_raw
if BOX_2 == 0:
week_two_refined = week_one_raw + W1
if BOX_3 == 0:
week_three_refined = week_one_raw + W2
if BOX_4 == 0:
week_four_refined = week_one_raw + W3
week_to_pay_refined = week_one_raw + W4
if BOX_4 == 1:
week_four_refined = week_one_raw +W4
week_to_pay_refined = week_one_raw +W5
if BOX_3 == 1:
week_three_refined = week_one_raw + W3
if BOX_4 == 0:
week_three_refined = week_one_raw +W3
week_four_refined = week_one_raw +W4
week_to_pay_refined = week_one_raw +W5
if BOX_4 == 1:
week_three_refined = week_one_raw +W4
week_four_refined = week_one_raw +W5
week_to_pay_refined = week_one_raw +W6
if BOX_2 == 1:
week_two_refined = week_one_raw + W2
if BOX_3 == 0:
week_two_refined = week_one_raw +W2
if BOX_4 == 0:
week_two_refined = week_one_raw + W2
week_three_refined = week_one_raw +W3
week_four_refined = week_one_raw +W4
week_to_pay_refined = week_one_raw +W5
if BOX_4 == 1:
week_two_refined = week_one_raw +W3
week_three_refined = week_one_raw +W4
week_four_refined = week_one_raw +W6
week_to_pay_refined = week_one_raw +W7
if BOX_3 == 1:
week_two_refined = week_one_raw +W3
if BOX_4 == 0:
week_two_refined = week_one_raw + W3
week_three_refined = week_one_raw +W4
week_four_refined = week_one_raw +W5
week_to_pay_refined = week_one_raw +W6
if BOX_4 == 1:
week_two_refined = week_one_raw + W4
week_three_refined = week_one_raw +W5
week_four_refined = week_one_raw +W6
week_to_pay_refined = week_one_raw +W7
if BOX_1 == 1:
week_one_refined = week_one_raw + W1
if BOX_2 == 0:
week_one_refined = week_one_raw +W1
if BOX_3 == 0:
week_one_refined = week_one_raw +W1
if BOX_4 ==0:
week_one_refined = week_one_raw +W1
week_two_refined = week_one_raw +W2
week_three_refined = week_one_raw +W3
week_four_refined = week_one_raw +W4
week_to_pay_refined = week_one_raw +W5
if BOX_4 ==1:
week_one_refined = week_one_raw +W1
week_two_refined = week_one_raw +W2
week_three_refined = week_one_raw +W3
week_four_refined = week_one_raw +W5
week_to_pay_refined = week_one_raw +W6
if BOX_3 ==1:
week_one_refined = week_one_raw +W1
if BOX_4 == 0:
week_one_refined = week_one_raw +W1
week_two_refined = week_one_raw +W2
week_three_refined = week_one_raw +W4
week_four_refined = week_one_raw +W5
week_to_pay_refined = week_one_raw +W6
if BOX_4 == 1:
week_one_refined = week_one_raw +W1
week_two_refined = week_one_raw +W2
week_three_refined = week_one_raw +W5
week_four_refined = week_one_raw +W6
week_to_pay_refined = week_one_raw +W7
if BOX_2 == 1:
week_one_refined = week_one_raw + W2
if BOX_3 == 0:
if BOX_4 ==0:
week_one_refined = week_one_raw +W2
week_two_refined = week_one_raw +W3
week_three_refined = week_one_raw +W4
week_four_refined = week_one_raw +W5
week_to_pay_refined = week_one_raw +W6
if BOX_4 ==1:
week_one_refined = week_one_raw +W2
week_two_refined = week_one_raw +W3
week_three_refined = week_one_raw +W4
week_four_refined = week_one_raw +W6
week_to_pay_refined = week_one_raw +W7
if BOX_3 ==1:
if BOX_4 ==0:
week_one_refined = week_one_raw + W3
week_two_refined = week_one_raw + W4
week_three_refined = week_one_raw + W5
week_four_refined = week_one_raw + W6
week_to_pay_refined = week_one_raw + W7
if BOX_4 ==1:
week_one_refined = week_one_raw + W4
week_two_refined = week_one_raw + W5
week_three_refined = week_one_raw + W6
week_four_refined = week_one_raw + W7
week_to_pay_refined = week_one_raw + W8
Извинения за некоторые несоответствия в циклах ... как при дублировании значений. Мне понадобилось некоторое время, чтобы найти правильный метод.