Шапка и подписи накопительной ведомости. Поля остаются на этой странице, на сервер не уходят и попадают в шапку результата и в выгрузку. Незаполненные поля в документ не включаются.
Учёт выполненных работ нарастающим итогом. По каждой позиции складываем выполнено ранее и за отчётный период, получаем всего с начала работ, остаток по проекту и процент освоения. Если всего с начала превысило проектный объём, показываем, на сколько именно вышли за проект и на какую сумму. Цена необязательна, при ней считаем освоенную стоимость. Дубли, работы вне проекта и разбор приписок это сверка объёмов, здесь чистый учёт освоения по периодам.
Удержание необязательно. Если процент задан, по каждой строке считается удержанная сумма и сумма к оплате, а удержанное копится нарастающим итогом. Когда по всем позициям остатка не осталось, ведомость напомнит выставить возврат удержанного.
Ведомость можно загрузить из своего Excel: колонки покажем и сопоставим при загрузке. Нужны хотя бы наименование, проектный объём и объём за период.