# 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);
+ 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);
+ }
+
+ for (qw(AR_include_in_dropdown AP_include_in_dropdown)) {
+ $form->{$form->{$_}} = $form->{$_} if $form->{$_};
}
$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)
}
$filename .= "." . ($form->{format} eq "html" ? "html" : "tex");
- $filename =~ s|.*/||;
+ if ($form->{"formname"} =~ m|\.\.| || $form->{"formname"} =~ m|^/|) {
+ $filename =~ s|.*/||;
+ }
$display_filename = $filename;
$filename = "$myconfig->{templates}/$filename";
}
my $error = "";
- if (open(TEMPLATE, ">$filename")) {
+ if (open(TEMPLATE, ">", $filename)) {
$content = Encode::encode('utf-8-strict', $content) if $::locale->is_utf8;
$content =~ s/\r\n/\n/g;
print(TEMPLATE $content);
vendornumber = ?,
articlenumber = ?,
servicenumber = ?,
+ assemblynumber = ?,
sdonumber = ?,
pdonumber = ?,
curr = ?,
businessnumber = ?,
- weightunit = ?|;
+ weightunit = ?,
+ language_id = ?|;
my @values = ($accnos{inventory_accno}, $accnos{income_accno}, $accnos{expense_accno},
$accnos{fxgain_accno}, $accnos{fxloss_accno}, $accnos{ar_paid_accno},
$form->{invnumber}, $form->{cnnumber},
$form->{sqnumber}, $form->{rfqnumber},
$form->{customernumber}, $form->{vendornumber},
$form->{articlenumber}, $form->{servicenumber},
+ $form->{assemblynumber},
$form->{sdonumber}, $form->{pdonumber},
$currency,
- $form->{businessnumber}, $form->{weightunit});
+ $form->{businessnumber}, $form->{weightunit},
+ conv_i($form->{language_id}));
do_query($form, $dbh, $query, @values);
$dbh->commit();
$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 curr FROM currencies ORDER BY id|;
+
+ $form->{CURRENCIES} = [];
+
+ $sth = prepare_execute_query($form, $dbh, $query);
+ $sth->execute || $form->dberror($query);
+ while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
+ push @{ $form->{ CURRENCIES } } , $ref;
+ }
+ $sth->finish;
+
+ #Which of them is the default currency?
+ $query = qq|SELECT curr AS defaultcurrency FROM currencies WHERE id = (SELECT curr FROM defaults LIMIT 1);|;
+ $sth = $dbh->prepare($query);
+ $sth->execute || $form->dberror($query);
+
+ $form->{defaultcurrency} = ($sth->fetchrow_hashref("NAME_lc"))->{defaultcurrency};
+
+ $sth->finish;
+
$dbh->disconnect;
$main::lxdebug->leave_sub();
$main::lxdebug->enter_sub();
my ($self, $myconfig, $form, $prefix) = @_;
+ $prefix ||= '';
my $dbh = $form->get_standard_dbh;
my $self = shift;
- if (!$main::all_units) {
- $main::all_units = $self->retrieve_units(\%main::myconfig, $main::form);
+ if (!$::request->{cache}{all_units}) {
+ $::request->{cache}{all_units} = $self->retrieve_units(\%main::myconfig, $main::form);
}
$main::lxdebug->leave_sub();
- return $main::all_units;
+ return $::request->{cache}{all_units};
}
$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);