]> wagnertech.de Git - mfinanz.git/commitdiff
Merge branch 'master' of git@vc.linet-services.de:public/lx-office-erp
authorJan Büren <jan@lx-office-hosting.de>
Mon, 17 Oct 2011 11:43:17 +0000 (13:43 +0200)
committerJan Büren <jan@lx-office-hosting.de>
Mon, 17 Oct 2011 11:43:17 +0000 (13:43 +0200)
16 files changed:
SL/Form.pm
SL/InstallationCheck.pm
SL/Template/Plugin/L.pm
bin/mozilla/menu.pl
bin/mozilla/menuv3.pl
bin/mozilla/menuv4.pl
bin/mozilla/oe.pl
locale/de/all
sql/Pg-upgrade2/customer_add_constraints.sql
sql/Pg-upgrade2/vendor_add_constraints.sql
templates/webpages/amcvar/render_inputs_block.html
templates/webpages/bp/search.html
templates/webpages/generic/multibox.html
templates/webpages/oe/form_footer.html
templates/webpages/oe/form_header.html
templates/webpages/oe/sales_order.html

index c7539354cf1f68e6b5931270cc603d972c4b0e56..f50cba70d381e183166c9cdeb2c9cf928cec8143 100644 (file)
@@ -674,7 +674,7 @@ sub header {
 
   # extra code is currently only used by menuv3 and menuv4 to set their css.
   # it is strongly deprecated, and will be changed in a future version.
-  my ($self, $extra_code) = @_;
+  my ($self, %params) = @_;
   my $db_charset = $::lx_office_conf{system}->{dbcharset} || Common::DEFAULT_CHARSET;
   my @header;
 
@@ -722,10 +722,15 @@ sub header {
     </script>|;
   }
 
+  my  %doctypes = (
+    strict       => qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">|,
+    transitional => qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">|,
+    frameset     => qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">|,
+  );
+
   # output
   print $self->create_http_response(content_type => 'text/html', charset => $db_charset);
-  print "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>\n"
-    if  $ENV{'HTTP_USER_AGENT'} =~ m/MSIE\s+\d/; # Other browsers may choke on menu scripts with DOCTYPE.
+  print $doctypes{$params{doctype} || 'transitional'}, $/;
   print <<EOT;
 <html>
  <head>
@@ -734,9 +739,9 @@ sub header {
 EOT
   print "  $_\n" for @header;
   print <<EOT;
-  <link rel="stylesheet" href="css/jquery.autocomplete.css" type="text/css" />
-  <meta name="robots" content="noindex,nofollow" />
-  <link rel="stylesheet" type="text/css" href="css/tabcontent.css" />
+  <link rel="stylesheet" href="css/jquery.autocomplete.css" type="text/css">
+  <meta name="robots" content="noindex,nofollow">
+  <link rel="stylesheet" type="text/css" href="css/tabcontent.css">
   <script type="text/javascript" src="js/tabcontent.js">
 
   /***********************************************
@@ -746,7 +751,7 @@ EOT
    ***********************************************/
 
   </script>
-  $extra_code
+  $params{extra_code}
   $title_hack
  </head>
 
index 84477884027a71da00f06ea450683bbecb44d485..6311d2b0c70415e41c3e94f69ee4097490996973 100644 (file)
@@ -19,6 +19,7 @@ BEGIN {
   { name => "DBD::Pg",         version => '1.49',  url => "http://search.cpan.org/~dbdpg/",     debian => 'libdbd-pg' },
   { name => "Email::Address",                      url => "http://search.cpan.org/~rjbs/",      debian => 'libemail-address-perl' },
   { name => "FCGI",                                url => "http://search.cpan.org/~mstrout/",   debian => 'libfcgi-perl' },
+  { name => "JSON",                                url => "http://search.cpan.org/~makamaka",   debian => 'libjson-perl' },
   { name => "List::MoreUtils", version => '0.21',  url => "http://search.cpan.org/~vparseval/", debian => 'liblist-moreutils-perl' },
   { name => "Params::Validate",                    url => "http://search.cpan.org/~drolsky/",   debian => 'libparams-validate-perl' },
   { name => "PDF::API2",       version => '2.000', url => "http://search.cpan.org/~areibens/",  debian => 'libpdf-api2-perl' },
index bf0d5414eea57f8c8b769850ef0e6eebedfd5724..34a20f3f624caed9e726a72763f388574b1439cc 100644 (file)
@@ -74,7 +74,7 @@ sub html_tag {
   my ($self, $tag, $content, @slurp) = @_;
   my $attributes = $self->attributes(@slurp);
 
-  return "<${tag}${attributes}/>" unless defined($content);
+  return "<${tag}${attributes}>" unless defined($content);
   return "<${tag}${attributes}>${content}</${tag}>";
 }
 
@@ -95,6 +95,8 @@ sub textarea_tag {
   my %attributes      = _hashify(@slurp);
 
   $attributes{id}   ||= $self->name_to_id($name);
+  $attributes{rows}  *= 1; # required by standard
+  $attributes{cols}  *= 1; # required by standard
   $content            = $content ? _H($content) : '';
 
   return $self->html_tag('textarea', $content, %attributes, name => $name);
@@ -194,7 +196,10 @@ sub button_tag {
   my ($self, $onclick, $value, @slurp) = @_;
   my %attributes = _hashify(@slurp);
 
-  return $self->input_tag(undef, $value, %attributes, type => 'button', onclick => $onclick);
+  $attributes{id}   ||= $self->name_to_id($attributes{name}) if $attributes{name};
+  $attributes{type} ||= 'button';
+
+  return $self->html_tag('input', undef, %attributes, value => $value, onclick => $onclick);
 }
 
 sub options_for_select {
@@ -272,8 +277,7 @@ sub date_tag {
     s/y+/\%Y/gi;
   } $::myconfig{"dateformat"};
 
-  $params{cal_align} ||= 'BR';
-
+  my $cal_align =  delete $params{cal_align} || 'BR';
   my $str_value = blessed $value ? $value->to_lxoffice : $value;
 
   $self->input_tag($name, $str_value,
@@ -285,12 +289,13 @@ sub date_tag {
   ) . ((!$params{no_cal}) ?
   $self->html_tag('img', undef,
     src    => 'image/calendar.png',
+    alt    => $::locale->text('Calendar'),
     id     => "trigger$seq",
     title  => _H($::myconfig{dateformat}),
     %params,
   ) .
   $self->javascript(
-    "Calendar.setup({ inputField: '$name_e', ifFormat: '$datefmt', align: '$params{cal_align}', button: 'trigger$seq' });"
+    "Calendar.setup({ inputField: '$name_e', ifFormat: '$datefmt', align: '$cal_align', button: 'trigger$seq' });"
   ) : '');
 }
 
index 15c43efe53867ea290d704e12ef6e469d42f1c31..791095739f713eb8645156ad54d05021dd5069f2 100644 (file)
@@ -59,7 +59,7 @@ sub display {
   $callback     = "login.pl?action=company_logo"      if $callback =~ /^(\.\/)?$/;
   my $framesize = _calc_framesize();
 
-  $::form->header;
+  $::form->header(doctype => 'frameset');
 
   print qq|
 <frameset rows="28px,*" cols="*" framespacing="0" frameborder="0">
index d444b759efb55dc720987e75ec091e6650c2d3a0..121d76df073a4d4489694d9bfa3851f3dc8e06da 100644 (file)
@@ -44,7 +44,7 @@ use strict;
 sub display {
   my $form     = $main::form;
 
-  $form->header(qq|<link rel="stylesheet" href="css/menuv3.css?id=" type="text/css">|);
+  $form->header(extra_code => qq|<link rel="stylesheet" href="css/menuv3.css?id=" type="text/css">|);
 
   $form->{date}     = clock_line();
   $form->{menu}     = acc_menu();
index ae82d45f817f0e25f2d26e403431803d7b6af367..e9e7ac499995ce14202071e1042a14ec7278385a 100644 (file)
@@ -44,7 +44,7 @@ use strict;
 sub display {
   my $form     = $main::form;
 
-  $form->header(qq|<link rel="stylesheet" href="css/menuv4.css?id=" type="text/css">|);
+  $form->header(extra_code => qq|<link rel="stylesheet" href="css/menuv4.css?id=" type="text/css">|);
 
   $form->{date}     = clock_line();
   $form->{menu}     = acc_menu();
index 90efb0e64c74e190ea03817035340326d6bbaa5d..24540eed8d9448212184e8da0960ffaea21efeaf 100644 (file)
@@ -461,8 +461,8 @@ sub form_footer {
   my $introws = max 2, $form->numtextrows($form->{intnotes}, 35, 8);
   $rows    = max $rows, $introws;
 
-  $TMPL_VAR{notes}    = qq|<textarea name=notes rows=$rows cols=25 wrap=soft>| . H($form->{notes}) . qq|</textarea>|;
-  $TMPL_VAR{intnotes} = qq|<textarea name=intnotes rows=$introws cols=35 wrap=soft>| . H($form->{intnotes}) . qq|</textarea>|;
+  $TMPL_VAR{notes}    = qq|<textarea name=notes rows="$rows" cols="25">| . H($form->{notes}) . qq|</textarea>|;
+  $TMPL_VAR{intnotes} = qq|<textarea name=intnotes rows="$introws" cols="35">| . H($form->{intnotes}) . qq|</textarea>|;
 
   if (!$form->{taxincluded}) {
 
index 5bd9658ae2944fac5c6f30ebd4ab581e7322f111..dde662e343d44f66ad0473b4a935158109a59412 100644 (file)
@@ -331,6 +331,7 @@ $self->{texts} = {
   'CSV import: parts and services' => 'CSV-Import: Waren und Dienstleistungen',
   'CSV import: shipping addresses' => 'CSV-Import: Lieferadressen',
   'Calculate'                   => 'Berechnen',
+  'Calendar'                    => 'Kalender',
   'Can not create that quantity with current stock' => 'Diese Anzahl kann mit dem gegenwärtigen Lagerbestand nicht hergestellt werden.',
   'Cancel'                      => 'Abbrechen',
   'Cancel Accounts Payables Transaction' => 'Kreditorenbuchung stornieren',
@@ -418,7 +419,6 @@ $self->{texts} = {
   'Copies'                      => 'Kopien',
   'Correct taxkey'              => 'Richtiger Steuerschlüssel',
   'Corrections'                 => 'Korrekturen',
-  'Cost Center'                 => 'Kostenstelle',
   'Costs'                       => 'Kosten',
   'Could not copy %s to %s. Reason: %s' => 'Die Datei &quot;%s&quot; konnte nicht nach &quot;%s&quot; kopiert werden. Grund: %s',
   'Could not open the file users/members.' => 'Die Datei &quot;users/members&quot; konnte nicht ge&ouml;ffnet werden.',
@@ -1397,7 +1397,6 @@ $self->{texts} = {
   'Problem'                     => 'Problem',
   'Produce Assembly'            => 'Erzeugnis fertigen',
   'Productivity'                => 'Produktivität',
-  'Profit Center'               => 'Erfolgsbereich',
   'Profit determination'        => 'Gewinnermittlung',
   'Proforma Invoice'            => 'Proformarechnung',
   'Program'                     => 'Programm',
@@ -2130,7 +2129,6 @@ $self->{texts} = {
   'as at'                       => 'zum Stand',
   'assembly_list'               => 'erzeugnisliste',
   'back'                        => 'zurück',
-  'balance'                     => 'Betriebsvermögensvergleich/Bilanzierung',
   'bank_collection_payment_list_#1' => 'bankeinzugszahlungsliste_#1',
   'bank_transfer_payment_list_#1' => 'ueberweisungszahlungsliste_#1',
   'bankaccounts'                => 'Bankkonten',
@@ -2180,7 +2178,6 @@ $self->{texts} = {
   'history'                     => 'Historie',
   'history search engine'       => 'Historien Suchmaschine',
   'inactive'                    => 'inaktiv',
-  'income'                      => 'Einnahmen-Überschuss-Rechnung',
   'invoice'                     => 'Rechnung',
   'invoice_list'                => 'debitorenbuchungsliste',
   'lead deleted!'               => 'Kundenquelle gelöscht',
@@ -2212,8 +2209,6 @@ $self->{texts} = {
   'our vendor number at customer' => 'Unsere Lieferanten-Nr. beim Kunden',
   'part_list'                   => 'Warenliste',
   'percental'                   => 'prozentual',
-  'periodic'                    => 'Aufwandsmethode',
-  'perpetual'                   => 'Bestandsmethode',
   'pick_list'                   => 'Sammelliste',
   'plural first char'           => 'P',
   'pos_bilanz'                  => 'Bilanz',
index 89ca9d62854f06cf285ab3f702320494aaa281f6..65d3386454bd12ec5de385cfb782a307d5d6487b 100644 (file)
@@ -4,8 +4,10 @@
 -- @charset: utf-8
 -- @ignore: 0
 
--- verwaiste Zahlungsbedingungen vorher entfernen:
-update customer set payment_id = NULL where payment_id not in (select id from payment_terms);
+-- verwaiste Einträge vorher entfernen
+UPDATE customer SET payment_id  = NULL WHERE payment_id  NOT IN (SELECT id FROM payment_terms);
+UPDATE customer SET language_id = NULL WHERE language_id NOT IN (SELECT id FROM language);
+UPDATE customer SET business_id = NULL WHERE business_id NOT IN (SELECT id FROM business);
 
 ALTER TABLE customer ADD FOREIGN KEY (payment_id) REFERENCES payment_terms (id);
 ALTER TABLE customer ADD FOREIGN KEY (language_id) REFERENCES language (id);
index 3d3a81657cfbed6856af7de159847f85ae9f5359..4439377b3f82c2c1175189b20b8d5c03934ccc86 100644 (file)
@@ -4,9 +4,10 @@
 -- @charset: utf-8
 -- @ignore: 0
 
--- verwaiste Zahlungsbedingungen vorher entfernen
-update vendor set payment_id = NULL where payment_id not in (select id from payment_terms);
-
+-- verwaiste Einträge vorher entfernen
+UPDATE vendor SET payment_id  = NULL WHERE payment_id  NOT IN (SELECT id FROM payment_terms);
+UPDATE vendor SET language_id = NULL WHERE language_id NOT IN (SELECT id FROM language);
+UPDATE vendor SET business_id = NULL WHERE business_id NOT IN (SELECT id FROM business);
 
 ALTER TABLE vendor ADD FOREIGN KEY (payment_id) REFERENCES payment_terms (id);
 ALTER TABLE vendor ADD FOREIGN KEY (language_id) REFERENCES language (id);
index 329b94cd8810e6f7808fb1bbaeee0f8a4cbdca7f..3f7461cc8972f2bd92693656aa01c860dbba8943 100644 (file)
@@ -15,7 +15,7 @@
 [%- ELSIF cvar.var.type == 'bool' %]
 <input type="checkbox" name="[% PROCESS cvar_name %]" value="1"[% IF cvar.value %] checked[% END %]>
 [%- ELSIF cvar.var.type == 'textfield' %]
-<textarea name="[% PROCESS cvar_name %]" cols="[% HTML.escape(cvar.var.width) %]" rows="[% HTML.escape(cvar.var.height) %]">[% HTML.escape(cvar.value) %]</textarea>
+[% L.textarea_tag(render_input_blocks__cvar_name, cvar.value, cols=cvar.var.width, rows=cvar.var.height) %]
 [%- ELSIF cvar.var.type == 'date' %]
 [%- L.date_tag(render_input_blocks__cvar_name, cvar.value) %]
 
index d6f01afa1875d9422b7019c0055417927ee1d530..d8f68002ff796abb57d889e3bb93f0c1b7fc443e 100644 (file)
@@ -53,7 +53,7 @@
 [%- END %]
 [%- IF label.$type.chknumber %]
   <tr>
-    <th align=right nowrap>[% 'Reference Number' | $T8 %]</th>
+    <th align=right nowrap>[% 'Reference' | $T8 %]</th>
     <td colspan=3>[% L.input_tag('chknumber', '', size=20) %]</td>
   </tr>
 [%- END %]
index 3c24f05975079694ca1fdcfb60c41ae793912769..46a5dd49ec5a394be9eff77e6214461a196c6509 100644 (file)
@@ -29,7 +29,7 @@
 [%-
   Multibox__limit      = limit   != '' ? limit   : vclimit != '' ? vclimit : 200
   Multibox__show_text  = allow_textbox and DATA.size and Multibox__limit < DATA.size ? 1 : 0
-  Multibox__id         = id      != '' ? id      : name
+  Multibox__id         = id      != '' && id * 1 != id ? id      : name
   Multibox__default    = default != '' ? default : $name
   Multibox__name       = (select_name != '' and ! Multibox__show_text) ? select_name : name
 -%]
index b0ba7fe67f3b9da809fee8729edd52646fcc240e..cb449faa1c61107980f69010de8b7d731400c04c 100644 (file)
 
             <tr>
               <th  align="left">[% 'Ertrag' | $T8 %]</th>
-              <td align="right">[% LxERP.format_amount(marge_total, 2) %]</td>
+              <td align="right">
+                [% LxERP.format_amount(marge_total, 2) %]
+                <input type="hidden" name="marge_total" value="[% HTML.escape(marge_total) %]">
+              </td>
             </tr>
             <tr>
               <th  align="left">[% 'Ertrag prozentual' | $T8 %]</th>
-              <td align="right">[% LxERP.format_amount(marge_percent, 2) %]</td>
+              <td align="right">
+                [% LxERP.format_amount(marge_percent, 2) %]
+                <input type="hidden" name="marge_percent" value="[% HTML.escape(marge_percent) %]">
+              </td>
               <td>%</td>
             </tr>
-
-            <input type="hidden" name="marge_total" value="[% HTML.escape(marge_total) %]">
-            <input type="hidden" name="marge_percent" value="[% HTML.escape(marge_percent) %]">
             </table>
           </td>
 [%- END %]
               [% tax %]
               <tr>
                 <th align="right">[% 'Total' | $T8 %]</th>
-                <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+                <td align="right">[% LxERP.format_amount(invtotal, 2) %]
+                  <input type="hidden" name="oldinvtotal" value="[% HTML.escape(oldinvtotal) %]">
+                  <input type="hidden" name="oldtotalpaid" value="[% HTML.escape(totalpaid) %]">
+                </td>
               </tr>
             </table>
           </td>
@@ -88,8 +94,6 @@
       </table>
     </td>
   </tr>
-  <input type="hidden" name="oldinvtotal" value="[% HTML.escape(oldinvtotal) %]">
-  <input type="hidden" name="oldtotalpaid" value="[% HTML.escape(totalpaid) %]">
   <tr>
     <td><hr size="3" noshade></td>
   </tr>
 <input type="hidden" name="action" value="dispatcher">
 <input type="hidden" name="saved_xyznumber" value="[% HTML.escape(saved_xyznumber) %]">
 <input type="hidden" name="rowcount" value="[% HTML.escape(rowcount) %]">
-<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="callback" value="[% callback | html %]">
 [% IF vc == 'customer' %]
   <input type="hidden" name="customer_discount" value="[% HTML.escape(customer_discount) %]">
 [% ELSE %]
 
 </form>
 
+
+    <script type="text/javascript">
+     <!--
+       Calendar.setup({ inputField : "transdate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+       Calendar.setup({ inputField : "reqdate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+
+       $('document').ready(function(){
+         setupDateFormat('[% dateformat %]', '[% 'Falsches Datumsformat!' | $T8 %]');
+         setupPoints('[% numberformat %]', '[% 'wrongformat' | $T8 %]');
+       });
+     //-->
+    </script>
 </body>
 </html>
index 20c25ce8914b7dfdaa33429b93e8a90e710f065d..5ec0db5ca8990c5011f8c6a33d06a0f28c613d2e 100644 (file)
     <input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
     <input type="hidden" name="follow_up_rowcount" value="1">
 
-    <div class="listtop">[% title %]</div>
+    <h1>[% title %]</h1>
 
 [%- INCLUDE 'common/flash.html' %]
 
     <table width="100%">
-      <tr height="5"></tr>
       <tr>
         <td>
           <table width="100%">
                     </td>
                   </tr>
 [%- END %]
-                  <tr>
 [%- IF currencies %]
                   <tr>
                     <th align="right">[% 'Currency' | $T8 %]</th>
           </table>
         </td>
       </tr>
-
-    <script type="text/javascript">
-     <!--
-       Calendar.setup({ inputField : "transdate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
-       Calendar.setup({ inputField : "reqdate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
-
-       $('document').ready(function(){
-         setupDateFormat('[% dateformat %]', '[% 'Falsches Datumsformat!' | $T8 %]');
-         setupPoints('[% numberformat %]', '[% 'wrongformat' | $T8 %]');
-       });
-     //-->
-    </script>
index 884e4e0c78ba25dac2caa281d6acec97a80d0206..c16dc11186336e69d12a717aa32c97faed4c021d 100644 (file)
@@ -5,7 +5,7 @@
  <td>
   <input type="button" id="cb_show_details" name="show_details" value='[% 'Show details' | $T8 %]'>
   <script type="text/javascript">
-   $('#cb_show_details').click(function(){ $('[id$="row2"]').toggle() });
+   $('#cb_show_details').click(function(){ $('[id^="row2"]').toggle() });
   </script>
   <table id='display_row' width="100%">
    <tr class="listheading">
 [%- FOREACH row = ROWS %]
      <tr valign="top" class="[% IF row.error %]error_message[% ELSE %]listrow[% loop.count % 2 %][% END %]">
  [%- FOREACH row1 = row.ROW1 %]
-      <td align="[% row1.align %]"[% IF row1.nowrap %] nowrap[% END %]>[% row1.value %]</td>
+      <td[% IF row1.align %] align="[% row1.align %]"[% END %][% IF row1.nowrap %] nowrap[% END %]>[% row1.value %]</td>
  [%- END %]
      </tr>
+     <tr style='display:none'>
+      <td>
  [%- FOREACH hidden = row.HIDDENS %]
-    [% hidden.value %]
+      [% hidden.value %]
  [%- END %]
-     <tr class="listrow[% loop.count % 2 %]" id="[% loop.count %].row2" [% UNLESS show_details %]style="display:none;"[% END %]>
+      </td>
+     </tr>
+     <tr class="listrow[% loop.count % 2 %]" id="row2.[% loop.count %]" [% UNLESS show_details %]style="display:none;"[% END %]>
       <td colspan="[% row.colspan %]">
  [%- FOREACH row2 = row.ROW2 %]
-   [%- IF row2.line_break %]<br/>[%- END %]
+   [%- IF row2.line_break %]<br>[%- END %]
    [%- IF row2.cvar %]
      [% row2.description %]
      [% PROCESS cvar_inputs cvar = row2.render_options %]
   </table>
  </td>
 </tr>
+<tr style='display:none'>
+ <td>
 <script type='text/javascript'>
   $(document).ready( function(){ $('#display_row tr:gt(1) input[name*="description"]').focus() });
 </script>
+ </td>
+</tr>