Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision a2820962

Von Moritz Bunkus vor mehr als 11 Jahren hinzugefügt

  • ID a28209621fe9aab10b764551a8a4427faec2006d
  • Vorgänger a93f1e39
  • Nachfolger fd0a62ab

Umwandlung Angebot/Auftrag -> Lieferschein/Rechnung: nur nicht gelieferte/berechnete Mengen vorgeben

Unterschiede anzeigen:

bin/mozilla/oe.pl
31 31
# Quotation module
32 32
#======================================================================
33 33

  
34

  
35
use Carp;
34 36
use POSIX qw(strftime);
35 37

  
36 38
use SL::DO;
......
42 44
use SL::PE;
43 45
use SL::ReportGenerator;
44 46
use List::MoreUtils qw(any none);
45
use List::Util qw(max reduce sum);
47
use List::Util qw(min max reduce sum);
46 48
use Data::Dumper;
47 49

  
48 50
require "bin/mozilla/io.pl";
......
1335 1337
    ::end_of_request();
1336 1338
  }
1337 1339

  
1340
  _oe_remove_delivered_or_billed_rows(id => $form->{id}, type => 'billed');
1341

  
1338 1342
  $form->{cp_id} *= 1;
1339 1343

  
1340 1344
  for my $i (1 .. $form->{rowcount}) {
......
1870 1874
  $form->{old_employee_id}  = $form->{employee_id};
1871 1875
  $form->{old_salesman_id}  = $form->{salesman_id};
1872 1876

  
1877
  _oe_remove_delivered_or_billed_rows(id => $form->{id}, type => 'delivered');
1878

  
1873 1879
  # reset
1874 1880
  delete @{$form}{qw(id subject message cc bcc printed emailed queued creditlimit creditremaining discount tradediscount oldinvtotal closed delivered)};
1875 1881

  
......
2043 2049
  $::lxdebug->leave_sub();
2044 2050
}
2045 2051

  
2052
sub _oe_remove_delivered_or_billed_rows {
2053
  my (%params) = @_;
2054

  
2055
  return if !$params{id} || !$params{type};
2056

  
2057
  my $ord_quot = SL::DB::Order->new(id => $params{id})->load;
2058
  return if !$ord_quot;
2059

  
2060
  my %args    = (
2061
    direction => 'to',
2062
    to        =>   $params{type} eq 'delivered' ? 'DeliveryOrder' : 'Invoice',
2063
    via       => [ $params{type} eq 'delivered' ? qw(Order)       : qw(Order DeliveryOrder) ],
2064
  );
2065

  
2066
  my %handled_base_qtys;
2067
  foreach my $record (@{ $ord_quot->linked_records(%args) }) {
2068
    next if $ord_quot->is_sales != $record->is_sales;
2069

  
2070
    foreach my $item (@{ $record->items }) {
2071
      $handled_base_qtys{ $item->parts_id } += $item->qty * $item->unit_obj->base_factor;
2072
    }
2073
  }
2074

  
2075
  _remove_billed_or_delivered_rows(quantities => \%handled_base_qtys);
2076
}
2077

  
2046 2078
sub dispatcher {
2047 2079
  foreach my $action (qw(delete delivery_order e_mail invoice print purchase_order purchase_order quotation
2048 2080
                         request_for_quotation sales_order sales_order save save_and_close save_as_new ship_to update)) {

Auch abrufbar als: Unified diff