]> wagnertech.de Git - mfinanz.git/blobdiff - bin/mozilla/gl.pl
Merge pull request #6 from cwittmer/fixFSF
[mfinanz.git] / bin / mozilla / gl.pl
index 8a8181917b68f283b1232e018f522f5a0b1b462d..9b54c9af65494ed73acd8b2468893325f1d6585c 100644 (file)
@@ -24,7 +24,8 @@
 # GNU General Public License for more details.
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1335, USA.
 #======================================================================
 #
 # Genereal Ledger
@@ -42,7 +43,7 @@ use SL::GL;
 use SL::IS;
 use SL::PE;
 use SL::ReportGenerator;
-use SL::DBUtils qw(selectrow_query);
+use SL::DBUtils qw(selectrow_query selectall_hashref_query);
 
 require "bin/mozilla/common.pl";
 require "bin/mozilla/reportgenerator.pl";
@@ -78,7 +79,7 @@ require "bin/mozilla/reportgenerator.pl";
 sub add {
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -118,7 +119,7 @@ sub add {
 sub prepare_transaction {
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -165,7 +166,7 @@ sub prepare_transaction {
         $form->{totalcredit} += $ref->{amount};
         $form->{"credit_$i"} = $ref->{amount};
       }
-      $form->{"taxchart_$i"} = "0--0.00";
+      $form->{"taxchart_$i"} = $ref->{id}."--0.00000";
       $form->{"project_id_$i"} = $ref->{project_id};
       $i++;
     }
@@ -189,7 +190,7 @@ sub prepare_transaction {
 sub edit {
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -210,7 +211,7 @@ sub edit {
 
 sub search {
   $::lxdebug->enter_sub;
-  $::auth->assert('general_ledger');
+  $::auth->assert('general_ledger | gl_transactions');
 
   $::form->all_departments(\%::myconfig);
   $::form->get_lists(
@@ -249,7 +250,7 @@ sub create_subtotal_row {
 sub generate_report {
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('general_ledger | gl_transactions');
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -513,7 +514,7 @@ sub generate_report {
 sub update {
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -528,6 +529,10 @@ sub update {
   my $creditcount = 0;
   my ($debitcredit, $amount);
 
+  my $dbh = SL::DB->client->dbh;
+  my ($notax_id) = selectrow_query($form, $dbh, "SELECT id FROM tax WHERE taxkey = 0 LIMIT 1", );
+  my $zerotaxes  = selectall_hashref_query($form, $dbh, "SELECT id FROM tax WHERE rate = 0", );
+
   my @flds =
     qw(accno debit credit projectnumber fx_transaction source memo tax taxchart);
 
@@ -566,10 +571,10 @@ sub update {
         $form->{debitlock} = 1;
       }
       if ($debitcredit && $credittax) {
-        $form->{"taxchart_$i"} = "0--0.00";
+        $form->{"taxchart_$i"} = "$notax_id--0.00";
       }
       if (!$debitcredit && $debittax) {
-        $form->{"taxchart_$i"} = "0--0.00";
+        $form->{"taxchart_$i"} = "$notax_id--0.00";
       }
       $amount =
         ($form->{"debit_$i"} == 0)
@@ -577,11 +582,12 @@ sub update {
         : $form->{"debit_$i"};
       my $j = $#a;
       if (($debitcredit && $credittax) || (!$debitcredit && $debittax)) {
-        $form->{"taxchart_$i"} = "0--0.00";
+        $form->{"taxchart_$i"} = "$notax_id--0.00";
         $form->{"tax_$i"}      = 0;
       }
       my ($taxkey, $rate) = split(/--/, $form->{"taxchart_$i"});
-      if ($taxkey > 1) {
+      my $iswithouttax = grep { $_->{id} == $taxkey } @{ $zerotaxes };
+      if (!$iswithouttax) {
         if ($debitcredit) {
           $debittax = 1;
         } else {
@@ -616,7 +622,7 @@ sub display_form {
   my ($init) = @_;
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -639,7 +645,7 @@ sub display_rows {
   my ($init) = @_;
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;
@@ -843,7 +849,7 @@ sub _get_radieren {
 
 sub form_header {
   $::lxdebug->enter_sub;
-  $::auth->assert('general_ledger');
+  $::auth->assert('gl_transactions');
 
   my ($init) = @_;
 
@@ -891,12 +897,12 @@ sub form_header {
 
 sub form_footer {
   $::lxdebug->enter_sub;
-  $::auth->assert('general_ledger');
+  $::auth->assert('gl_transactions');
 
   my ($follow_ups, $follow_ups_due);
 
   if ($::form->{id}) {
-    $follow_ups     = FU->follow_ups('trans_id' => $::form->{id});
+    $follow_ups     = FU->follow_ups('trans_id' => $::form->{id}, 'not_done' => 1);
     $follow_ups_due = sum map { $_->{due} * 1 } @{ $follow_ups || [] };
   }
 
@@ -992,9 +998,9 @@ sub post_transaction {
   my $debitcredit;
   my %split_safety = ();
 
-  my $dbh = $form->dbconnect_noauto(\%myconfig);
+  my $dbh = SL::DB->client->dbh;
   my ($notax_id) = selectrow_query($form, $dbh, "SELECT id FROM tax WHERE taxkey = 0 LIMIT 1", );
-  $dbh->disconnect;
+  my $zerotaxes  = selectall_hashref_query($form, $dbh, "SELECT id FROM tax WHERE rate = 0", );
 
   my @flds = qw(accno debit credit projectnumber fx_transaction source memo tax taxchart);
 
@@ -1050,7 +1056,8 @@ sub post_transaction {
       $form->{"tax_$i"}      = 0;
     }
     my ($taxkey, $rate) = split(/--/, $form->{"taxchart_$i"});
-    if ($taxkey > 1) {
+    my $iswithouttax = grep { $_->{id} == $taxkey } @{ $zerotaxes };
+    if (!$iswithouttax) {
       if ($debitcredit) {
         $debittax = 1;
       } else {
@@ -1141,7 +1148,7 @@ sub post_transaction {
 sub post {
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
   my $locale   = $main::locale;
@@ -1166,7 +1173,7 @@ sub post {
 sub post_as_new {
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
 
@@ -1179,7 +1186,7 @@ sub post_as_new {
 sub storno {
   $main::lxdebug->enter_sub();
 
-  $main::auth->assert('general_ledger');
+  $main::auth->assert('gl_transactions');
 
   my $form     = $main::form;
   my %myconfig = %main::myconfig;