X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/d331a3d77f0b24a301412799d2e9cc5fa1bf27ba..7635f647ec7dcdef51684b21601ee0930ea2bc5b:/SL/Form.pm diff --git a/SL/Form.pm b/SL/Form.pm index 98a8b5e9a..5a2b38df2 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -62,6 +62,7 @@ use SL::Mailer; use SL::Menu; use SL::MoreCommon qw(uri_encode uri_decode); use SL::OE; +use SL::PrefixedNumber; use SL::Request; use SL::Template; use SL::User; @@ -137,9 +138,15 @@ sub _flatten_variables_rec { foreach my $idx (0 .. scalar @{ $curr->{$key} } - 1) { my $first_array_entry = 1; - foreach my $hash_key (sort keys %{ $curr->{$key}->[$idx] }) { - push @result, $self->_flatten_variables_rec($curr->{$key}->[$idx], $prefix . $key . ($first_array_entry ? '[+].' : '[].'), $hash_key); - $first_array_entry = 0; + my $element = $curr->{$key}[$idx]; + + if ('HASH' eq ref $element) { + foreach my $hash_key (sort keys %{ $element }) { + push @result, $self->_flatten_variables_rec($element, $prefix . $key . ($first_array_entry ? '[+].' : '[].'), $hash_key); + $first_array_entry = 0; + } + } else { + @result = ({ 'key' => $prefix . $key . ($first_array_entry ? '[+]' : '[]'), 'value' => $element }); } } } @@ -470,11 +477,11 @@ sub header { main menu list_accounts jquery.autocomplete jquery.multiselect2side frame_header/header ui-lightness/jquery-ui - jquery-ui.custom + jquery-ui.custom jqModal ); $layout->use_javascript("$_.js") for (qw( - jquery jquery-ui jquery.cookie jqModal jquery.checkall + jquery jquery-ui jquery.cookie jqModal jquery.checkall jquery.download common part_selection switchmenuframe ), "jquery/ui/i18n/jquery.ui.datepicker-$::myconfig{countrycode}"); @@ -997,7 +1004,6 @@ sub parse_template { $ext_for_format = $self->{"format"} =~ m/pdf/ ? 'pdf' : 'odt'; } elsif ($self->{"format"} =~ /(postscript|pdf)/i) { - $ENV{"TEXINPUTS"} = ".:" . getcwd() . "/" . $myconfig->{"templates"} . ":" . $ENV{"TEXINPUTS"}; $template_type = 'LaTeX'; $ext_for_format = 'pdf'; @@ -1361,21 +1367,13 @@ sub datetonum { # Database routines used throughout -sub _dbconnect_options { - my $self = shift; - my $options = { pg_enable_utf8 => $::locale->is_utf8, - @_ }; - - return $options; -} - sub dbconnect { $main::lxdebug->enter_sub(2); my ($self, $myconfig) = @_; # connect to database - my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, $self->_dbconnect_options) + my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, SL::DBConnect->get_options) or $self->dberror; # set db options @@ -1394,7 +1392,7 @@ sub dbconnect_noauto { my ($self, $myconfig) = @_; # connect to database - my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, $self->_dbconnect_options(AutoCommit => 0)) + my $dbh = SL::DBConnect->connect($myconfig->{dbconnect}, $myconfig->{dbuser}, $myconfig->{dbpasswd}, SL::DBConnect->get_options(AutoCommit => 0)) or $self->dberror; # set db options @@ -1490,7 +1488,7 @@ sub update_exchangerate { $main::lxdebug->leave_sub(); return; } - $query = qq|SELECT curr FROM currencies WHERE id=(SELECT curr FROM defaults)|; + $query = qq|SELECT name AS curr FROM currencies WHERE id=(SELECT currency_id FROM defaults)|; my ($defaultcurrency) = selectrow_query($self, $dbh, $query); @@ -1499,8 +1497,8 @@ sub update_exchangerate { return; } - $query = qq|SELECT e.curr FROM exchangerate e - WHERE e.curr = (SELECT cu.id FROM currencies cu WHERE cu.curr=?) AND e.transdate = ? + $query = qq|SELECT e.currency_id FROM exchangerate e + WHERE e.currency_id = (SELECT cu.id FROM currencies cu WHERE cu.name=?) AND e.transdate = ? FOR UPDATE|; my $sth = prepare_execute_query($self, $dbh, $query, $curr, $transdate); @@ -1526,12 +1524,12 @@ sub update_exchangerate { if ($sth->fetchrow_array) { $query = qq|UPDATE exchangerate SET $set - WHERE curr = (SELECT id FROM currencies WHERE curr = ?) + WHERE currency_id = (SELECT id FROM currencies WHERE name = ?) AND transdate = ?|; } else { - $query = qq|INSERT INTO exchangerate (curr, buy, sell, transdate) - VALUES ((SELECT id FROM currencies WHERE curr = ?), $buy, $sell, ?)|; + $query = qq|INSERT INTO exchangerate (currency_id, buy, sell, transdate) + VALUES ((SELECT id FROM currencies WHERE name = ?), $buy, $sell, ?)|; } $sth->finish; do_query($self, $dbh, $query, $curr, $transdate); @@ -1571,7 +1569,7 @@ sub get_exchangerate { return 1; } - $query = qq|SELECT curr FROM currencies WHERE id = (SELECT curr FROM defaults)|; + $query = qq|SELECT name AS curr FROM currencies WHERE id = (SELECT currency_id FROM defaults)|; my ($defaultcurrency) = selectrow_query($self, $dbh, $query); @@ -1581,7 +1579,7 @@ sub get_exchangerate { } $query = qq|SELECT e.$fld FROM exchangerate e - WHERE e.curr = (SELECT id FROM currencies WHERE curr = ?) AND e.transdate = ?|; + WHERE e.currency_id = (SELECT id FROM currencies WHERE name = ?) AND e.transdate = ?|; my ($exchangerate) = selectrow_query($self, $dbh, $query, $curr, $transdate); @@ -1614,7 +1612,7 @@ sub check_exchangerate { my $dbh = $self->get_standard_dbh($myconfig); my $query = qq|SELECT e.$fld FROM exchangerate e - WHERE e.curr = (SELECT id FROM currencies WHERE curr = ?) AND e.transdate = ?|; + WHERE e.currency_id = (SELECT id FROM currencies WHERE name = ?) AND e.transdate = ?|; my ($exchangerate) = selectrow_query($self, $dbh, $query, $currency, $transdate); @@ -1631,14 +1629,8 @@ sub get_all_currencies { my $dbh = $self->get_standard_dbh($myconfig); my @currencies =(); - my $query = qq|SELECT curr FROM currencies|; - - my $sth = prepare_execute_query($self, $dbh, $query); - - while (my $ref = $sth->fetchrow_hashref()) { - push(@currencies, $ref->{curr}); - } - $sth->finish; + my $query = qq|SELECT name FROM currencies|; + my @currencies = map { $_->{name} } selectall_hashref_query($self, $dbh, $query); $main::lxdebug->leave_sub(); @@ -1650,7 +1642,7 @@ sub get_default_currency { my ($self, $myconfig) = @_; my $dbh = $self->get_standard_dbh($myconfig); - my $query = qq|SELECT curr FROM currencies WHERE id = (SELECT curr FROM defaults)|; + my $query = qq|SELECT name AS curr FROM currencies WHERE id = (SELECT currency_id FROM defaults)|; my ($defaultcurrency) = selectrow_query($self, $dbh, $query); @@ -2111,7 +2103,7 @@ sub _get_taxcharts { my $where = @where ? ' WHERE ' . join(' AND ', map { "($_)" } @where) : ''; - my $query = qq|SELECT * FROM tax $where ORDER BY taxkey|; + my $query = qq|SELECT * FROM tax $where ORDER BY taxkey, rate|; $self->{$key} = selectall_hashref_query($self, $dbh, $query); @@ -2504,7 +2496,7 @@ sub all_vc { my $query = qq|SELECT count(*) FROM $table $obsolete|; my ($count) = selectrow_query($self, $dbh, $query); - if ($count < $myconfig->{vclimit}) { + if ($count <= $myconfig->{vclimit}) { $query = qq|SELECT id, name, salesman_id FROM $table $obsolete ORDER BY name|; @@ -2707,7 +2699,7 @@ sub create_links { $query = qq|SELECT a.cp_id, a.invnumber, a.transdate, a.${table}_id, a.datepaid, - a.duedate, a.ordnumber, a.taxincluded, (SELECT cu.curr FROM currencies cu WHERE cu.id=a.curr) AS currency, a.notes, + a.duedate, a.ordnumber, a.taxincluded, (SELECT cu.name FROM currencies cu WHERE cu.id=a.currency_id) AS currency, a.notes, a.intnotes, a.department_id, a.amount AS oldinvtotal, a.paid AS oldtotalpaid, a.employee_id, a.gldate, a.type, a.globalproject_id, ${extra_columns} @@ -2812,7 +2804,7 @@ sub create_links { $query = qq|SELECT d.closedto, d.revtrans, - (SELECT cu.curr FROM currencies cu WHERE cu.id=d.curr) AS defaultcurrency, + (SELECT cu.name FROM currencies cu WHERE cu.id=d.currency_id) AS defaultcurrency, (SELECT c.accno FROM chart c WHERE d.fxgain_accno_id = c.id) AS fxgain_accno, (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno FROM defaults d|; @@ -2825,7 +2817,7 @@ sub create_links { $query = qq|SELECT current_date AS transdate, d.closedto, d.revtrans, - (SELECT cu.curr FROM currencies cu WHERE cu.id=d.curr) AS defaultcurrency, + (SELECT cu.name FROM currencies cu WHERE cu.id=d.currency_id) AS defaultcurrency, (SELECT c.accno FROM chart c WHERE d.fxgain_accno_id = c.id) AS fxgain_accno, (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno FROM defaults d|; @@ -2864,7 +2856,7 @@ sub lastname_used { "a.department_id" => "department_id", "d.description" => "department", "ct.name" => $table, - "cu.curr" => "currency", + "cu.name" => "currency", "current_date + ct.terms" => "duedate", ); @@ -2899,7 +2891,7 @@ sub lastname_used { FROM $arap a LEFT JOIN $table ct ON (a.${table}_id = ct.id) LEFT JOIN department d ON (a.department_id = d.id) - LEFT JOIN currencies cu ON (cu.id=ct.curr) + LEFT JOIN currencies cu ON (cu.id=ct.currency_id) WHERE a.id = ?|; my $ref = selectfirst_hashref_query($self, $dbh, $query, $trans_id); @@ -3184,15 +3176,8 @@ sub update_defaults { my ($var) = $sth->fetchrow_array; $sth->finish; - if ($var =~ m/\d+$/) { - my $new_var = (substr $var, $-[0]) * 1 + 1; - my $len_diff = length($var) - $-[0] - length($new_var); - $var = substr($var, 0, $-[0]) . ($len_diff > 0 ? '0' x $len_diff : '') . $new_var; - - } else { - $var = $var . '1'; - } - + $var = 0 if !defined($var) || ($var eq ''); + $var = SL::PrefixedNumber->new(number => $var)->get_next; $query = qq|UPDATE defaults SET $fld = ?|; do_query($self, $dbh, $query, $var); @@ -3409,7 +3394,7 @@ sub prepare_for_printing { IC->retrieve_accounts(\%::myconfig, $self, map { $_ => $self->{"id_$_"} } 1 .. $self->{rowcount}); if ($self->{type} =~ /_delivery_order$/) { - DO->order_details(); + DO->order_details(\%::myconfig, $self); } elsif ($self->{type} =~ /sales_order|sales_quotation|request_quotation|purchase_order/) { OE->order_details(\%::myconfig, $self); } else {