Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 8522a85e

Von Tamino Steinert vor mehr als 1 Jahr hinzugefügt

  • ID 8522a85e2af8b665386b911d0224e550e8fcd8bd
  • Vorgänger 7ac17a23
  • Nachfolger fe3e0ed3

Workflow: (sales/purchase) invoice → reclamation

Unterschiede anzeigen:

SL/Controller/Reclamation.pm
146 146
  );
147 147
}
148 148

  
149
sub action_add_from_sales_invoice {
150
  my ($self) = @_;
151

  
152
  unless ($::form->{from_id}) {
153
    $self->js->flash('error', t8("Can't create new reclamation. No 'from_id' was given."));
154
    return $self->js->render();
155
  }
156

  
157
  require SL::DB::Invoice;
158
  my $invoice = SL::DB::Invoice->new(id => $::form->{from_id})->load;
159
  my $reclamation = $invoice->convert_to_reclamation();
160

  
161
  $self->reclamation($reclamation);
162

  
163
  $self->reinit_after_new_reclamation();
164

  
165
  $self->render(
166
    'reclamation/form',
167
    title => $self->get_title_for('add'),
168
    %{$self->{template_args}},
169
  );
170
}
171

  
172
sub action_add_from_purchase_invoice {
173
  my ($self) = @_;
174

  
175
  unless ($::form->{from_id}) {
176
    $self->js->flash('error', t8("Can't create new reclamation. No 'from_id' was given."));
177
    return $self->js->render();
178
  }
179

  
180
  require SL::DB::PurchaseInvoice;
181
  my $invoice = SL::DB::PurchaseInvoice->new(id => $::form->{from_id})->load;
182
  $invoice->{type} = $invoice->invoice_type; #can't add type → invoice_type in SL/DB/PurchaseInvoice
183
  my $reclamation = $invoice->convert_to_reclamation();
184

  
185
  $self->reclamation($reclamation);
186

  
187
  $self->reinit_after_new_reclamation();
188

  
189
  $self->render(
190
    'reclamation/form',
191
    title => $self->get_title_for('add'),
192
    %{$self->{template_args}},
193
  );
194
}
195

  
149 196
# edit an existing reclamation
150 197
sub action_edit {
151 198
  my ($self) = @_;
......
1658 1705
    SL::DB::Reclamation
1659 1706
    SL::DB::Order
1660 1707
    SL::DB::DeliveryOrder
1708
    SL::DB::Invoice
1709
    SL::DB::PurchaseInvoice
1661 1710
  );
1662 1711
  my %allowed_linked_record_items = map {$_ => 1} qw(
1663 1712
    SL::DB::ReclamationItem
1664 1713
    SL::DB::OrderItem
1665 1714
    SL::DB::DeliveryOrderItem
1715
    SL::DB::InvoiceItem
1666 1716
  );
1667 1717

  
1668 1718
  my $from_record_id = delete $::form->{converted_from_record_id};
SL/DB/Invoice.pm
137 137
  return $self->paid >= $self->amount;
138 138
}
139 139

  
140
sub convert_to_reclamation {
141
  my ($self, %params) = @_;
142
  $params{destination_type} = $self->is_sales ? 'sales_reclamation'
143
                                              : 'purchase_reclamation';
144

  
145
  require SL::DB::Reclamation;
146
  my $reclamation = SL::DB::Reclamation->new_from($self, %params);
147

  
148
  return $reclamation;
149
}
150

  
140 151
sub _clone_orderitem_delivery_order_item_cvar {
141 152
  my ($cvar) = @_;
142 153

  
SL/DB/PurchaseInvoice.pm
124 124
  join ' ', grep $_, map $_[0]->$_, qw(displayable_type record_number);
125 125
};
126 126

  
127
sub convert_to_reclamation {
128
  my ($self, %params) = @_;
129
  $params{destination_type} = $self->is_sales ? 'sales_reclamation'
130
                                              : 'purchase_reclamation';
131

  
132
  require SL::DB::Reclamation;
133
  my $reclamation = SL::DB::Reclamation->new_from($self, %params);
134

  
135
  return $reclamation;
136
}
137

  
127 138
sub create_ap_row {
128 139
  my ($self, %params) = @_;
129 140
  # needs chart as param
SL/DB/Reclamation.pm
258 258
    SL::DB::Reclamation
259 259
    SL::DB::Order
260 260
    SL::DB::DeliveryOrder
261
    SL::DB::Invoice
262
    SL::DB::PurchaseInvoice
261 263
  );
262 264
  unless( $allowed_sources{ref $source} ) {
263 265
    croak("Unsupported source object type '" . ref($source) . "'");
......
278 280
    #Delivery Order
279 281
    { from => 'sales_delivery_order',    to => 'sales_reclamation',    abbr => 'sdsr', },
280 282
    { from => 'purchase_delivery_order', to => 'purchase_reclamation', abbr => 'pdpr', },
283
    #Invoice
284
    { from => 'invoice',                 to => 'sales_reclamation',    abbr => 'sisr', },
285
    { from => 'purchase_invoice',        to => 'purchase_reclamation', abbr => 'pipr', },
281 286
  );
282 287
  my $from_to = (grep { $_->{from} eq $source->type && $_->{to} eq $destination_type} @from_tos)[0];
283 288
  if (!$from_to) {
......
373 378
    $record_args{contact_id} = $source->cp_id;
374 379
    $record_args{cv_record_number} = $source->cusordnumber;
375 380
    # }}} for vim folds
381
  } elsif ( $is_abbr_any->(qw(sisr)) ) { #Invoice(ar)
382
    map { $record_args{$_} = $source->$_ } # {{{ for vim folds
383
    qw(
384
      amount
385
      currency_id
386
      customer_id
387
      delivery_term_id
388
      department_id
389
      globalproject_id
390
      intnotes
391
      language_id
392
      netamount
393
      notes
394
      payment_id
395
      salesman_id
396
      shippingpoint
397
      shipvia
398
      tax_point
399
      taxincluded
400
      taxzone_id
401
      transaction_description
402
    );
403
    $record_args{contact_id} = $source->cp_id;
404
    $record_args{cv_record_number} = $source->cusordnumber;
405
    # }}} for vim folds
406
  } elsif ( $is_abbr_any->(qw(pipr)) ) { #Invoice(ap)
407
    map { $record_args{$_} = $source->$_ } # {{{ for vim folds
408
    qw(
409
      amount
410
      currency_id
411
      delivery_term_id
412
      department_id
413
      globalproject_id
414
      intnotes
415
      language_id
416
      netamount
417
      notes
418
      payment_id
419
      shipvia
420
      tax_point
421
      taxincluded
422
      taxzone_id
423
      transaction_description
424
      vendor_id
425
    );
426
    $record_args{contact_id} = $source->cp_id;
427
    # }}} for vim folds
376 428
  }
377 429

  
378 430
  if ( ($from_to->{from} =~ m{sales}) && ($from_to->{to} =~ m{purchase}) ) {
SL/DB/ReclamationItem.pm
55 55
      SL::DB::ReclamationItem
56 56
      SL::DB::OrderItem
57 57
      SL::DB::DeliveryOrderItem
58
      SL::DB::InvoiceItem
58 59
    )
59 60
  ) {
60 61
    croak("Unsupported source object type '" . ref($source) . "'");
......
86 87
      pricegroup_id project_id qty reqdate sellprice serialnumber unit
87 88
    );
88 89
    $item_args{custom_variables} = \@custom_variables;
90
  } elsif (ref($source) eq 'SL::DB::InvoiceItem') {
91
    map { $item_args{$_} = $source->$_ } qw(
92
      active_discount_source active_price_source base_qty description discount
93
      lastcost longdescription parts_id position price_factor price_factor_id
94
      pricegroup_id project_id qty sellprice serialnumber unit
95
    );
96
    $item_args{custom_variables} = \@custom_variables;
89 97
  }
90 98

  
91 99
  my $item = $class->new(%item_args);
bin/mozilla/io.pl
1109 1109
  quotation();
1110 1110
}
1111 1111

  
1112
sub sales_reclamation {
1113
  my $id = $::form->{id};
1114

  
1115
  require SL::Controller::Reclamation;
1116
  my $c = SL::Controller::Reclamation->new();
1117
  $c->redirect_to(
1118
    controller => 'Reclamation',
1119
    action => 'add_from_sales_invoice',
1120
    from_id => $id,
1121
    type => 'sales_reclamation',
1122
  );
1123
}
1124

  
1125
sub purchase_reclamation {
1126
  my $id = $::form->{id};
1127

  
1128
  require SL::Controller::Reclamation;
1129
  my $c = SL::Controller::Reclamation->new();
1130
  $c->redirect_to(
1131
    controller => 'Reclamation',
1132
    action => 'add_from_purchase_invoice',
1133
    from_id => $id,
1134
    type => 'purchase_reclamation',
1135
  );
1136
}
1137

  
1112 1138
sub print_options {
1113 1139
  $::lxdebug->enter_sub();
1114 1140

  
bin/mozilla/ir.pl
370 370
                    : !$form->{id}      ? t8('This invoice has not been posted yet.')
371 371
                    :                     undef,
372 372
        ],
373
        action => [
374
          t8('Reclamation'),
375
          submit   => ['#form', { action => "purchase_reclamation" }], # can't call Reclamation directly
376
          disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
377
          only_if   => ($::form->{type} eq 'purchase_invoice')
378
        ],
373 379
       ], # end of combobox "Workflow"
374 380

  
375 381
      combobox => [
bin/mozilla/is.pl
474 474
          checks   => [ 'kivi.validate_form' ],
475 475
          disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
476 476
        ],
477
        action => [
478
          t8('Reclamation'),
479
          submit   => ['#form', { action => "sales_reclamation" }], # can't call Reclamation directly
480
          disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
481
          only_if   => ($::form->{type} eq 'invoice')
482
        ],
477 483
      ], # end of combobox "Workflow"
478 484

  
479 485
      combobox => [

Auch abrufbar als: Unified diff