use Carp;
use Data::Dumper;
use Encode;
+use List::MoreUtils qw(any);
use SL::DBUtils;
use strict;
# connect to database, turn off AutoCommit
my $dbh = $form->dbconnect_noauto($myconfig);
+ for (qw(AR_include_in_dropdown AP_include_in_dropdown summary_account)) {
+ $form->{$form->{$_}} = $form->{$_} if $form->{$_};
+ }
+
# 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 CT_tax);
+ 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} = "";
$form->{IC}, $form->{IC_sale},
$form->{IC_cogs}, $form->{IC_taxpart},
$form->{IC_income}, $form->{IC_expense},
- $form->{IC_taxservice}, $form->{CT_tax}
+ $form->{IC_taxservice}
) {
$form->{link} .= "${item}:" if ($item);
}
$form->{id} = "";
}
+ $query = '
+ SELECT accno
+ FROM chart
+ WHERE accno = ?';
+
+ my @values = ($form->{accno});
+
+ if ( $form->{id} ) {
+ $query .= ' AND NOT id = ?';
+ push(@values, $form->{id});
+ }
+
+ my ($accno) = selectrow_query($form, $dbh, $query, @values);
+
+ if ($accno) {
+ $form->error($::locale->text('Account number not unique!'));
+ }
+
+
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"}, '');
}
- my @values;
+ @values = ();
if ($form->{id}) {
do_query($form, $dbh, $query, $form->{id});
}
- foreach my $table (qw(partstax customertax vendortax tax)) {
- $query = qq|DELETE FROM $table
- WHERE chart_id = ?|;
- do_query($form, $dbh, $query, $form->{id});
- }
+ $query = qq|DELETE FROM tax
+ WHERE chart_id = ?|;
+ do_query($form, $dbh, $query, $form->{id});
# delete chart of account record
$query = qq|DELETE FROM chart
$query = qq|UPDATE leads SET
lead = ?
WHERE id = ?|;
- puhs(@values, $form->{id});
+ push(@values, $form->{id});
} else {
$query = qq|INSERT INTO leads
(lead)
my %accnos;
map { ($accnos{$_}) = split(m/--/, $form->{$_}) } qw(inventory_accno income_accno expense_accno fxgain_accno fxloss_accno ar_paid_accno);
- $form->{curr} =~ s/ //g;
- my @currencies = grep { $_ ne '' } split m/:/, $form->{curr};
- my $currency = join ':', @currencies;
-
# these defaults are database wide
my $query =
vendornumber = ?,
articlenumber = ?,
servicenumber = ?,
+ assemblynumber = ?,
sdonumber = ?,
pdonumber = ?,
- curr = ?,
businessnumber = ?,
weightunit = ?,
language_id = ?|;
$form->{sqnumber}, $form->{rfqnumber},
$form->{customernumber}, $form->{vendornumber},
$form->{articlenumber}, $form->{servicenumber},
+ $form->{assemblynumber},
$form->{sdonumber}, $form->{pdonumber},
- $currency,
$form->{businessnumber}, $form->{weightunit},
conv_i($form->{language_id}));
do_query($form, $dbh, $query, @values);
+ $main::lxdebug->message(0, "es gibt rowcount: " . $form->{rowcount});
+
+ for my $i (1..$form->{rowcount}) {
+ if ($form->{"curr_$i"} ne $form->{"old_curr_$i"}) {
+ $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 (name) VALUES (?)|;
+ do_query($form, $dbh, $query, $form->{new_curr});
+ }
+
$dbh->commit();
$main::lxdebug->leave_sub();
my $dbh = $form->get_standard_dbh($myconfig);
- my ($currency, $businessnumber) = selectrow_query($form, $dbh, qq|SELECT curr, businessnumber FROM defaults|);
+ my ($businessnumber) = selectrow_query($form, $dbh, qq|SELECT businessnumber FROM defaults|);
# update name
my $query = qq|UPDATE employee SET name = ? WHERE login = ?|;
my $rc = $dbh->commit();
- # save first currency in myconfig
- $currency =~ s/:.*//;
- $form->{currency} = $currency;
-
$form->{businessnumber} = $businessnumber;
- $myconfig = new User($form->{login});
+ $myconfig = User->new(login => $form->{login});
foreach my $item (keys %$form) {
$myconfig->{$item} = $form->{$item};
}
$sth->finish;
+
+ #Get currencies:
+ $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 name AS defaultcurrency FROM currencies WHERE id = (SELECT currency_id FROM defaults LIMIT 1);|;
+ ($form->{defaultcurrency}) = selectrow_query($form, $dbh, $query);
+
$dbh->disconnect;
$main::lxdebug->leave_sub();
my $dbh = $form->dbconnect($myconfig);
- my $query = qq|SELECT closedto, revtrans FROM defaults|;
+ my $query = qq|SELECT closedto, max_future_booking_interval, revtrans FROM defaults|;
my $sth = $dbh->prepare($query);
$sth->execute || $form->dberror($query);
- ($form->{closedto}, $form->{revtrans}) = $sth->fetchrow_array;
+ ($form->{closedto}, $form->{max_future_booking_interval}, $form->{revtrans}) = $sth->fetchrow_array;
$sth->finish;
$query = qq|UPDATE defaults SET closedto = NULL, revtrans = '1'|;
} elsif ($form->{closedto}) {
- $query = qq|UPDATE defaults SET closedto = ?, revtrans = '0'|;
- @values = (conv_date($form->{closedto}));
+ $query = qq|UPDATE defaults SET closedto = ?, max_future_booking_interval = ?, revtrans = '0'|;
+ @values = (conv_date($form->{closedto}), conv_date($form->{max_future_booking_interval}));
} else {
$query = qq|UPDATE defaults SET closedto = NULL, revtrans = '0'|;
$main::lxdebug->enter_sub(2);
my ($this, $a, $b, $all_units) = @_;
+ if (!$all_units) {
+ $all_units = $this->retrieve_all_units;
+ }
+
$main::lxdebug->leave_sub(2) and return 0 unless $a && $b;
$main::lxdebug->leave_sub(2) and return 0 unless $all_units->{$a} && $all_units->{$b};
$main::lxdebug->leave_sub(2) and return 0 unless $all_units->{$a}{base_unit} eq $all_units->{$b}{base_unit};
(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);
taxkey,
taxdescription,
round(rate * 100, 2) AS rate,
- chart_id
+ chart_id,
+ chart_categories,
+ (id IN (SELECT tax_id
+ FROM acc_trans)) AS tax_already_used
FROM tax
WHERE id = ? |;
$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});
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);
map { $form->{$_} = $ref->{$_} } keys %{ $ref };
$query = qq|SELECT b.*, EXISTS
- (SELECT i.warehouse_id
- FROM inventory i
+ (SELECT i.warehouse_id, p.warehouse_id
+ FROM inventory i, parts p
WHERE i.bin_id = b.id
+ OR p.bin_id = b.id
LIMIT 1)
AS in_use
FROM bin b