Die Berichtsoptionen in oe.pl (Anfragen, Aufträge, Angebote) auf die Verwendung von...
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 13 Jun 2007 15:34:23 +0000 (15:34 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 13 Jun 2007 15:34:23 +0000 (15:34 +0000)
bin/mozilla/oe.pl
locale/de/all
locale/de/oe
templates/webpages/oe/orders_bottom_de.html [new file with mode: 0644]
templates/webpages/oe/orders_bottom_master.html [new file with mode: 0644]
templates/webpages/oe/orders_top_de.html [new file with mode: 0644]
templates/webpages/oe/orders_top_master.html [new file with mode: 0644]

index de5d6a2..40eecc3 100644 (file)
 # Order entry module
 # Quotation module
 #======================================================================
-use Data::Dumper;
+
+use POSIX qw(strftime);
 
 use SL::OE;
 use SL::IR;
 use SL::IS;
 use SL::PE;
+use SL::ReportGenerator;
 
 require "bin/mozilla/io.pl";
 require "bin/mozilla/arap.pl";
+require "bin/mozilla/report_generator.pl";
 
 1;
 
@@ -1569,368 +1572,231 @@ $jsscript
   $lxdebug->leave_sub();
 }
 
+sub create_subtotal_row {
+  $lxdebug->enter_sub();
+
+  my ($totals, $columns, $column_alignment, $subtotal_columns, $class) = @_;
+
+  my $row = { map { $_ => { 'data' => '', 'class' => $class, 'align' => $column_alignment->{$_}, } } @{ $columns } };
+
+  map { $row->{$_}->{data} = $form->format_amount(\%myconfig, $totals->{$_}, 2) } @{ $subtotal_columns };
+
+  $row->{tax}->{data} = $form->format_amount(\%myconfig, $totals->{amount} - $totals->{netamount}, 2);
+
+  map { $totals->{$_} = 0 } @{ $subtotal_columns };
+
+  $lxdebug->leave_sub();
+
+  return $row;
+}
+
 sub orders {
   $lxdebug->enter_sub();
 
   $ordnumber = ($form->{type} =~ /_order$/) ? "ordnumber" : "quonumber";
 
-  # construct href
-  my @fields =
-    qw(type vc login password transdatefrom transdateto
-       open closed notdelivered delivered department
-       transaction_description);
-  push @fields, $form->{vc};
-  $href = "$form->{script}?action=orders&"
-    . join("&", map { "${_}=" . E($form->{$_}) } @fields)
-    . "&${ordnumber}=" . E($form->{$ordnumber});
-  $callback = $href;
-
-  # split vendor / customer
-  ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) =
-    split(/--/, $form->{ $form->{vc} });
+  ($form->{ $form->{vc} }, $form->{"${form->{vc}}_id"}) = split(/--/, $form->{ $form->{vc} });
+
+  $form->{sort} ||= 'transdate';
 
   OE->transactions(\%myconfig, \%$form);
 
-  @columns = (
+  $form->{rowcount} = scalar @{ $form->{OE} };
+
+  my @columns = (
     "transdate",               "reqdate",
-    "id",                      "$ordnumber",
+    "id",                      $ordnumber,
     "name",                    "netamount",
     "tax",                     "amount",
     "curr",                    "employee",
     "shipvia",                 "globalprojectnumber",
     "transaction_description", "open",
-    "closed",                  "delivered"
+    "delivered"
   );
 
-  $form->{l_open} = $form->{l_closed} = "Y"
-    if ($form->{open} && $form->{closed});
-
-  $form->{"l_delivered"} = "Y"
-    if ($form->{"delivered"} && $form->{"notdelivered"});
-
-  foreach $item (@columns) {
-    if ($form->{"l_$item"} eq "Y") {
-      push @column_index, $item;
-
-      # add column to href and callback
-      $callback .= "&l_$item=Y";
-      $href     .= "&l_$item=Y";
-    }
-  }
-
   # only show checkboxes if gotten here via sales_order form.
-  if ($form->{type} =~ /sales_order/) {
-    unshift @column_index, "ids";
+  my $allow_multiple_orders = $form->{type} eq 'sales_order';
+  if ($allow_multiple_orders) {
+    unshift @columns, "ids";
   }
 
-  if ($form->{l_subtotal} eq 'Y') {
-    $callback .= "&l_subtotal=Y";
-    $href     .= "&l_subtotal=Y";
-  }
+  $form->{l_open}      = $form->{l_closed} = "Y" if ($form->{open}      && $form->{closed});
+  $form->{l_delivered} = "Y"                     if ($form->{delivered} && $form->{notdelivered});
 
+  my $attachment_basename;
   if ($form->{vc} eq 'vendor') {
     if ($form->{type} eq 'purchase_order') {
-      $form->{title} = $locale->text('Purchase Orders');
+      $form->{title}       = $locale->text('Purchase Orders');
+      $attachment_basename = $locale->text('purchase_order_list');
     } else {
-      $form->{title} = $locale->text('Request for Quotations');
+      $form->{title}       = $locale->text('Request for Quotations');
+      $attachment_basename = $locale->text('rfq_list');
     }
-    $name     = $locale->text('Vendor');
-    $employee = $locale->text('Employee');
-  }
-  if ($form->{vc} eq 'customer') {
+
+  } else {
     if ($form->{type} eq 'sales_order') {
-      $form->{title} = $locale->text('Sales Orders');
+      $form->{title}       = $locale->text('Sales Orders');
+      $attachment_basename = $locale->text('sales_order_list');
     } else {
-      $form->{title} = $locale->text('Quotations');
+      $form->{title}       = $locale->text('Quotations');
+      $attachment_basename = $locale->text('quotation_list');
     }
-    $employee = $locale->text('Employee');
-    $name = $locale->text('Customer');
-  }
-
-  $column_header{id} =
-      qq|<th><a class=listheading href=$href&sort=id>|
-    . $locale->text('ID')
-    . qq|</a></th>|;
-  $column_header{transdate} =
-      qq|<th><a class=listheading href=$href&sort=transdate>|
-    . $locale->text('Date')
-    . qq|</a></th>|;
-  $column_header{reqdate} =
-      qq|<th><a class=listheading href=$href&sort=reqdate>|
-    . $locale->text('Required by')
-    . qq|</a></th>|;
-  $column_header{ordnumber} =
-      qq|<th><a class=listheading href=$href&sort=ordnumber>|
-    . $locale->text('Order')
-    . qq|</a></th>|;
-  $column_header{quonumber} =
-      qq|<th><a class=listheading href=$href&sort=quonumber>|
-    . ($form->{"type"} eq "request_quotation" ?
-       $locale->text('RFQ') :
-       $locale->text('Quotation'))
-    . qq|</a></th>|;
-  $column_header{name} =
-    qq|<th><a class=listheading href=$href&sort=name>$name</a></th>|;
-  $column_header{netamount} =
-    qq|<th class=listheading>| . $locale->text('Amount') . qq|</th>|;
-  $column_header{tax} =
-    qq|<th class=listheading>| . $locale->text('Tax') . qq|</th>|;
-  $column_header{amount} =
-    qq|<th class=listheading>| . $locale->text('Total') . qq|</th>|;
-  $column_header{curr} =
-    qq|<th class=listheading>| . $locale->text('Curr') . qq|</th>|;
-  $column_header{shipvia} =
-      qq|<th><a class=listheading href=$href&sort=shipvia>|
-    . $locale->text('Ship via')
-    . qq|</a></th>|;
-  $column_header{globalprojectnumber} =
-    qq|<th class="listheading">| . $locale->text('Project Number') . qq|</th>|;
-  $column_header{open} =
-    qq|<th class=listheading>| . $locale->text('O') . qq|</th>|;
-  $column_header{closed} =
-    qq|<th class=listheading>| . $locale->text('C') . qq|</th>|;
-  $column_header{"delivered"} =
-    qq|<th class="listheading">| . $locale->text("Delivered") . qq|</th>|;
-
-  $column_header{employee} =
-    qq|<th><a class=listheading href=$href&sort=employee>$employee</a></th>|;
-  $column_header{transaction_description} =
-    qq|<th><a class=listheading href="$href&sort=transaction_description">|
-    . $locale->text("Transaction description") . qq|</a></th>|;
-
-  $column_header{ids} = qq|<th></th>|;
-
-  if ($form->{ $form->{vc} }) {
-    $option = $locale->text(ucfirst $form->{vc});
-    $option .= " : $form->{$form->{vc}}";
+  }
+
+  my $report = SL::ReportGenerator->new(\%myconfig, $form);
+
+  my @hidden_variables = map { "l_${_}" } @columns;
+  push @hidden_variables, "l_subtotal", $form->{vc}, qw(l_closed l_notdelivered open closed delivered notdelivered ordnumber quonumber
+                                                        transaction_description transdatefrom transdateto type vc);
+
+  my $href = build_std_url('action=orders', grep { $form->{$_} } @hidden_variables);
+
+  my %column_defs = (
+    'ids'                     => { 'text' => '', },
+    'transdate'               => { 'text' => $locale->text('Date'), },
+    'reqdate'                 => { 'text' => $locale->text('Required by'), },
+    'id'                      => { 'text' => $locale->text('ID'), },
+    'ordnumber'               => { 'text' => $locale->text('Order'), },
+    'quonumber'               => { 'text' => $form->{type} eq "request_quotation" ? $locale->text('RFQ') : $locale->text('Quotation'), },
+    'name'                    => { 'text' => $form->{vc} eq 'customer' ? $locale->text('Customer') : $locale->text('Vendor'), },
+    'netamount'               => { 'text' => $locale->text('Amount'), },
+    'tax'                     => { 'text' => $locale->text('Tax'), },
+    'amount'                  => { 'text' => $locale->text('Total'), },
+    'curr'                    => { 'text' => $locale->text('Curr'), },
+    'employee'                => { 'text' => $locale->text('Salesperson'), },
+    'shipvia'                 => { 'text' => $locale->text('Ship via'), },
+    'globalprojectnumber'     => { 'text' => $locale->text('Project Number'), },
+    'transaction_description' => { 'text' => $locale->text('Transaction description'), },
+    'open'                    => { 'text' => $locale->text('Open'), },
+    'delivered'               => { 'text' => $locale->text('Delivered'), },
+  );
+
+  foreach my $name (qw(id transdate reqdate quonumber ordnumber name employee shipvia)) {
+    $column_defs{$name}->{link} = $href . "&sort=$name";
+  }
+
+  my %column_alignment = map { $_ => 'right' } qw(netamount tax amount curr);
+
+  $form->{"l_type"} = "Y";
+  map { $column_defs{$_}->{visible} = $form->{"l_${_}"} ? 1 : 0 } @columns;
+  $column_defs{ids}->{visible} = $allow_multiple_orders ? 'HTML' : 0;
+
+  $report->set_columns(%column_defs);
+  $report->set_column_order(@columns);
+
+  $report->set_export_options('orders', @hidden_variables);
+
+  my @options;
+  if ($form->{customer}) {
+    push @options, $locale->text('Customer') . " : $form->{customer}";
+  }
+  if ($form->{vendor}) {
+    push @options, $locale->text('Vendor') . " : $form->{vendor}";
   }
   if ($form->{department}) {
-    $option .= "\n<br>" if ($option);
     ($department) = split /--/, $form->{department};
-    $option .= $locale->text('Department') . " : $department";
+    push @options, $locale->text('Department') . " : $department";
+  }
+  if ($form->{ordnumber}) {
+    push @options, $locale->text('Order Number') . " : $form->{ordnumber}";
+  }
+  if ($form->{notes}) {
+    push @options, $locale->text('Notes') . " : $form->{notes}";
+  }
+  if ($form->{transaction_description}) {
+    push @options, $locale->text('Transaction description') . " : $form->{transaction_description}";
   }
   if ($form->{transdatefrom}) {
-    $option .= "\n<br>"
-      . $locale->text('From') . " "
-      . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
+    push @options, $locale->text('From') . "&nbsp;" . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
   }
   if ($form->{transdateto}) {
-    $option .= "\n<br>"
-      . $locale->text('Bis') . " "
-      . $locale->date(\%myconfig, $form->{transdateto}, 1);
+    push @options, $locale->text('Bis') . "&nbsp;" . $locale->date(\%myconfig, $form->{transdateto}, 1);
   }
   if ($form->{open}) {
-    $option .= "\n<br>" if ($option);
-    $option .= $locale->text('Open');
+    push @options, $locale->text('Open');
   }
   if ($form->{closed}) {
-    $option .= "\n<br>" if ($option);
-    $option .= $locale->text('Closed');
+    push @options, $locale->text('Closed');
   }
-
-  $form->header;
-
-  print qq|
-<body>
-
-<form method="post" action="oe.pl">
-<table width=100%>
-  <tr>
-    <th class=listtop>$form->{title}</th>
-  </tr>
-  <tr height="5"></tr>
-  <tr>
-    <td>$option</td>
-  </tr>
-  <tr>
-    <td>
-      <table width=100%>
-       <tr class=listheading>|;
-
-  map { print "\n$column_header{$_}" } @column_index;
-
-  print qq|
-       </tr>
-|;
-
-  # add sort and escape callback
-  $callback_escaped = $form->escape($callback . "&sort=$form->{sort}");
-
-  if (@{ $form->{OE} }) {
-    $sameitem = $form->{OE}->[0]->{ $form->{sort} };
+  if ($form->{delivered}) {
+    push @options, $locale->text('Delivered');
   }
-
-  $action = "edit";
-
-  foreach $oe (@{ $form->{OE} }) {
-    $form->{rowcount} = ++$j;
-
-    if ($form->{l_subtotal} eq 'Y') {
-      if ($sameitem ne $oe->{ $form->{sort} }) {
-        &subtotal;
-        $sameitem = $oe->{ $form->{sort} };
-      }
-    }
-
-    map { $oe->{$_} *= $oe->{exchangerate} } (qw(netamount amount));
-
-    $column_data{netamount} =
-        "<td align=right>"
-      . $form->format_amount(\%myconfig, $oe->{netamount}, 2, "&nbsp;")
-      . "</td>";
-    $column_data{tax} = "<td align=right>"
-      . $form->format_amount(\%myconfig, $oe->{amount} - $oe->{netamount},
-                             2, "&nbsp;")
-      . "</td>";
-    $column_data{amount} =
-      "<td align=right>"
-      . $form->format_amount(\%myconfig, $oe->{amount}, 2, "&nbsp;") . "</td>";
-
-    $totalnetamount += $oe->{netamount};
-    $totalamount    += $oe->{amount};
-
-    $subtotalnetamount += $oe->{netamount};
-    $subtotalamount    += $oe->{amount};
-
-    $column_data{ids} =
-      qq|<td><input name="multi_id_$j" class=checkbox type=checkbox><input type="hidden" name="trans_id_$j" value="$oe->{id}"></td>|;
-    $column_data{id}        = "<td>$oe->{id}</td>";
-    $column_data{transdate} = "<td>$oe->{transdate}&nbsp;</td>";
-    $column_data{reqdate}   = "<td>$oe->{reqdate}&nbsp;</td>";
-
-    $column_data{$ordnumber} =
-      "<td><a href=oe.pl?action=$action&type=$form->{type}&id=$oe->{id}&vc=$form->{vc}&login=$form->{login}&password=$form->{password}&callback=$callback_escaped>$oe->{$ordnumber}</a></td>";
-    $column_data{name} = "<td>$oe->{name}</td>";
-
-    $column_data{employee} = "<td>$oe->{employee}&nbsp;</td>";
-    $column_data{shipvia}  = "<td>$oe->{shipvia}&nbsp;</td>";
-    $column_data{globalprojectnumber}  = "<td>" . H($oe->{globalprojectnumber}) . "</td>";
-
-    if ($oe->{closed}) {
-      $column_data{closed} = "<td align=center>X</td>";
-      $column_data{open}   = "<td>&nbsp;</td>";
-    } else {
-      $column_data{closed} = "<td>&nbsp;</td>";
-      $column_data{open}   = "<td align=center>X</td>";
-    }
-    $column_data{"delivered"} = "<td>" .
-      ($oe->{"delivered"} ? $locale->text("Yes") : $locale->text("No")) .
-      "</td>";
-    $column_data{transaction_description} = "<td>" . H($oe->{transaction_description}) . "</td>";
-
-    $i++;
-    $i %= 2;
-    print "
-        <tr class=listrow$i>";
-
-    map { print "\n$column_data{$_}" } @column_index;
-
-    print qq|
-       </tr>
-|;
-
+  if ($form->{notdelivered}) {
+    push @options, $locale->text('Not delivered');
   }
 
-  if ($form->{l_subtotal} eq 'Y') {
-    &subtotal;
-  }
+  $report->set_options('top_info_text'        => join("\n", @options),
+                       'raw_top_info_text'    => $form->parse_html_template('oe/orders_top'),
+                       'raw_bottom_info_text' => $form->parse_html_template('oe/orders_bottom', { 'SHOW_CONTINUE_BUTTON' => $allow_multiple_orders }),
+                       'output_format'        => 'HTML',
+                       'title'                => $form->{title},
+                       'attachment_basename'  => $attachment_basename . strftime('_%Y%m%d', localtime time),
+    );
+  $report->set_options_from_form();
 
-  # print totals
-  print qq|
-        <tr class=listtotal>|;
+  # add sort and escape callback, this one we use for the add sub
+  $form->{callback} = $href .= "&sort=$form->{sort}";
 
-  map { $column_data{$_} = "<td>&nbsp;</td>" } @column_index;
+  # escape callback for href
+  $callback = $form->escape($href);
 
-  $column_data{netamount} =
-    "<th class=listtotal align=right>"
-    . $form->format_amount(\%myconfig, $totalnetamount, 2, "&nbsp;") . "</th>";
-  $column_data{tax} = "<th class=listtotal align=right>"
-    . $form->format_amount(\%myconfig, $totalamount - $totalnetamount,
-                           2, "&nbsp;")
-    . "</th>";
-  $column_data{amount} =
-    "<th class=listtotal align=right>"
-    . $form->format_amount(\%myconfig, $totalamount, 2, "&nbsp;") . "</th>";
+  my @subtotal_columns = qw(netamount amount);
 
-  map { print "\n$column_data{$_}" } @column_index;
+  my %totals    = map { $_ => 0 } @subtotal_columns;
+  my %subtotals = map { $_ => 0 } @subtotal_columns;
 
-  print qq|
-        </tr>
-      </td>
-    </table>
-  </tr>
-  <tr>
-    <td><hr size=3 noshade></td>
-  </tr>
-</table>|;
-
-  # multiple invoice edit button only if gotten there via sales_order form.
+  my $idx = 0;
 
-  if ($form->{type} =~ /sales_order/) {
-    print qq|
-  <input class"submit" type="submit" name="action" value="|
-      . $locale->text('Continue') . qq|">
-  <input type="hidden" name="nextsub" value="edit">
-  <input type="hidden" name="type" value="$form->{type}">
-  <input type="hidden" name="vc" value="$form->{vc}">
-  <input type="hidden" name="login" value="$form->{login}">
-  <input type="hidden" name="password" value="$form->{password}">
-  <input type="hidden" name="callback" value="$callback">
-  <input type="hidden" name="rowcount" value="$form->{rowcount}">|;
-  }
-
-  print qq|
-</form>
+  my $edit_url = build_std_url('action=edit', 'type', 'vc');
 
-<br>
-<form method=post action=$form->{script}>
+  foreach $oe (@{ $form->{OE} }) {
+    map { $oe->{$_} *= $oe->{exchangerate} } @subtotal_columns;
 
-<input name=callback type=hidden value="$form->{callback}">
+    $oe->{tax}       = $oe->{amount} - $oe->{netamount};
+    $oe->{open}      = $oe->{closed}    ? $locale->text('No')  : $locale->text('Yes');
+    $oe->{delivered} = $oe->{delivered} ? $locale->text('Yes') : $locale->text('No');
 
-<input type=hidden name=type value=$form->{type}>
-<input type=hidden name=vc value=$form->{vc}>
+    map { $subtotals{$_} += $oe->{$_};
+          $totals{$_}    += $oe->{$_} } @subtotal_columns;
 
-<input type=hidden name=login value=$form->{login}>
-<input type=hidden name=password value=$form->{password}>
+    map { $oe->{$_} = $form->format_amount(\%myconfig, $oe->{$_}, 2) } qw(netamount tax amount);
 
-</form>
+    my $row = { };
 
-</body>
-</html>
-|;
+    foreach my $column (@columns) {
+      next if ($column eq 'ids');
+      $row->{$column} = {
+        'data'  => $oe->{$column},
+        'align' => $column_alignment{$column},
+      };
+    }
 
-  $lxdebug->leave_sub();
-}
+    $row->{ids} = {
+      'raw_data' =>   $cgi->hidden('-name' => "trans_id_${idx}", '-value' => $oe->{id})
+                    . $cgi->checkbox('-name' => "multi_id_${idx}", '-value' => 1, '-label' => ''),
+      'valign'   => 'center',
+      'align'    => 'center',
+    };
 
-sub subtotal {
-  $lxdebug->enter_sub();
+    $row->{$ordnumber}->{link} = $edit_url . "&id=" . E($oe->{id}) . "&callback=${callback}";
 
-  map { $column_data{$_} = "<td>&nbsp;</td>" } @column_index;
+    my $row_set = [ $row ];
 
-  $column_data{netamount} =
-      "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotalnetamount, 2, "&nbsp;")
-    . "</th>";
-  $column_data{tax} = "<td class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotalamount - $subtotalnetamount,
-                           2, "&nbsp;")
-    . "</th>";
-  $column_data{amount} =
-    "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotalamount, 2, "&nbsp;") . "</th>";
+    if (($form->{l_subtotal} eq 'Y')
+        && (($idx == (scalar @{ $form->{OE} } - 1))
+            || ($oe->{ $form->{sort} } ne $form->{OE}->[$idx + 1]->{ $form->{sort} }))) {
+      push @{ $row_set }, create_subtotal_row(\%subtotals, \@columns, \%column_alignment, \@subtotal_columns, 'listsubtotal');
+    }
 
-  $subtotalnetamount = 0;
-  $subtotalamount    = 0;
+    $report->add_data($row_set);
 
-  print "
-        <tr class=listsubtotal>
-";
+    $idx++;
+  }
 
-  map { print "\n$column_data{$_}" } @column_index;
+  $report->add_separator();
+  $report->add_data(create_subtotal_row(\%totals, \@columns, \%column_alignment, \@subtotal_columns, 'listtotal'));
 
-  print qq|
-        </tr>
-|;
+  $report->generate_with_headers();
 
   $lxdebug->leave_sub();
 }
index a30d72a..a3d249f 100644 (file)
@@ -211,7 +211,6 @@ aktualisieren wollen?',
   'Business Volume'             => 'Geschäftsvolumen',
   'Business deleted!'           => 'Firma gelöscht.',
   'Business saved!'             => 'Firma gespeichert.',
-  'C'                           => 'G',
   'CANCELED'                    => 'Storniert',
   'CSV export -- options'       => 'CSV-Export -- Optionen',
   'Calculate'                   => 'Berechnen',
@@ -727,6 +726,7 @@ aktualisieren wollen?',
   'New Buchungsgruppe <TMPL_VAR __counter__>' => 'Neue Buchungsgruppe <TMPL_VAR __counter__>',
   'New Templates'               => 'neue Vorlagen',
   'New contact'                 => 'Neuer Ansprechpartner',
+  'New sales order'             => 'Neuer Auftrag',
   'New unit'                    => 'Neue Einheit',
   'Next Dunning Level'          => 'Nächste Mahnstufe',
   'No'                          => 'Nein',
@@ -766,7 +766,6 @@ aktualisieren wollen?',
   'Number missing in Row'       => 'Nummer fehlt in Zeile',
   'Number of copies'            => 'Anzahl Kopien',
   'Number pages'                => 'Seiten nummerieren',
-  'O'                           => 'O',
   'OBE-Export erfolgreich!'     => 'OBE-Export erfolgreich!',
   'Obsolete'                    => 'Ungültig',
   'Oct'                         => 'Okt',
@@ -1316,12 +1315,16 @@ aktualisieren wollen?',
   'print'                       => 'drucken',
   'proforma'                    => 'Proforma',
   'purchase_order'              => 'Auftrag',
+  'purchase_order_list'         => 'lieferantenauftragsliste',
   'quarter'                     => 'Vierteljährliche (quartalsweise) Abgabe',
+  'quotation_list'              => 'angebotsliste',
   'report_generator_nextsub is not defined.' => 'report_generator_nextsub ist nicht definiert.',
   'request_quotation'           => 'Angebotsanforderung',
   'reset'                       => 'zurücksetzen',
+  'rfq_list'                    => 'anfragenliste',
   's'                           => 's',
   'sales_order'                 => 'Kundenauftrag',
+  'sales_order_list'            => 'auftragsliste',
   'sales_quotation'             => 'Verkaufsangebot',
   'saved'                       => 'gespeichert',
   'saved!'                      => 'gespeichert',
index 61128e3..349dee8 100644 (file)
@@ -24,8 +24,8 @@ $self->{texts} = {
   'Bin'                         => 'Lagerplatz',
   'Bin List'                    => 'Lagerliste',
   'Bis'                         => 'bis',
-  'C'                           => 'G',
   'CANCELED'                    => 'Storniert',
+  'CSV export -- options'       => 'CSV-Export -- Optionen',
   'Cannot delete order!'        => 'Auftrag kann nicht gelöscht werden!',
   'Cannot delete quotation!'    => 'Angebot kann nicht gelöscht werden!',
   'Cannot save order!'          => 'Auftrag kann nicht gespeichert werden!',
@@ -41,6 +41,9 @@ $self->{texts} = {
   'Contact'                     => 'Kontakt',
   'Contact Person'              => 'Ansprechpartner',
   'Continue'                    => 'Weiter',
+  'Could not spawn html2ps or GhostScript.' => 'html2ps oder GhostScript konnte nicht gestartet werden.',
+  'Could not write the html2ps config file.' => 'Die tempor&auml;re html2ps-Konfigurationsdatei konnte nicht geschrieben werden.',
+  'Could not write the temporary HTML file.' => 'Eine tempor&auml;re HTML-Datei konnte nicht geschrieben werden.',
   'Country'                     => 'Land',
   'Credit Limit'                => 'Kreditlimit',
   'Credit Limit exceeded!!!'    => 'Kreditlimit überschritten!',
@@ -136,7 +139,6 @@ $self->{texts} = {
   'November'                    => 'November',
   'Number'                      => 'Nummer',
   'Number missing in Row'       => 'Nummer fehlt in Zeile',
-  'O'                           => 'O',
   'Oct'                         => 'Okt',
   'October'                     => 'Oktober',
   'Open'                        => 'Offen',
@@ -150,6 +152,7 @@ $self->{texts} = {
   'PAYMENT POSTED'              => 'Rechung gebucht',
   'PDF'                         => 'PDF',
   'PDF (OpenDocument/OASIS)'    => 'PDF (OpenDocument/OASIS)',
+  'PDF export -- options'       => 'PDF-Export -- Optionen',
   'POSTED'                      => 'Gebucht',
   'POSTED AS NEW'               => 'Als neu gebucht',
   'PRINTED'                     => 'Gedruckt',
@@ -198,6 +201,7 @@ $self->{texts} = {
   'Sales Order'                 => 'Kundenauftrag',
   'Sales Orders'                => 'Aufträge',
   'Salesman'                    => 'Verkäufer/in',
+  'Salesperson'                 => 'Verkäufer',
   'Save'                        => 'Speichern',
   'Save and Close'              => 'Speichern und schließen',
   'Save as new'                 => 'als neu speichern',
@@ -265,8 +269,13 @@ $self->{texts} = {
   'pick_list'                   => 'Entnahmeliste',
   'proforma'                    => 'Proforma',
   'purchase_order'              => 'Auftrag',
+  'purchase_order_list'         => 'lieferantenauftragsliste',
+  'quotation_list'              => 'angebotsliste',
+  'report_generator_nextsub is not defined.' => 'report_generator_nextsub ist nicht definiert.',
   'request_quotation'           => 'Angebotsanforderung',
+  'rfq_list'                    => 'anfragenliste',
   'sales_order'                 => 'Kundenauftrag',
+  'sales_order_list'            => 'auftragsliste',
   'sales_quotation'             => 'Verkaufsangebot',
   'saved!'                      => 'gespeichert',
   'sent'                        => 'gesendet',
@@ -297,6 +306,7 @@ $self->{subs} = {
   'check_project'               => 'check_project',
   'continue'                    => 'continue',
   'create_backorder'            => 'create_backorder',
+  'create_subtotal_row'         => 'create_subtotal_row',
   'customer_details'            => 'customer_details',
   'delete'                      => 'delete',
   'delete_order_quotation'      => 'delete_order_quotation',
@@ -307,6 +317,8 @@ $self->{subs} = {
   'edit'                        => 'edit',
   'edit_e_mail'                 => 'edit_e_mail',
   'employee_selection_internal' => 'employee_selection_internal',
+  'export_as_csv'               => 'export_as_csv',
+  'export_as_pdf'               => 'export_as_pdf',
   'form_footer'                 => 'form_footer',
   'form_header'                 => 'form_header',
   'format_dates'                => 'format_dates',
@@ -335,6 +347,7 @@ $self->{subs} = {
   'quotation'                   => 'quotation',
   'reformat_numbers'            => 'reformat_numbers',
   'relink_accounts'             => 'relink_accounts',
+  'report_generator_do'         => 'report_generator_do',
   'request_for_quotation'       => 'request_for_quotation',
   'sales_invoice'               => 'sales_invoice',
   'sales_order'                 => 'sales_order',
@@ -358,7 +371,6 @@ $self->{subs} = {
   'ship_to'                     => 'ship_to',
   'show_history'                => 'show_history',
   'show_vc_details'             => 'show_vc_details',
-  'subtotal'                    => 'subtotal',
   'update'                      => 'update',
   'validate_items'              => 'validate_items',
   'vendor_details'              => 'vendor_details',
@@ -368,6 +380,8 @@ $self->{subs} = {
   'weiter'                      => 'continue',
   'löschen'                     => 'delete',
   'email'                       => 'e_mail',
+  'als_csv_exportieren'         => 'export_as_csv',
+  'als_pdf_exportieren'         => 'export_as_pdf',
   'rechnung'                    => 'invoice',
   'nein'                        => 'no',
   'auftrag'                     => 'order',
diff --git a/templates/webpages/oe/orders_bottom_de.html b/templates/webpages/oe/orders_bottom_de.html
new file mode 100644 (file)
index 0000000..17ec002
--- /dev/null
@@ -0,0 +1,12 @@
+<TMPL_IF SHOW_CONTINUE_BUTTON>
+ Neuer Auftrag<br>
+ <input class="submit" type="submit" name="action" value="Weiter">
+</TMPL_IF>
+ <input type="hidden" name="nextsub" value="edit">
+ <input type="hidden" name="type" value="<TMPL_VAR type ESCAPE=HTML>">
+ <input type="hidden" name="vc" value="<TMPL_VAR vc ESCAPE=HTML>">
+ <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
+ <input type="hidden" name="password" value="<TMPL_VAR password ESCAPE=HTML>">
+ <input type="hidden" name="callback" value="<TMPL_VAR callback ESCAPE=HTML>">
+ <input type="hidden" name="rowcount" value="<TMPL_VAR rowcount ESCAPE=HTML>">
+</form>
diff --git a/templates/webpages/oe/orders_bottom_master.html b/templates/webpages/oe/orders_bottom_master.html
new file mode 100644 (file)
index 0000000..d2eb9f8
--- /dev/null
@@ -0,0 +1,12 @@
+<TMPL_IF SHOW_CONTINUE_BUTTON>
+ <translate>New sales order</translate><br>
+ <input class="submit" type="submit" name="action" value="<translate>Continue</translate>">
+</TMPL_IF>
+ <input type="hidden" name="nextsub" value="edit">
+ <input type="hidden" name="type" value="<TMPL_VAR type ESCAPE=HTML>">
+ <input type="hidden" name="vc" value="<TMPL_VAR vc ESCAPE=HTML>">
+ <input type="hidden" name="login" value="<TMPL_VAR login ESCAPE=HTML>">
+ <input type="hidden" name="password" value="<TMPL_VAR password ESCAPE=HTML>">
+ <input type="hidden" name="callback" value="<TMPL_VAR callback ESCAPE=HTML>">
+ <input type="hidden" name="rowcount" value="<TMPL_VAR rowcount ESCAPE=HTML>">
+</form>
diff --git a/templates/webpages/oe/orders_top_de.html b/templates/webpages/oe/orders_top_de.html
new file mode 100644 (file)
index 0000000..f6bc1de
--- /dev/null
@@ -0,0 +1 @@
+<form method="post" action="oe.pl">
diff --git a/templates/webpages/oe/orders_top_master.html b/templates/webpages/oe/orders_top_master.html
new file mode 100644 (file)
index 0000000..f6bc1de
--- /dev/null
@@ -0,0 +1 @@
+<form method="post" action="oe.pl">