X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FAM.pm;h=007d1ddc29d24183a743a8c661b1bf35023a071e;hb=1264cff68a2e27855c34fc2e00e1f6724ab004f4;hp=86b29d19633318023f1393f4d8f27522cf948a5a;hpb=d331a3d77f0b24a301412799d2e9cc5fa1bf27ba;p=kivitendo-erp.git diff --git a/SL/AM.pm b/SL/AM.pm index 86b29d196..007d1ddc2 100644 --- a/SL/AM.pm +++ b/SL/AM.pm @@ -40,6 +40,7 @@ package AM; use Carp; use Data::Dumper; use Encode; +use List::MoreUtils qw(any); use SL::DBUtils; use strict; @@ -207,17 +208,15 @@ sub save_account { # connect to database, turn off AutoCommit my $dbh = $form->dbconnect_noauto($myconfig); - # sanity check, can't have AR with AR_... - if ($form->{AR} || $form->{AP} || $form->{IC}) { - map { delete $form->{$_} } - qw(AR_amount AR_tax AR_paid AP_amount AP_tax AP_paid IC_sale IC_cogs IC_taxpart IC_income IC_expense IC_taxservice); + for (qw(AR_include_in_dropdown AP_include_in_dropdown summary_account)) { + $form->{$form->{$_}} = $form->{$_} if $form->{$_}; } - if ($form->{AR_include_in_dropdown}) { - $form->{$form->{AR_include_in_dropdown}} = $form->{AR_include_in_dropdown}; - } - if ($form->{AP_include_in_dropdown}) { - $form->{$form->{AP_include_in_dropdown}} = $form->{AP_include_in_dropdown}; + # sanity check, can't have AR with AR_... + if ($form->{AR} || $form->{AP} || $form->{IC}) { + if (any { $form->{$_} } qw(AR_amount AR_tax AR_paid AP_amount AP_tax AP_paid IC_sale IC_cogs IC_taxpart IC_income IC_expense IC_taxservice)) { + $form->error($::locale->text('It is not allowed that a summary account occurs in a drop-down menu!')); + } } $form->{link} = ""; @@ -265,8 +264,8 @@ sub save_account { if (!$form->{id} || $form->{id} eq "") { $query = qq|SELECT nextval('id')|; ($form->{"id"}) = selectrow_query($form, $dbh, $query); - $query = qq|INSERT INTO chart (id, accno) VALUES (?, ?)|; - do_query($form, $dbh, $query, $form->{"id"}, $form->{"accno"}); + $query = qq|INSERT INTO chart (id, accno, link) VALUES (?, ?, ?)|; + do_query($form, $dbh, $query, $form->{"id"}, $form->{"accno"}, ''); } @values = (); @@ -1083,6 +1082,7 @@ sub save_defaults { vendornumber = ?, articlenumber = ?, servicenumber = ?, + assemblynumber = ?, sdonumber = ?, pdonumber = ?, businessnumber = ?, @@ -1095,6 +1095,7 @@ sub save_defaults { $form->{sqnumber}, $form->{rfqnumber}, $form->{customernumber}, $form->{vendornumber}, $form->{articlenumber}, $form->{servicenumber}, + $form->{assemblynumber}, $form->{sdonumber}, $form->{pdonumber}, $form->{businessnumber}, $form->{weightunit}, conv_i($form->{language_id})); @@ -1104,14 +1105,14 @@ sub save_defaults { for my $i (1..$form->{rowcount}) { if ($form->{"curr_$i"} ne $form->{"old_curr_$i"}) { - $query = qq|UPDATE currencies SET curr = '| . $form->{"curr_$i"} . qq|' WHERE curr = '| . $form->{"old_curr_$i"} . qq|'|; - do_query($form, $dbh, $query); + $query = qq|UPDATE currencies SET name = ? WHERE name = ?|; + do_query($form, $dbh, $query, $form->{"curr_$i"}, $form->{"old_curr_$i"}); } } if (length($form->{new_curr}) > 0) { - $query = qq|INSERT INTO currencies (curr) VALUES ('| . $form->{new_curr} . qq|')|; - do_query($form, $dbh, $query); + $query = qq|INSERT INTO currencies (name) VALUES (?)|; + do_query($form, $dbh, $query, $form->{new_curr}); } $dbh->commit(); @@ -1293,25 +1294,12 @@ sub defaultaccounts { $sth->finish; #Get currencies: - $query = qq|SELECT curr FROM currencies ORDER BY id|; - - $form->{CURRENCIES} = []; - - $sth = prepare_execute_query($form, $dbh, $query); - $sth->execute || $form->dberror($query); - while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { - push @{ $form->{ CURRENCIES } } , $ref; - } - $sth->finish; + $query = qq|SELECT name AS curr FROM currencies ORDER BY id|; + $form->{CURRENCIES} = selectall_hashref_query($form, $dbh, $query); #Which of them is the default currency? - $query = qq|SELECT curr AS defaultcurrency FROM currencies WHERE id = (SELECT curr FROM defaults LIMIT 1);|; - $sth = $dbh->prepare($query); - $sth->execute || $form->dberror($query); - - $form->{defaultcurrency} = ($sth->fetchrow_hashref("NAME_lc"))->{defaultcurrency}; - - $sth->finish; + $query = qq|SELECT name AS defaultcurrency FROM currencies WHERE id = (SELECT currency_id FROM defaults LIMIT 1);|; + ($form->{defaultcurrency}) = selectrow_query($form, $dbh, $query); $dbh->disconnect; @@ -1744,7 +1732,7 @@ sub taxes { (SELECT accno FROM chart WHERE id = chart_id) AS taxnumber, (SELECT description FROM chart WHERE id = chart_id) AS account_description FROM tax t - ORDER BY taxkey|; + ORDER BY taxkey, rate|; my $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); @@ -1804,6 +1792,7 @@ sub get_tax { taxdescription, round(rate * 100, 2) AS rate, chart_id, + chart_categories, (id IN (SELECT tax_id FROM acc_trans)) AS tax_already_used FROM tax @@ -1861,14 +1850,23 @@ sub save_tax { $form->{rate} = $form->{rate} / 100; - my @values = ($form->{taxkey}, $form->{taxdescription}, $form->{rate}, $form->{chart_id}, $form->{chart_id} ); + my $chart_categories = ''; + $chart_categories .= 'A' if $form->{asset}; + $chart_categories .= 'L' if $form->{liability}; + $chart_categories .= 'Q' if $form->{equity}; + $chart_categories .= 'I' if $form->{revenue}; + $chart_categories .= 'E' if $form->{expense}; + $chart_categories .= 'C' if $form->{costs}; + + my @values = ($form->{taxkey}, $form->{taxdescription}, $form->{rate}, $form->{chart_id}, $form->{chart_id}, $chart_categories); if ($form->{id} ne "") { $query = qq|UPDATE tax SET taxkey = ?, taxdescription = ?, rate = ?, chart_id = ?, - taxnumber = (SELECT accno FROM chart WHERE id= ? ) + taxnumber = (SELECT accno FROM chart WHERE id= ? ), + chart_categories = ? WHERE id = ?|; push(@values, $form->{id}); @@ -1879,9 +1877,10 @@ sub save_tax { taxdescription, rate, chart_id, - taxnumber + taxnumber, + chart_categories ) - VALUES (?, ?, ?, ?, (SELECT accno FROM chart WHERE id = ?) )|; + VALUES (?, ?, ?, ?, (SELECT accno FROM chart WHERE id = ?), ? )|; } do_query($form, $dbh, $query, @values);