}
$trq->finish;
- # now get accno for taxes
- $query =
- qq|SELECT c.accno
- FROM chart c, partstax pt
- WHERE (pt.chart_id = c.id) AND (pt.parts_id = ?)|;
- $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
- while (my ($key) = $sth->fetchrow_array) {
- $form->{amount}{$key} = $key;
- }
-
- $sth->finish;
-
# is it an orphan
- my @referencing_tables = qw(invoice orderitems inventory rmaitems);
+ my @referencing_tables = qw(invoice orderitems inventory);
my %column_map = ( );
my $parts_id = conv_i($form->{id});
do_query($form, $dbh, qq|DELETE FROM assembly WHERE id = ?|, conv_i($form->{id}));
}
- # delete tax records
- do_query($form, $dbh, qq|DELETE FROM partstax WHERE parts_id = ?|, conv_i($form->{id}));
-
# delete translations
do_query($form, $dbh, qq|DELETE FROM translation WHERE parts_id = ?|, conv_i($form->{id}));
}
}
- # insert taxes
- foreach my $item (split(/ /, $form->{taxaccounts})) {
- if ($form->{"IC_tax_$item"}) {
- $query =
- qq|INSERT INTO partstax (parts_id, chart_id)
- VALUES (?, (SELECT id FROM chart WHERE accno = ?))|;
- @values = (conv_i($form->{id}), $item);
- do_query($form, $dbh, $query, @values);
- }
- }
-
# add assembly records
if ($form->{item} eq 'assembly') {
my %columns = ( "assembly" => "id", "parts" => "id" );
- for my $table (qw(prices partstax makemodel inventory assembly translation parts)) {
+ for my $table (qw(prices makemodel inventory assembly translation parts)) {
my $column = defined($columns{$table}) ? $columns{$table} : "parts_id";
do_query($form, $dbh, qq|DELETE FROM $table WHERE $column = ?|, @values);
}
# transdate madness.
my $transdate = "";
- if ($form->{type} eq "invoice") {
- if (($form->{vc} eq "vendor") || !$form->{deliverydate}) {
+ if ($form->{type} eq "invoice" or $form->{type} eq "credit_note") {
+ # use deliverydate for sales and purchase invoice, if it exists
+ # also use deliverydate for credit notes
+ if (!$form->{deliverydate}) {
+ $transdate = $form->{invdate};
+ } else {
+ $transdate = $form->{deliverydate};
+ }
+ } elsif ($form->{script} eq 'ir.pl') {
+ # when a purchase invoice is opened from the report of purchase invoices
+ # $form->{type} isn't set, but $form->{script} is, not sure why this is or
+ # whether this distinction matters in some other scenario. Otherwise one
+ # could probably take out this elsif and add a
+ # " or $form->{script} eq 'ir.pl' "
+ # to the above if-statement
+ if (!$form->{deliverydate}) {
$transdate = $form->{invdate};
} else {
$transdate = $form->{deliverydate};
# if credit_note has a deliverydate, use this instead of invdate
# useful for credit_notes of invoices from an old period with different tax
# if there is no deliverydate then invdate is used, old default (see next elsif)
+ # Falls hier der Stichtag für Steuern anders bestimmt wird,
+ # entsprechend auch bei Taxkeys.pm anpassen
$transdate = $form->{deliverydate};
} elsif (($form->{type} eq "credit_note") || ($form->{script} eq 'ir.pl')) {
$transdate = $form->{invdate};