Странная отправка заказов на сайт
Обратился клиент с проблемой. Если у него операторы меняли не значащие поля заказа, то заказ заново отправлялся на сайт, а следовательно, покупателю приходило письмо с просьбой заново подтвердить заказ. Причем в письме не было написано, что именно поменялось.
Сначала я посмотрел, может операторы распроводят документ, а потом проводят. Но нет, в журнале регистрации не было записей по отмене проведения вроде такой:
По сути, ключевым оказалось то, что программа не сообщала, что именно изменялось. Когда я посмотрел копии писем клиентам, у меня зародились определенные подозрения.
При записи заказа программа определяла, что изменилось в заказе — дата отгрузки, склад, товарный состав и отмечала в регистре изменений соответствующие галочки.
Но вот при выгрузке наличие изменений определялось не по тому, что хотя бы одна из галочек была заполнена, а по тому, что есть запись в регистре изменений. Тем не менее, после выгрузки на сайт запись не удалялась, а обнулялась — все признаки изменений заполнялись значением Ложь.
У заказов стояла авторегистрация изменений в плане обмена с сайтом. Соответственно, при проведении заказ регистрировался на сайт, если заказ ранее выгружался, у него была обнуленная запись в регистре изменений и программа считала, что надо выгружать на сайт.
При этом в письме покупателю не было никаких сведений об изменениях, потому что все изменения были пустыми.
Я поправил этот момент, а кроме того, сделал проверку изменения ключевых реквизитов только если документ проведен, чтобы клиенту не отправлялись сообщения о редактировании отмененного с проведения заказа. При этом об отмене проведения или проведении клиенту по-прежнему сообщается.
Даже на картинке копипаст моноподобного текста 5 раз.
Требуется рефакторинг!
Как бы ты переписал?
Гугл: Рефакторинг. Извлечение метода.
Что именно в этом коде (не моем, кстати) вы бы улучшили?
https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3#%D0%92%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0_(extract_method)
нет предела совершенству.