Здравствуйте Sinclair, Вы писали:
S>>Проблемы еще более общирны: что делать если проводки после даты Т не укладываются после добавления новой проводки N. S>>Например было на складе 6 единиц. В поле даты Т все 6 единиц ушли со склада. S>>Мы добавляем проводку N: ушла еще одна единица. S>>При "укладовании" проводок обратно непонятно где взять 6 единиц, когда их на складе 5 осталось?. S>>Результат: S>>1. посылаем в.. все проводки поле даты Т S>>2. полным перебором пытаемся уложить оставшиеся проводки S>>3. посылаем в.. юзера с идеей проводки N S>>4. ;) S>1. Светик, мысли реально :) Ну откуда у тебя возьмется накладных на 6 единиц??? Склад же не может выдавать товары в минус.
Например, еще одной накладной нехватает на приход 1 штуки на склад :)
S>2. Если это не склад, а некая другая сущность, типа счета в бухгалтерии, то у нас получается перерасход. Т.е. система не должна была позволить провести какие-то документы, а она позволила. S>Вполне реальная ситуация.
S>Итак, теперь мы имеем а) одно "правильное" действие(которое было потеряно) , и N "неправильных".
N немогут быть неправиьными т.к. это первичные документы, по ним выдали списали и т.д в реальности.
S>Вообще говоря, в этом случае мы отменяем отмену с соответствующим результатом. Вариант — попытаться игнорировать недопустимую операцию и продолжать все остальные. Я бы реализовывал так: пытаться роллфорвардить
(прости безграмотность, это что?) S>все действия, писать ошибки в лог, если весь журнал прошел успешно, то делать коммит, иначе отменять отмену. Затем ответственный человек думает, как разрулить экстремальные ситуации. Это как раз и есть то, чем занимаются бухгалтера — у меня мама работала главбухом, и основное время съедало последовательное перебалансирование счетов из-за всяких мудаков, которые в зднем кармане документы по месяцу носят. Это решение — всего лишь автоматизация бизнесс-процесса.
Пахнет бесконечностью.
Мне кажется, что сдесь требуется аггоритм который выявляет скрытые острые места, как то перерасход, непарвильная последовательность и др. нелогичности. Каждое подозрительное место "исправляется" с использованем заглушек (специальных мест для недостающих, по нашему мнению, документов). Так пытаемся уложить все оставшиеся проводки. В следующий раз при внесении изменений пытаемся избавиться от заглушек или расставить их по-новому.