Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision a5b0b43c

Von Bernd Bleßmann vor etwa 2 Jahren hinzugefügt

Auftrags-Controller: Neuberechnen und unveränderliche Daten immer vor Speichern

recalc() und get_unalterable_data() nicht mehr als run_before-Hook aufrufen,
sondern immer vor dem Speichern in der sub save().
Es gibt zuviele Actions, bei denen das gemacht werden muss und zu viele,
wo es nicht notwendig ist oder nicht geht, um dass vernünftig mit run_before
und only und except umzusetzen und nicht irgendwas zu übersehen.

Aufgefallen ist das, da einige workflow-Aktions, die den Beleg speichern,
nicht in der run_before-Liste waren. So wirkte sich z.B. eine Mengenänderung
in der Maske auf die Gesamtsumme aus, diese wurde aber dann bei dem Workflow
nicht gespeichert.
Das führte dann dazu, dass Summe im Bericht und Summe in der Belegmaske nicht
gleich waren.

Unterschiede anzeigen:

SL/Controller/Order.pm
65 65
__PACKAGE__->run_before('check_auth_for_edit',
66 66
                        except => [ qw(edit show_customer_vendor_details_dialog price_popup load_second_rows close_quotations) ]);
67 67

  
68
__PACKAGE__->run_before('recalc',
69
                        only => [ qw(save save_as_new save_and_delivery_order save_and_invoice save_and_invoice_for_advance_payment
70
                                     save_and_final_invoice save_and_ap_transaction add_subversion
71
                                     print send_email) ]);
72

  
73
__PACKAGE__->run_before('get_unalterable_data',
74
                        only => [ qw(save save_as_new save_and_delivery_order save_and_invoice save_and_invoice_for_advance_payment
75
                                     save_and_final_invoice save_and_ap_transaction add_subversion
76
                                     print send_email) ]);
77

  
78 68
#
79 69
# actions
80 70
#
......
2004 1994
sub save {
2005 1995
  my ($self) = @_;
2006 1996

  
1997
  $self->recalc();
1998
  $self->get_unalterable_data();
1999

  
2007 2000
  my $errors = [];
2008 2001
  my $db     = $self->order->db;
2009 2002

  

Auch abrufbar als: Unified diff