Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0fa80981

Von Moritz Bunkus vor mehr als 7 Jahren hinzugefügt

  • ID 0fa8098195ca1634920bf65264a987b59a91ebe1
  • Vorgänger 41cceb1e
  • Nachfolger 529e6bf9

Kreditorenbuchungen auf Verwendung des Chart-Pickers umgestellt

Unterschiede anzeigen:

bin/mozilla/ap.pl
38 38

  
39 39
use SL::AP;
40 40
use SL::FU;
41
use SL::GL;
41 42
use SL::IR;
42 43
use SL::IS;
43 44
use SL::ReportGenerator;
......
101 102
  create_links(dont_save => 1);
102 103
  $form->{transdate} = $form->{initial_transdate};
103 104

  
105
  if ($form->{vendor_id}) {
106
    my $last_used_ap_chart = SL::DB::Vendor->load_cached($form->{vendor_id})->last_used_ap_chart;
107
    $form->{"AP_amount_chart_id_1"} = $last_used_ap_chart->id if $last_used_ap_chart;
108
  }
109

  
104 110
  &display_form;
105 111

  
106 112
  $main::lxdebug->leave_sub();
......
171 177
  $form->{$_}        = $saved{$_} for keys %saved;
172 178
  $form->{oldvendor} = "$form->{vendor}--$form->{vendor_id}";
173 179
  $form->{rowcount}  = 1;
180
  $form->{AP_chart_id} = $form->{acc_trans} && $form->{acc_trans}->{AP} ? $form->{acc_trans}->{AP}->[0]->{chart_id} : $form->{AP_links}->{AP}->[0]->{chart_id};
174 181

  
175 182
  # build the popup menus
176 183
  $form->{taxincluded} = ($form->{id}) ? $form->{taxincluded} : "checked";
......
232 239

  
233 240
  $::form->{invoice_obj} = SL::DB::PurchaseInvoice->new(id => $::form->{id})->load if $::form->{id};
234 241

  
242
  $form->{initial_focus} = !($form->{amount_1} * 1) ? 'vendor' : 'row_' . $form->{rowcount};
243

  
235 244
  $form->{title_} = $form->{title};
236 245
  $form->{title} = $form->{title} eq 'Add' ? $locale->text('Add Accounts Payables Transaction') : $locale->text('Edit Accounts Payables Transaction');
237 246

  
......
302 311
  }
303 312

  
304 313
  my %charts;
305
  my $taxchart_init;
314
  my $default_ap_amount_chart_id;
306 315

  
307 316
  foreach my $item (@{ $form->{ALL_CHARTS} }) {
308 317
    if ( grep({ $_ eq 'AP_amount' } @{ $item->{link_split} }) ) {
309
      if ( $taxchart_init eq '' ) {
310
        $taxchart_init = $item->{tax_id};
311
      }
318
      $default_ap_amount_chart_id //= $item->{id};
312 319

  
313
      push(@{ $form->{ALL_CHARTS_AP_amount} }, $item);
314
    }
315
    elsif ( grep({ $_ eq 'AP' } @{ $item->{link_split} }) ) {
316
      push(@{ $form->{ALL_CHARTS_AP} }, $item);
317
    }
318
    elsif ( grep({ $_ eq 'AP_paid' } @{ $item->{link_split} }) ) {
320
    } elsif ( grep({ $_ eq 'AP_paid' } @{ $item->{link_split} }) ) {
319 321
      push(@{ $form->{ALL_CHARTS_AP_paid} }, $item);
320 322
    }
321 323

  
......
324 326

  
325 327
  my %taxcharts = ();
326 328
  foreach my $item (@{ $form->{ALL_TAXCHARTS} }) {
327
    my $key = $item->{id} .'--'. $item->{rate};
328

  
329
    if ( $taxchart_init eq $item->{id} ) {
330
      $taxchart_init = $key;
331
    }
332

  
333 329
    $taxcharts{$item->{id}} = $item;
334 330
  }
335 331

  
......
337 333
  $follow_up_vc            =~ s/--.*?//;
338 334
  my $follow_up_trans_info =  "$form->{invnumber} ($follow_up_vc)";
339 335

  
340
  $form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
341
  $form->{javascript} .= qq|<script type="text/javascript" src="js/show_vc_details.js"></script>|;
342
  $form->{javascript} .= qq|<script type="text/javascript" src="js/follow_up.js"></script>|;
343
  $form->{javascript} .= qq|<script type="text/javascript" src="js/kivi.Draft.js"></script>|;
336
  $::request->layout->add_javascripts("autocomplete_chart.js", "show_vc_details.js", "show_history.js", "follow_up.js", "kivi.Draft.js", "kivi.GL.js");
337
  my $transdate = $::form->{transdate} ? DateTime->from_kivitendo($::form->{transdate}) : DateTime->today_local;
338
  my $first_taxchart;
344 339

  
345 340
  $form->header();
346 341

  
......
350 345
    $form->{"amount_$i"} = $form->format_amount(\%myconfig, $form->{"amount_$i"}, 2);
351 346
    $form->{"tax_$i"} = $form->format_amount(\%myconfig, $form->{"tax_$i"}, 2);
352 347

  
353
    my $selected_accno_full;
354
    my ($accno_row) = split(/--/, $form->{"AP_amount_$i"});
355
    my $item = $charts{$accno_row};
356
    $selected_accno_full = "$item->{accno}--$item->{tax_id}";
348
    my ($default_taxchart, $taxchart_to_use);
349
    my $amount_chart_id   = $form->{"AP_amount_chart_id_$i"} || $default_ap_amount_chart_id;
350
    my $chart_has_changed = $::form->{"previous_AP_amount_chart_id_$i"} && ($amount_chart_id != $::form->{"previous_AP_amount_chart_id_$i"});
357 351

  
358
    my $selected_taxchart = $form->{"taxchart_$i"};
359
    my ($selected_accno, $selected_tax_id) = split(/--/, $selected_accno_full);
360
    my ($previous_accno, $previous_tax_id) = split(/--/, $form->{"previous_AP_amount_$i"});
361

  
362
    if ($previous_accno &&
363
        ($previous_accno eq $selected_accno) &&
364
        ($previous_tax_id ne $selected_tax_id)) {
365
      my $item = $taxcharts{$selected_tax_id};
366
      $selected_taxchart = "$item->{id}--$item->{rate}";
352
    foreach my $item ( GL->get_active_taxes_for_chart($amount_chart_id, $transdate) ) {
353
      my $key             = $item->id . "--" . $item->rate;
354
      $first_taxchart   //= $item;
355
      $default_taxchart   = $item if $item->{is_default};
356
      $taxchart_to_use    = $item if $key eq $form->{"taxchart_$i"};
367 357
    }
368 358

  
369
    $selected_taxchart = $taxchart_init unless ($form->{"taxchart_$i"});
370

  
371
    $form->{'selected_accno_full_'. $i} = $selected_accno_full;
372

  
373
    $form->{'selected_taxchart_'. $i} = $selected_taxchart;
359
    $taxchart_to_use                 = $default_taxchart // $first_taxchart if $chart_has_changed || !$taxchart_to_use;
360
    my $selected_taxchart            = $taxchart_to_use->id . '--' . $taxchart_to_use->rate;
361
    $form->{"selected_taxchart_$i"}  = $selected_taxchart;
362
    $form->{"AP_amount_chart_id_$i"} = $amount_chart_id;
374 363
  }
375 364

  
376
  $form->{AP_amount_value_title_sub} = sub {
377
    my $item = shift;
378
    return [
379
      $item->{accno} .'--'. $item->{tax_id},
380
      $item->{accno} .'--'. $item->{description},
381
    ];
382
  };
383

  
384 365
  $form->{taxchart_value_title_sub} = sub {
385 366
    my $item = shift;
386 367
    return [
......
397 378
    ];
398 379
  };
399 380

  
400
  $form->{APselected_value_title_sub} = sub {
401
    my $item = shift;
402
    return [
403
      $item->{accno},
404
      $item->{accno} .'--'. $item->{description}
405
    ];
406
  };
407

  
408 381
  $form->{invtotal_unformatted} = $form->{invtotal};
409 382
  $form->{invtotal} = $form->format_amount(\%myconfig, $form->{invtotal}, 2);
410 383

  
......
559 532
  $form->{exchangerate} = $form->{forex} if $form->{forex};
560 533

  
561 534
  $form->{invdate} = $form->{transdate};
562
  my %saved_variables = map +( $_ => $form->{$_} ), qw(AP AP_amount_1 taxchart_1 notes);
563 535

  
564 536
  my $vendor_changed = &check_name("vendor");
565 537

  
566
  $form->{AP} = $saved_variables{AP};
567
  if ($saved_variables{AP_amount_1} =~ m/.--./) {
568
    map { $form->{$_} = $saved_variables{$_} } qw(AP_amount_1 taxchart_1);
569
  } else {
570
    delete $form->{taxchart_1};
571
  }
572

  
573 538
  $form->{rowcount} = $count + 1;
574 539

  
575 540
  $form->{invtotal} =
......
731 696
    &update;
732 697
    $::dispatcher->end_request;
733 698
  }
734
  my ($debitaccno,    $debittaxkey)    = split /--/, $form->{AP_amountselected};
735
  my ($taxkey,        $NULL)           = split /--/, $form->{taxchartselected};
736
  my ($payablesaccno, $payablestaxkey) = split /--/, $form->{APselected};
737
#  $form->{AP_amount_1}  = $debitaccno;
738
  $form->{AP_payables}  = $payablesaccno;
739
  $form->{taxkey}       = $taxkey;
740 699
  $form->{storno}       = 0;
741 700

  
742 701
  $form->{id} = 0 if $form->{postasnew};

Auch abrufbar als: Unified diff