16.01.2006, 10:21 | #1 |
Moderator
|
DeleteAction
Доброе утро! С переходом на Добрый день!
Изначально вопрос -- как программно понять что сработал DeleteAction? И сама задача: при попытке удалить складские журналы, они теперь не удаляются а меняют свой статус и их можно видеть в своей форме (стандартная таблица, стандарттная форма для складских журналов). Как перегрузить delete у inventJournalTable понятно, непонятно как перекрыть deleteAction на inventJournalTrans!? Почему не перекрыть метод delete на inventJournalTrans -- потому что он может вызываться из многих других мест, а при этом запрещать удаление я думаю неправильно. Почему в delete InventJournalTrans не оперировать статусом InventJournalTable (InventJournalType:eleted) -- потому что сначала удаляются строки а потом удаляется шапка (вызывается delete у InventJournalTable, т.е. статус еще какой угодно только не InventJournalType::deleted).. Вот на этом остановился.. |
|
16.01.2006, 10:35 | #2 |
Участник
|
а разве delete action вызывается если не вызывать super в delete? раз вы хотите отменить удаление в журнале надо просто
X++: void delete() { //вместо super(); this.markAsDeleted(); } |
|
16.01.2006, 10:37 | #3 |
Moderator
|
Даа, действительно! ) Об этом я не подумал! )
Спасибо! |
|
16.01.2006, 14:35 | #4 |
Member
|
Странная постановка задачи. Похожа на анекдот про студента, пальму и обезьяну.
По-моему, вам просто нужно уничтожить delete action. А то какая-то фигня получается. Delete action есть, а данные не удаляются. Для чего вы хотите оставить delete action?
__________________
С уважением, glibs® |
|
16.01.2006, 14:40 | #5 |
Moderator
|
Спасибо! Действительно.
Причины, две: 1. Сейчас тестирую, и если придется откатывать назад, то хотелось бы иметь минимум изменений. 2. Будет одна форма на которой хотелось бы стандартным способом удалять журналы (форма с журналами помеченными на удаление). А вцелом согласен, хорошо бы удалить. |
|
17.01.2006, 10:16 | #6 |
Administrator
|
Смотрите как сделано стандартное аннулирование заказов.
Впрочем, вам уже и рассказали как.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
17.01.2006, 10:26 | #7 |
Moderator
|
Стандартное анулирование заказов -- это переписывание заказа в новую таблицы (SalesTableDelete и SalesLineDelete, возможно еще куда). Но при анулировании складских журналов можно поступить хитрее, с минимальным программированием и получением максимально удобного функционала -- изменить статус журнала.
Написать надо: новый статус, перекрыть delete в заголовке журнала, и menuItem который вызывает стандартную форму, в которой будут отображаться анулированные журналы. В этой форме добавим кнопочку восстановить, которая возвращает прежний статус и кнопочку для удаления журнала. И все. Подвоха пока не вижу. Разве что периоически удалять ненужные анулированные журналы. |
|
17.01.2006, 10:31 | #8 |
Administrator
|
В контексте данной задачи разницы нет. Я Вам предложил посмотреть, как работают с Delete Action между заказом и его строчками.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
17.01.2006, 10:40 | #9 |
Moderator
|
Да, интересно. Спасибо!
При удалении заголовка, в цикле удаляются строки, перед удалением создаются в SalesTableDelete. PHP код:
|
|