Два результата для одной операции
От: es3000  
Дата: 08.06.19 11:27
Оценка:
Добрый день!

Делаю программу для обмена с кассой.
С кассой может быть выполнена операция выгрузки или загрузки.

Пользователь программы — это менеджер по работе с товарами.
Менеджер в программе принял новые товары, поменял цены, сделал переоценку.
И теперь нужно, чтобы эта новая информация (новые товары, новые цены) появилась в кассе (в кассовой программе).
Используется Offline-касса.

Менеджер запускает выгрузку информации на кассу.
И в итоге пользователь должен увидеть результат выгрузки.

Для операции я сделал отдельный класс "ТОперацияСКассой", которому передаю параметры, идентификатор кассы и вызываю метод "Выполнить".
Этот класс также имеет свойство "Результат", который должен быть заполнен значением "Успешно" или "Ошибка" по выполнению операции.

Вопрос в следующем.
Кроме непосредственно самого обмена с кассой данный класс должен также выполнить ряд вспомогательных действий:
1) до выполнения обмена:
— запомнить время начала операции
2) непосредственно обмен (выполняется вызовом драйвера кассы)
3) после выполнения обмена:
— запомнить время окончания операции
— рассчитать сводные данные (типа количество выгруженных товаров, общая сумма и т.д.)

Ошибка может возникнуть как до выполнения обмена в пункте (1), во время обмена (при работе драйвера), так и после обмена в пункте (3).

Если ошибка возникает в пункте (2) — то тут ясное дело, что обмен не выполнен и должен быть выдан результат "Ошибка".

А вот если обмен (пункт (2)) выполнен успешно и ошибка возникнет в пункте (3), то тут двоякая ситуация.
С одной стороны обмен выполнен, а с другой стороны — возникла ошибка в каких-то второстепенных действиях.
Какой результат тут установить?

Получается, надо вводить два отдельных свойства-результата?
Типа: "ОсновнойРезультат", "РезультатДоп".
Как-то это выглядит странно.

Подскажите, пожалуйста, как правильнее сделать?
Отредактировано 09.06.2019 11:56 es3000 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.