Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision f49e9deb

Von Sven Schöling vor 8 Monaten hinzugefügt

  • ID f49e9deb77039f7cac10d23ab93ebb9cd66b8870
  • Vorgänger b0c61725

PoC: Invoice Controller

Das hier ist der Versuch mit dem aktuellen TypeData und Model::Record
Unterbau einen Invoice Controller zu bauen, vor allem zu
Dokumentationszwecken.

Dieser Branch ist NICHT zum mergen gedacht.

Erkenntnisse, was alles anders ist oder angefasst werde muss:

Im Controller:
- $self->order > $self>invoice
- Mit Tamino und Bernd besprochen, sollte eher generisch $self->record
sein
- ValidityToken::SCOPE_ORDER_SAVE > SCOPE_SALES_INVOICE_POST
- Da gab es wohl schon einmal Diskussionen ob die überhaupt scopes
haben müssen. Ansonsten, nach TypeData verschieben.
- init_type Fehlermeldung: "not a valid type foe order"
- type_data Proxy muss mit der richtigen Klasse SL::DB::Invoice erstellt
werden.
- Items müssen SL::DB::InvoiceItem statt SL::DB::OrderItem sein
- $::form
>{order} > $::form>{invoice}
- auch hier - vereinheitlichen auf $::form->{record}?
- $::form->{orderitems} > $::form>{invoiceitems}
- dito.
- setup_custom_shipto module OE -> AR
- javascripte müssen umgebogen werden und evtl frontend checks neu
gebaut werden:
- kivi.Order.check_cv
- kivi.Order.check_duplicate_parts
- kivi.Order.check_valid_reqdate
- kivi.Order.check_transport_cost_article_presence
- kivi.Order.check_cusordnumber_presence
- kivi.Order.check_has_final_invoice - unnötig
- kivi.Order.check_invoice_advance_payment - unnötig

Features:
- close_quotations - gibt es in Invoice nicht
- periodic_invoices - gibt es in Invoice nicht
- basket_from_from - (sic!) gibt es in Invoice nicht
- shipped_qty - Invoice macht im Moment nichts mit Lager im Frontend
- transport_cost_reminder - gibt es in Invoice nicht
- phone_notes - gibt es in Invoice nicht
- subversion / final_version - gibt es in Invoice nicht als Zieltypen
im workflow
- not_order_locked - Waren nicht nicht mehr eingekauft werden dürfen
- ja/nein?

In SL::DB::Invoice und TypeDate
- Invoice kennt bereits ein type, was aber nicht das gleiche ist wie
das record_type. Das muss in der Datenbank gefixt werden.
- duedate/reqdate default belegung fuktioniert so nicht, ist von
payment_terms abhängig
- gldate belegung funktioniert so nicht
- parts_classification

Dazu ware in is.pl sehr viele Flags in Form, die da eigentlich nicht
hingehören:
- locked
- readonly
- storno
- storno_id
- postal_invoice
- is_gldate_ready (gldate today)
- payment_balanced (oldpaidtotal paidtotal)

- type_data->rights kann im Moment keine object rights wie über Projekte
- und die parts_classification_query sind da noch kaputt

Unterschiede anzeigen:

SL/DB/Invoice.pm
19 19
use SL::DB::Helper::RecordLink qw(RECORD_ID RECORD_TYPE_REF RECORD_ITEM_ID RECORD_ITEM_TYPE_REF);
20 20
use SL::DB::Helper::SalesPurchaseInvoice;
21 21
use SL::DB::Helper::TransNumberGenerator;
22
use SL::DB::Helper::TypeDataProxy;
22 23
use SL::DB::Helper::ZUGFeRD qw(:CREATE);
23 24
use SL::Locale::String qw(t8);
24 25

  
......
79 80
__PACKAGE__->before_save('_before_save_set_invnumber');
80 81
__PACKAGE__->after_save('_after_save_link_records');
81 82

  
83
use Rose::Object::MakeMethods::Generic (
84
  'scalar --get_set_init' => [ qw(record_type) ],
85
);
86

  
82 87
# hooks
83 88

  
84 89
sub _before_save_set_invnumber {
......
108 113
sub items { goto &invoiceitems; }
109 114
sub add_items { goto &add_invoiceitems; }
110 115
sub record_number { goto &invnumber; };
111
sub record_type { goto &invoice_type; };
116
#sub record_type { goto &invoice_type; };
112 117

  
113 118
sub is_sales {
114 119
  # For compatibility with Order, DeliveryOrder
......
576 581
  }
577 582
}
578 583

  
584
sub init_record_type {
585
  goto &invoice_type;
586
}
587

  
579 588
sub invoice_type {
580 589
  my ($self) = @_;
581 590

  
......
645 654
  goto &customer;
646 655
}
647 656

  
657
sub is_type {
658
  return shift->record_type eq shift;
659
}
660

  
661
sub number {
662
  my $self = shift;
663

  
664
  my $nr_key = $self->type_data->properties('nr_key');
665
  return $self->$nr_key(@_);
666
}
667

  
648 668
sub link {
649 669
  my ($self) = @_;
650 670

  
......
673 693
  return $self->netamount; # already matches base currency
674 694
}
675 695

  
696
sub type_data {
697
  SL::DB::Helper::TypeDataProxy->new(ref $_[0], $_[0]->record_type);
698
}
699

  
676 700
1;
677 701

  
678 702
__END__

Auch abrufbar als: Unified diff