]> wagnertech.de Git - mfinanz.git/blobdiff - bin/mozilla/io.pl
Feature "Lizenzen" entfernt
[mfinanz.git] / bin / mozilla / io.pl
index 3d236e87b8120a227b5fd7834bc9c32416f65739..e15a15f36f60a82b889c14e0cb3b14e6a27fa3ad 100644 (file)
@@ -36,6 +36,7 @@
 #
 #######################################################################
 
+use Carp;
 use CGI;
 use CGI::Ajax;
 use List::Util qw(min max first);
@@ -147,7 +148,6 @@ sub display_row {
     {  id => 'qty',           width => 5,     value => $locale->text('Qty'),                  display => 1, },
     {  id => 'price_factor',  width => 5,     value => $locale->text('Price Factor'),         display => !$is_delivery_order, },
     {  id => 'unit',          width => 5,     value => $locale->text('Unit'),                 display => 1, },
-    {  id => 'license',       width => 10,    value => $locale->text('License'),              display => 0, },
     {  id => 'serialnr',      width => 10,    value => $locale->text('Serial No.'),           display => 0, },
     {  id => 'projectnr',     width => 10,    value => $locale->text('Project'),              display => 0, },
     {  id => 'sellprice',     width => 15,    value => $locale->text('Price'),                display => !$is_delivery_order, },
@@ -370,7 +370,7 @@ sub display_row {
 
     if ($is_delivery_order) {
       map { $form->{"${_}_${i}"} = $form->format_amount(\%myconfig, $form->{"${_}_${i}"}) } qw(sellprice discount lastcost);
-      push @hidden_vars, qw(sellprice discount price_factor_id lastcost);
+      push @hidden_vars, qw(sellprice discount not_discountable price_factor_id lastcost);
       push @hidden_vars, "stock_${stock_in_out}_sum_qty", "stock_${stock_in_out}";
     }
 
@@ -437,148 +437,27 @@ sub set_pricegroup {
 sub select_item {
   $main::lxdebug->enter_sub();
 
-  my $form     = $main::form;
-  my %myconfig = %main::myconfig;
-  my $locale   = $main::locale;
-  my $cgi      = $main::cgi;
+  my %params = @_;
+  my $mode   = $params{mode} || croak "Missing parameter 'mode'";
 
-# diese variable kommt schon in der methode display_row vor, kann man die besser wiederverwenden? @mb fragen.  ich check das jetzt erstmal so ein
-  my $is_purchase        = (first { $_ eq $form->{type} } qw(request_quotation purchase_order purchase_delivery_order)) || ($form->{script} eq 'ir.pl');
   _check_io_auth();
 
-  my @column_index = qw(ndx partnumber description rop onhand unit sellprice);
-  my %column_data;
-  $column_data{ndx}        = qq|<th>&nbsp;</th>|;
-  $column_data{partnumber} =
-    qq|<th class="listheading">| . $locale->text('Number') . qq|</th>|;
-  $column_data{description} =
-    qq|<th class="listheading">| . $locale->text('Part Description') . qq|</th>|;
-  $column_data{sellprice} =
-    qq|<th class="listheading">| . $locale->text('Price') . qq|</th>|;
-    if ($is_purchase){
-      $column_data{rop} =
-      qq|<th class="listheading">| . $locale->text('ROP') . qq|</th>|;
-    }# ende if $is_purchase -> Überschrift Mindestlagerbestand - ähnliche Prüfung weiter unten
-  $column_data{onhand} =
-    qq|<th class="listheading">| . $locale->text('Qty') . qq|</th>|;
-  $column_data{unit} =
-    qq|<th class="listheading">| . $locale->text('Unit') . qq|</th>|;
-  # list items with radio button on a form
-  $form->header;
+  $::form->{title} = $::locale->text('Select from one of the items below');
+  $::form->header;
 
-  my $title   = $locale->text('Select from one of the items below');
-  my $colspan = $#column_index + 1;
-
-  print qq|
-  <body>
-
-<form method="post" action="$form->{script}">
-
-<table width="100%">
-  <tr>
-    <th class="listtop" colspan="$colspan">$title</th>
-  </tr>
-  <tr height="5"></tr>
-  <tr class="listheading">|;
-
-  map { print "\n$column_data{$_}" } @column_index;
-
-  print qq|</tr>|;
-
-  my @new_fields =
-    qw(bin listprice inventory_accno income_accno expense_accno unit weight
-       assembly taxaccounts partsgroup formel longdescription not_discountable
-       part_payment_id partnotes id lastcost price_factor_id price_factor);
-  push @new_fields, "lizenzen" if $::lx_office_conf{features}->{lizenzen};
-  push @new_fields, grep { m/^ic_cvar_/ } keys %{ $form->{item_list}->[0] };
-
-  my $i = 0;
-  my $j;
-  foreach my $ref (@{ $form->{item_list} }) {
-    my $checked = ($i++) ? "" : "checked";
-
-    if ($::lx_office_conf{features}->{lizenzen}) {
-      if ($ref->{inventory_accno} > 0) {
-        $ref->{"lizenzen"} = qq|<option></option>|;
-        foreach my $item (@{ $form->{LIZENZEN}{ $ref->{"id"} } }) {
-          $ref->{"lizenzen"} .=
-            qq|<option value=\"$item->{"id"}\">$item->{"licensenumber"}</option>|;
-        }
-        $ref->{"lizenzen"} .= qq|<option value="-1">Neue Lizenz</option>|;
-        $ref->{"lizenzen"} =~ s/\"/&quot;/g;
-      }
-    }
-
-    map { $ref->{$_} =~ s/\"/&quot;/g } qw(partnumber description unit);
-
-    my $display_sellprice  = $ref->{sellprice} * (1 - $form->{tradediscount});
-    $display_sellprice    /= $ref->{price_factor} if ($ref->{price_factor});
-    $display_sellprice     = $form->format_amount(\%myconfig, $display_sellprice, 2);
-
-    $column_data{ndx} =
-      qq|<td><input name="ndx" class="radio" type="radio" value="$i" $checked></td>|;
-    $column_data{partnumber} =
-      qq|<td><input name="new_partnumber_$i" type="hidden" value="$ref->{partnumber}">$ref->{partnumber}</td>|;
-    $column_data{description} =
-      qq|<td><input name="new_description_$i" type="hidden" value="$ref->{description}">$ref->{description}</td>|;
-    $column_data{sellprice} =
-      qq|<td align="right"><input name="new_sellprice_$i" type="hidden" value="$ref->{sellprice}">|
-      . $display_sellprice
-      . qq|</td>|;
-    $column_data{onhand} =
-      qq|<td align="right"><input name="new_onhand_$i" type="hidden" value="$ref->{onhand}">|
-      . $form->format_amount(\%myconfig, $ref->{onhand}, '', "&nbsp;")
-      . qq|</td>|;
-    if ($is_purchase){
-    $column_data{rop} =
-      qq|<td align="right"><input name="new_rop$i" type="hidden" value="$ref->{rop}">|
-      . $form->format_amount(\%myconfig, $ref->{rop}, '', "&nbsp;")
-      . qq|</td>|;
-    }# ende if $is_purchase -> Falls der Aufruf über eine Einkaufsmaske kam, handelt es sich um einen Lieferantenauftrag und uns interessiert auch die Mindestbestandsmenge
-    $column_data{unit} =
-      qq|<td>$ref->{unit}</td>|;
-    $j++;
-    $j %= 2;
-    print qq|
-<tr class=listrow$j>|;
-
-    map { print "\n$column_data{$_}" } @column_index;
-
-    print("</tr>\n");
-
-    print join "\n", map { $cgi->hidden("-name" => "new_${_}_$i", "-value" => $ref->{$_}) } @new_fields;
-    print "\n";
-  }
-
-  print qq|
-<tr><td colspan="8"><hr size="3" noshade></td></tr>
-</table>
-
-<input name="lastndx" type="hidden" value="$i">
-
-|;
+  my @item_list = map {
+    $_->{display_sellprice}  = $_->{sellprice} * (1 - $::form->{tradediscount});
+    $_->{display_sellprice} /= $_->{price_factor} if ($_->{price_factor});
+    $_;
+  } @{ $::form->{item_list} };
 
   # delete action variable
-  map { delete $form->{$_} } qw(action item_list header);
-
-  # save all other form variables
-  foreach my $key (keys %${form}) {
-    next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key}));
-    $form->{$key} =~ s/\"/&quot;/g;
-    print qq|<input name="$key" type="hidden" value="$form->{$key}">\n|;
-  }
-
-  print qq|
-<input type="hidden" name="nextsub" value="item_selected">
-
-<br>
-<input class="submit" type="submit" name="action" value="|
-    . $locale->text('Continue') . qq|">
-</form>
+  delete @{$::form}{qw(action item_list header)};
 
-</body>
-</html>
-|;
+  print $::form->parse_html_template('io/select_item', { PREVIOUS_FORM => $::auth->save_form_in_session(form => $::form),
+                                                         MODE          => $mode,
+                                                         ITEM_LIST     => \@item_list,
+                                                         IS_PURCHASE   => $mode eq 'IS' });
 
   $main::lxdebug->leave_sub();
 }
@@ -591,16 +470,25 @@ sub item_selected {
 
   _check_io_auth();
 
-  # replace the last row with the checked row
-  my $i = $form->{rowcount};
-  $i = $form->{assembly_rows} if ($form->{item} eq 'assembly');
+  $::auth->restore_form_from_session($form->{select_item_previous_form} || croak('Missing previous form ID'), form => $form);
 
-  # index for new item
-  my $j = $form->{ndx};
+  my $mode = delete($form->{select_item_mode}) || croak 'Missing item selection mode';
+  my $id   = delete($form->{select_item_id})   || croak 'Missing item selection ID';
+  my $i    = $form->{ $mode eq 'IC' ? 'assembly_rows' : 'rowcount' };
 
-  #sk
-  #($form->{"sellprice_$i"},$form->{"$pricegroup_old_$i"}) = split /--/, $form->{"sellprice_$i"};
-  #$form->{"sellprice_$i"} = $form->{"sellprice_$i"};
+  $form->{"id_${i}"} = $id;
+
+  if ($mode eq 'IS') {
+    IS->retrieve_item(\%myconfig, \%$form);
+  } elsif ($mode eq 'IR') {
+    IR->retrieve_item(\%myconfig, \%$form);
+  } elsif ($mode eq 'IC') {
+    IC->assembly_item(\%myconfig, \%$form);
+  } else {
+    croak "Invalid item selection mode '${mode}'";
+  }
+
+  my $new_item = $form->{item_list}->[0] || croak "No item found for mode '${mode}' and ID '${id}'";
 
   # if there was a price entered, override it
   my $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"});
@@ -614,18 +502,14 @@ sub item_selected {
   my $ic_cvar_configs = CVar->get_configs(module => 'IC');
   push @new_fields, map { "ic_cvar_$_->{name}" } @{ $ic_cvar_configs };
 
-  map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } @new_fields;
+  map { $form->{"${_}_$i"} = $new_item->{$_} } @new_fields;
 
-  $form->{"marge_price_factor_$i"} = $form->{"new_price_factor_$j"};
+  $form->{"marge_price_factor_$i"} = $new_item->{price_factor};
 
   if ($form->{"part_payment_id_$i"} ne "") {
     $form->{payment_id} = $form->{"part_payment_id_$i"};
   }
 
-  if ($::lx_office_conf{features}->{lizenzen}) {
-    map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } qw(lizenzen);
-  }
-
   my ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
   $dec           = length $dec;
   my $decimalplaces = ($dec > 2) ? $dec : 2;
@@ -665,12 +549,7 @@ sub item_selected {
 
   $form->{"runningnumber_$i"} = $i;
 
-  # delete all the new_ variables
-  for $i (1 .. $form->{lastndx}) {
-    map { delete $form->{"new_${_}_$i"} } @new_fields;
-  }
-
-  map { delete $form->{$_} } qw(ndx lastndx nextsub);
+  delete $form->{nextsub};
 
   # format amounts
   map {
@@ -1538,17 +1417,7 @@ sub print_form {
                    qw(invtotal ordtotal quototal subtotal linetotal
                       listprice sellprice netprice discount
                       tax taxbase total paid),
-                   grep({ /^linetotal_\d+$/ ||
-                            /^listprice_\d+$/ ||
-                            /^sellprice_\d+$/ ||
-                            /^netprice_\d+$/ ||
-                            /^taxbase_\d+$/ ||
-                            /^discount_\d+$/ ||
-                            /^paid_\d+$/ ||
-                            /^subtotal_\d+$/ ||
-                            /^total_\d+$/ ||
-                            /^tax_\d+$/
-                        } keys(%{$form})));
+                   grep({ /^(?:linetotal|nodiscount_linetotal|listprice|sellprice|netprice|taxbase|discount|p_discount|discount_sub|nodiscount_sub|paid|subtotal|total|tax)_\d+$/ } keys(%{$form})));
 
   reformat_numbers($output_numberformat, undef,
                    qw(qty price_factor),
@@ -1923,50 +1792,6 @@ sub ship_to {
   $main::lxdebug->leave_sub();
 }
 
-sub new_license {
-  $main::lxdebug->enter_sub();
-
-  my $form     = $main::form;
-
-  _check_io_auth();
-
-  my $row = shift;
-
-  # change callback
-  $form->{old_callback} = $form->escape($form->{callback}, 1);
-  $form->{callback} = $form->escape("$form->{script}?action=display_form", 1);
-  $form->{old_callback} = $form->escape($form->{old_callback}, 1);
-
-  # delete action
-  delete $form->{action};
-  my $customer = $form->{customer};
-  map { $form->{"old_$_"} = $form->{"${_}_$row"} } qw(partnumber description);
-
-  # save all other form variables in a previousform variable
-  $form->{row} = $row;
-  my $previousform;
-  foreach my $key (keys %$form) {
-    next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key}));
-
-    # escape ampersands
-    $form->{$key} =~ s/&/%26/g;
-    $previousform .= qq|$key=$form->{$key}&|;
-  }
-  chop $previousform;
-  $previousform = $form->escape($previousform, 1);
-
-  $form->{script} = "licenses.pl";
-
-  map { $form->{$_} = $form->{"old_$_"} } qw(partnumber description);
-  map { $form->{$_} = $form->escape($form->{$_}, 1) }
-    qw(partnumber description);
-  $form->{callback} =
-    qq|$form->{script}?action=add&vc=$form->{db}&$form->{db}_id=$form->{id}&$form->{db}=$form->{name}&type=$form->{type}&customer=$customer&partnumber=$form->{partnumber}&description=$form->{description}&previousform="$previousform"&initial=1|;
-  $form->redirect;
-
-  $main::lxdebug->leave_sub();
-}
-
 sub relink_accounts {
   $main::lxdebug->enter_sub();