Revision f49e9deb
Von Sven Schöling vor 8 Monaten hinzugefügt
- ID f49e9deb77039f7cac10d23ab93ebb9cd66b8870
- Vorgänger b0c61725
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
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>{order}- 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
> $::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)