+ close(TEMPLATE);
+ }
+
+ $content = Encode::decode('utf-8-strict', $content) if $::locale->is_utf8;
+
+ $main::lxdebug->leave_sub();
+
+ return ($content, $lines);
+}
+
+sub save_template {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $filename, $content) = @_;
+
+ local *TEMPLATE;
+
+ my $error = "";
+
+ if (open(TEMPLATE, ">$filename")) {
+ $content = Encode::encode('utf-8-strict', $content) if $::locale->is_utf8;
+ $content =~ s/\r\n/\n/g;
+ print(TEMPLATE $content);
+ close(TEMPLATE);
+ } else {
+ $error = $!;
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return $error;
+}
+
+sub save_defaults {
+ $main::lxdebug->enter_sub();
+
+ my $self = shift;
+ my %params = @_;
+
+ my $myconfig = \%main::myconfig;
+ my $form = $main::form;
+
+ my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+ 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 =
+ qq|UPDATE defaults SET
+ inventory_accno_id = (SELECT c.id FROM chart c WHERE c.accno = ?),
+ income_accno_id = (SELECT c.id FROM chart c WHERE c.accno = ?),
+ expense_accno_id = (SELECT c.id FROM chart c WHERE c.accno = ?),
+ fxgain_accno_id = (SELECT c.id FROM chart c WHERE c.accno = ?),
+ fxloss_accno_id = (SELECT c.id FROM chart c WHERE c.accno = ?),
+ ar_paid_accno_id = (SELECT c.id FROM chart c WHERE c.accno = ?),
+ invnumber = ?,
+ cnnumber = ?,
+ sonumber = ?,
+ ponumber = ?,
+ sqnumber = ?,
+ rfqnumber = ?,
+ customernumber = ?,
+ vendornumber = ?,
+ articlenumber = ?,
+ servicenumber = ?,
+ sdonumber = ?,
+ pdonumber = ?,
+ curr = ?,
+ businessnumber = ?,
+ weightunit = ?|;
+ 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->{sonumber}, $form->{ponumber},
+ $form->{sqnumber}, $form->{rfqnumber},
+ $form->{customernumber}, $form->{vendornumber},
+ $form->{articlenumber}, $form->{servicenumber},
+ $form->{sdonumber}, $form->{pdonumber},
+ $currency,
+ $form->{businessnumber}, $form->{weightunit});
+ do_query($form, $dbh, $query, @values);
+
+ $dbh->commit();
+
+ $main::lxdebug->leave_sub();
+}
+
+
+sub save_preferences {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig, $form) = @_;
+
+ my $dbh = $form->get_standard_dbh($myconfig);
+
+ my ($currency, $businessnumber) = selectrow_query($form, $dbh, qq|SELECT curr, businessnumber FROM defaults|);
+
+ # update name
+ my $query = qq|UPDATE employee SET name = ? WHERE login = ?|;
+ do_query($form, $dbh, $query, $form->{name}, $form->{login});
+
+ my $rc = $dbh->commit();
+
+ # save first currency in myconfig
+ $currency =~ s/:.*//;
+ $form->{currency} = $currency;
+
+ $form->{businessnumber} = $businessnumber;
+
+ $myconfig = new User($form->{login});
+
+ foreach my $item (keys %$form) {
+ $myconfig->{$item} = $form->{$item};