use List::Util qw(max);
use SL::AM;
+use SL::CVar;
use SL::Common;
use SL::DBUtils;
use SL::MoreCommon;
map { $form->{"dv_$_"} = $ref->{$_} } keys %$ref;
}
+
+ my $custom_variables = CVar->get_custom_variables('dbh' => $dbh,
+ 'module' => 'CT',
+ 'trans_id' => $form->{customer_id});
+ map { $form->{"vc_cvar_$_->{name}"} = $_->{value} } @{ $custom_variables };
+
$dbh->disconnect;
$main::lxdebug->leave_sub();
my $basqty;
$form->{"marge_percent_$i"} = $form->parse_amount($myconfig, $form->{"marge_percent_$i"}) * 1;
- $form->{"marge_absolut_$i"} = $form->parse_amount($myconfig, $form->{"marge_absolut_$i"}) * 1;
+ $form->{"marge_total_$i"} = $form->parse_amount($myconfig, $form->{"marge_total_$i"}) * 1;
$form->{"lastcost_$i"} = $form->{"lastcost_$i"} * 1;
if ($form->{storno}) {
if ($form->{"inventory_accno_$i"} || $form->{"assembly_$i"}) {
- # adjust parts onhand quantity
-
if ($form->{"assembly_$i"}) {
-
- # do not update if assembly consists of all services
- $query =
- qq|SELECT sum(p.inventory_accno_id)
- FROM parts p
- JOIN assembly a ON (a.parts_id = p.id)
- WHERE a.id = ?|;
- $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{"id_$i"}));
-
- if ($sth->fetchrow_array) {
- $form->update_balance($dbh, "parts", "onhand", qq|id = ?|,
- $baseqty * -1, $form->{"id_$i"})
- unless $form->{shipped};
- }
- $sth->finish;
-
# record assembly item as allocated
&process_assembly($dbh, $form, $form->{"id_$i"}, $baseqty);
- } else {
- $form->update_balance($dbh, "parts", "onhand", qq|id = ?|,
- $baseqty * -1, $form->{"id_$i"})
- unless $form->{shipped};
+ } else {
$allocated = &cogs($dbh, $form, $form->{"id_$i"}, $baseqty, $basefactor, $i);
}
}
$form->{"serialnumber_$i"}, conv_i($pricegroup_id),
$form->{"ordnumber_$i"}, conv_date($form->{"transdate_$i"}),
$form->{"cusordnumber_$i"}, $baseqty, $form->{"subtotal_$i"} ? 't' : 'f',
- $form->{"marge_percent_$i"}, $form->{"marge_absolut_$i"},
+ $form->{"marge_percent_$i"}, $form->{"marge_total_$i"},
$form->{"lastcost_$i"},
conv_i($form->{"price_factor_id_$i"}), conv_i($form->{"price_factor_id_$i"}),
conv_i($form->{"marge_price_factor_$i"}));
foreach my $trans_id (keys %{ $form->{amount} }) {
foreach my $accno (keys %{ $form->{amount}{$trans_id} }) {
- next unless ($form->{expense_inventory} =~ /$accno/);
+ next unless ($form->{expense_inventory} =~ /\Q$accno\E/);
$form->{amount}{$trans_id}{$accno} = $form->round_amount($form->{amount}{$trans_id}{$accno}, 2);
# add shipto
$form->{name} = $form->{customer};
- $form->{name} =~ s/--$form->{customer_id}//;
+ $form->{name} =~ s/--\Q$form->{customer_id}\E//;
if (!$form->{shipto_id}) {
$form->add_shipto($dbh, $form->{id}, "AR");
while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
- if ($ref->{inventory_accno_id} || $ref->{assembly}) {
-
- # if the invoice item is not an assemblyitem adjust parts onhand
- if (!$ref->{assemblyitem}) {
-
- # adjust onhand in parts table
- $form->update_balance($dbh, "parts", "onhand", qq|id = $ref->{parts_id}|, $ref->{qty});
- }
-
- # loop if it is an assembly
- next if ($ref->{assembly});
-
+ if ($ref->{inventory_accno_id}) {
# de-allocated purchases
$query =
qq|SELECT i.id, i.trans_id, i.allocated
}
$ref->{taxaccounts} .= "$ptr->{accno} ";
- if (!($form->{taxaccounts} =~ /$ptr->{accno}/)) {
+ if (!($form->{taxaccounts} =~ /\Q$ptr->{accno}\E/)) {
$form->{"$ptr->{accno}_rate"} = $ptr->{rate};
$form->{"$ptr->{accno}_description"} = $ptr->{taxdescription};
$form->{"$ptr->{accno}_taxnumber"} = $ptr->{taxnumber};
}
my $cid = conv_i($form->{customer_id});
+ my $payment_id;
+
+ if ($form->{payment_id}) {
+ $payment_id = "(pt.id = ?) OR";
+ push @values, conv_i($form->{payment_id});
+ }
# get customer
$query =
qq|SELECT
c.name AS customer, c.discount, c.creditlimit, c.terms,
- c.email, c.cc, c.bcc, c.language_id, c.payment_id AS customer_payment_id,
+ c.email, c.cc, c.bcc, c.language_id, c.payment_id,
c.street, c.zipcode, c.city, c.country,
c.notes AS intnotes, c.klass as customer_klass, c.taxzone_id, c.salesman_id,
$duedate + COALESCE(pt.terms_netto, 0) AS duedate,
b.discount AS tradediscount, b.description AS business
FROM customer c
LEFT JOIN business b ON (b.id = c.business_id)
- LEFT JOIN payment_terms pt ON (c.payment_id = pt.id)
+ LEFT JOIN payment_terms pt ON ($payment_id (c.payment_id = pt.id))
WHERE c.id = ?|;
push @values, $cid;
$ref = selectfirst_hashref_query($form, $dbh, $query, @values);
$ref = selectfirst_hashref_query($form, $dbh, $query, $cid);
map { $form->{$_} = $ref->{$_} } keys %$ref;
- #check whether payment_terms are better than old payment_terms
- if (($form->{payment_id} ne "") && ($form->{customer_payment_id} ne "")) {
- $query =
- qq|SELECT
- (SELECT ranking FROM payment_terms WHERE id = ?),
- (SELECT ranking FROM payment_terms WHERE id = ?)|;
- my ($old_ranking, $new_ranking)
- = selectrow_query($form, $dbh, $query, conv_i($form->{payment_id}), conv_i($form->{customer_payment_id}));
- if ($new_ranking > $old_ranking) {
- $form->{payment_id} = $form->{customer_payment_id};
- }
- }
-
- if ($form->{payment_id} eq "") {
- $form->{payment_id} = $form->{customer_payment_id};
- }
-
$form->{creditremaining} = $form->{creditlimit};
$query = qq|SELECT SUM(amount - paid) FROM ar WHERE customer_id = ?|;
my ($value) = selectrow_query($form, $dbh, $query, $cid);
}
}
- #check whether payment_terms are better than old payment_terms
- if (($form->{payment_id} ne "") && ($form->{part_payment_id} ne "")) {
- $query =
- qq|SELECT
- (SELECT ranking FROM payment_terms WHERE id = ?),
- (SELECT ranking FROM payment_terms WHERE id = ?)|;
- my ($old_ranking, $new_ranking)
- = selectrow_query($form, $dbh, $query, conv_i($form->{payment_id}), conv_i($form->{part_payment_id}));
- if ($new_ranking > $old_ranking) {
- $form->{payment_id} = $form->{customer_payment_id};
- }
- }
-
if ($form->{payment_id} eq "") {
$form->{payment_id} = $form->{part_payment_id};
}
}
$ref->{taxaccounts} .= "$ptr->{accno} ";
- if (!($form->{taxaccounts} =~ /$ptr->{accno}/)) {
+ if (!($form->{taxaccounts} =~ /\Q$ptr->{accno}\E/)) {
$form->{"$ptr->{accno}_rate"} = $ptr->{rate};
$form->{"$ptr->{accno}_description"} = $ptr->{taxdescription};
$form->{"$ptr->{accno}_taxnumber"} = $ptr->{taxnumber};
}
}
+ $ref->{onhand} *= 1;
+
push @{ $form->{item_list} }, $ref;
if ($form->{lizenzen}) {