Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0743ffa0

Von Tamino Steinert vor fast 3 Jahren hinzugefügt

  • ID 0743ffa06124546396483188972655dfece2e99b
  • Vorgänger 77f30228
  • Nachfolger 83b9d2b3

Workflow: (sales/purchase) invoice → reclamation

Unterschiede anzeigen:

SL/Controller/Reclamation.pm
);
}
sub action_add_from_sales_invoice {
my ($self) = @_;
unless ($::form->{from_id}) {
$self->js->flash('error', t8("Can't create new reclamation. No 'from_id' was given."));
return $self->js->render();
}
require SL::DB::Invoice;
my $invoice = SL::DB::Invoice->new(id => $::form->{from_id})->load;
my $reclamation = $invoice->convert_to_reclamation();
$self->reclamation($reclamation);
$self->reinit_after_new_reclamation();
$self->render(
'reclamation/form',
title => $self->get_title_for('add'),
%{$self->{template_args}},
);
}
sub action_add_from_purchase_invoice {
my ($self) = @_;
unless ($::form->{from_id}) {
$self->js->flash('error', t8("Can't create new reclamation. No 'from_id' was given."));
return $self->js->render();
}
require SL::DB::PurchaseInvoice;
my $invoice = SL::DB::PurchaseInvoice->new(id => $::form->{from_id})->load;
$invoice->{type} = $invoice->invoice_type; #can't add type → invoice_type in SL/DB/PurchaseInvoice
my $reclamation = $invoice->convert_to_reclamation();
$self->reclamation($reclamation);
$self->reinit_after_new_reclamation();
$self->render(
'reclamation/form',
title => $self->get_title_for('add'),
%{$self->{template_args}},
);
}
# edit an existing reclamation
sub action_edit {
my ($self) = @_;
......
SL::DB::Reclamation
SL::DB::Order
SL::DB::DeliveryOrder
SL::DB::Invoice
SL::DB::PurchaseInvoice
);
my %allowed_linked_record_items = map {$_ => 1} qw(
SL::DB::ReclamationItem
SL::DB::OrderItem
SL::DB::DeliveryOrderItem
SL::DB::InvoiceItem
);
my $from_record_id = delete $::form->{converted_from_record_id};
SL/DB/Invoice.pm
return $self->paid >= $self->amount;
}
sub convert_to_reclamation {
my ($self, %params) = @_;
$params{destination_type} = $self->is_sales ? 'sales_reclamation'
: 'purchase_reclamation';
require SL::DB::Reclamation;
my $reclamation = SL::DB::Reclamation->new_from($self, %params);
return $reclamation;
}
sub _clone_orderitem_delivery_order_item_cvar {
my ($cvar) = @_;
SL/DB/PurchaseInvoice.pm
join ' ', grep $_, map $_[0]->$_, qw(displayable_type record_number);
};
sub convert_to_reclamation {
my ($self, %params) = @_;
$params{destination_type} = $self->is_sales ? 'sales_reclamation'
: 'purchase_reclamation';
require SL::DB::Reclamation;
my $reclamation = SL::DB::Reclamation->new_from($self, %params);
return $reclamation;
}
sub create_ap_row {
my ($self, %params) = @_;
# needs chart as param
SL/DB/Reclamation.pm
SL::DB::Reclamation
SL::DB::Order
SL::DB::DeliveryOrder
SL::DB::Invoice
SL::DB::PurchaseInvoice
);
unless( $allowed_sources{ref $source} ) {
croak("Unsupported source object type '" . ref($source) . "'");
......
#Delivery Order
{ from => 'sales_delivery_order', to => 'sales_reclamation', abbr => 'sdsr', },
{ from => 'purchase_delivery_order', to => 'purchase_reclamation', abbr => 'pdpr', },
#Invoice
{ from => 'invoice', to => 'sales_reclamation', abbr => 'sisr', },
{ from => 'purchase_invoice', to => 'purchase_reclamation', abbr => 'pipr', },
);
my $from_to = (grep { $_->{from} eq $source->type && $_->{to} eq $destination_type} @from_tos)[0];
if (!$from_to) {
......
$record_args{contact_id} = $source->cp_id;
$record_args{cv_record_number} = $source->cusordnumber;
# }}} for vim folds
} elsif ( $is_abbr_any->(qw(sisr)) ) { #Invoice(ar)
map { $record_args{$_} = $source->$_ } # {{{ for vim folds
qw(
amount
currency_id
customer_id
delivery_term_id
department_id
globalproject_id
intnotes
language_id
netamount
notes
payment_id
salesman_id
shippingpoint
shipvia
tax_point
taxincluded
taxzone_id
transaction_description
);
$record_args{contact_id} = $source->cp_id;
$record_args{cv_record_number} = $source->cusordnumber;
# }}} for vim folds
} elsif ( $is_abbr_any->(qw(pipr)) ) { #Invoice(ap)
map { $record_args{$_} = $source->$_ } # {{{ for vim folds
qw(
amount
currency_id
delivery_term_id
department_id
globalproject_id
intnotes
language_id
netamount
notes
payment_id
shipvia
tax_point
taxincluded
taxzone_id
transaction_description
vendor_id
);
$record_args{contact_id} = $source->cp_id;
# }}} for vim folds
}
if ( ($from_to->{from} =~ m{sales}) && ($from_to->{to} =~ m{purchase}) ) {
SL/DB/ReclamationItem.pm
SL::DB::ReclamationItem
SL::DB::OrderItem
SL::DB::DeliveryOrderItem
SL::DB::InvoiceItem
)
) {
croak("Unsupported source object type '" . ref($source) . "'");
......
pricegroup_id project_id qty reqdate sellprice serialnumber unit
);
$item_args{custom_variables} = \@custom_variables;
} elsif (ref($source) eq 'SL::DB::InvoiceItem') {
map { $item_args{$_} = $source->$_ } qw(
active_discount_source active_price_source base_qty description discount
lastcost longdescription parts_id position price_factor price_factor_id
pricegroup_id project_id qty sellprice serialnumber unit
);
$item_args{custom_variables} = \@custom_variables;
}
my $item = $class->new(%item_args);
bin/mozilla/io.pl
quotation();
}
sub sales_reclamation {
my $id = $::form->{id};
require SL::Controller::Reclamation;
my $c = SL::Controller::Reclamation->new();
$c->redirect_to(
controller => 'Reclamation',
action => 'add_from_sales_invoice',
from_id => $id,
type => 'sales_reclamation',
);
}
sub purchase_reclamation {
my $id = $::form->{id};
require SL::Controller::Reclamation;
my $c = SL::Controller::Reclamation->new();
$c->redirect_to(
controller => 'Reclamation',
action => 'add_from_purchase_invoice',
from_id => $id,
type => 'purchase_reclamation',
);
}
sub print_options {
$::lxdebug->enter_sub();
bin/mozilla/ir.pl
: !$form->{id} ? t8('This invoice has not been posted yet.')
: undef,
],
action => [
t8('Reclamation'),
submit => ['#form', { action => "purchase_reclamation" }], # can't call Reclamation directly
disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
only_if => ($::form->{type} eq 'purchase_invoice')
],
], # end of combobox "Workflow"
combobox => [
bin/mozilla/is.pl
checks => [ 'kivi.validate_form' ],
disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
],
action => [
t8('Reclamation'),
submit => ['#form', { action => "sales_reclamation" }], # can't call Reclamation directly
disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
only_if => ($::form->{type} eq 'invoice')
],
], # end of combobox "Workflow"
combobox => [

Auch abrufbar als: Unified diff