column_map => { id => 'cp_cv_id' },
manager_args => { sort_by => 'lower(contacts.cp_name)' },
},
- business => {
- type => 'one to one',
- class => 'SL::DB::Business',
- column_map => { business_id => 'id' },
- },
);
__PACKAGE__->meta->initialize;
taxzone_id => { type => 'integer', default => '0', not_null => 1 },
greeting => { type => 'text' },
ustid => { type => 'text' },
+ direct_debit => { type => 'boolean', default => 'false' },
iban => { type => 'varchar', length => 100 },
bic => { type => 'varchar', length => 100 },
- direct_debit => { type => 'boolean', default => 'false' },
+ curr => { type => 'character', length => 3 },
],
primary_key_columns => [ 'id' ],
- allow_inline_column_values => 1,
+ foreign_keys => [
+ business => {
+ class => 'SL::DB::Business',
+ key_columns => { business_id => 'id' },
+ },
+
+ language_obj => {
+ class => 'SL::DB::Language',
+ key_columns => { language_id => 'id' },
+ },
+
+ payment => {
+ class => 'SL::DB::PaymentTerm',
+ key_columns => { payment_id => 'id' },
+ },
+ ],
);
1;
class => 'SL::DB::Buchungsgruppe',
key_columns => { buchungsgruppen_id => 'id' },
},
+
+ unit_obj => {
+ class => 'SL::DB::Unit',
+ key_columns => { unit => 'name' },
+ },
],
);
direct_debit => { type => 'boolean', default => 'false' },
iban => { type => 'varchar', length => 100 },
bic => { type => 'varchar', length => 100 },
+ curr => { type => 'character', length => 3 },
],
primary_key_columns => [ 'id' ],
);
__PACKAGE__->meta->add_relationships(
- unit_obj => {
- type => 'one to one',
- class => 'SL::DB::Unit',
- column_map => { unit => 'name' },
- },
assemblies => {
type => 'one to many',
class => 'SL::DB::Assembly',
conv_i($form->{salesman_id}), conv_i($form->{cp_id}),
$form->{transaction_description},
$form->{type} =~ /^sales/ ? 't' : 'f',
- conv_i($form->{taxzone_id}), $form->{taxincluded} ? 't' : 'f', conv_i($form->{terms}), $form->{curr},
+ conv_i($form->{taxzone_id}), $form->{taxincluded} ? 't' : 'f', conv_i($form->{terms}), substr($form->{currency}, 0, 3),
conv_i($form->{id}));
do_query($form, $dbh, $query, @values);
d.description AS department, dord.language_id,
dord.shipto_id,
dord.globalproject_id, dord.delivered, dord.transaction_description,
- dord.taxzone_id, dord.taxincluded, dord.terms, dord.curr
+ dord.taxzone_id, dord.taxincluded, dord.terms, dord.curr AS currency
FROM delivery_orders dord
JOIN ${vc} cv ON (dord.${vc}_id = cv.id)
LEFT JOIN employee e ON (dord.employee_id = e.id)
}
$sth->finish();
+ # remove any trailing whitespace
+ $form->{currency} =~ s/\s*$//;
+
$form->{donumber_array} =~ s/\s*$//g;
$form->{saved_donumber} = $form->{donumber};
if ($self->{"$self->{vc}_id"}) {
# only setup currency
- ($self->{currency}) = split(/:/, $self->{currencies});
+ ($self->{currency}) = split(/:/, $self->{currencies}) if !$self->{currency};
} else {
do_query($form, $dbh, qq|UPDATE ar SET storno = 'f', paid = 0 WHERE id = ?|, $invoice_id);
}
- # delete AR record
- do_query($form, $dbh, qq|DELETE FROM ar WHERE id = ?|, @values);
-
# delete spool files
my @spoolfiles = selectall_array_query($form, $dbh, qq|SELECT spoolfile FROM status WHERE trans_id = ?|, @values);
- # delete status entries
- do_query($form, $dbh, qq|DELETE FROM status WHERE trans_id = ?|, @values);
+ my @queries = (
+ qq|DELETE FROM status WHERE trans_id = ?|,
+ qq|DELETE FROM periodic_invoices WHERE ar_id = ?|,
+ qq|DELETE FROM ar WHERE id = ?|,
+ );
+
+ map { do_query($form, $dbh, $_, @values) } @queries;
my $rc = $dbh->commit;
my @dir = grep(!/(^\.\.?$|\..*)/, readdir(DIR));
foreach my $dir (@dir) {
- next unless open(FH, "locale/$dir/LANGUAGE");
- @language = <FH>;
- close FH;
+ next unless open(my $fh, '<:encoding(UTF-8)', "locale/$dir/LANGUAGE");
+ @language = <$fh>;
+ close $fh;
$cc{$dir} = "@language";
}
}
}
- my ($payment_id, $language_id, $taxzone_id);
+ my ($payment_id, $language_id, $taxzone_id, $currency);
if ($form->{payment_id}) {
$payment_id = $form->{payment_id};
}
if ($form->{taxzone_id}) {
$taxzone_id = $form->{taxzone_id};
}
+ if ($form->{currency}) {
+ $currency = $form->{currency};
+ }
my $cp_id = $form->{cp_id};
IR->get_vendor(\%myconfig, \%$form);
if ($taxzone_id) {
$form->{taxzone_id} = $taxzone_id;
}
+ if ($currency) {
+ $form->{currency} = $currency;
+ }
my @curr = split(/:/, $form->{currencies}); #seems to be missing
map { $form->{selectcurrency} .= "<option>$_\n" } @curr;
my $editing = $form->{id};
- $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes id shipto_id));
+ $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded currency cp_id intnotes id shipto_id));
IS->get_customer(\%myconfig, \%$form);
$form->restore_vars(qw(id));
IS->retrieve_invoice(\%myconfig, \%$form);
- $form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id shipto_id));
+ $form->restore_vars(qw(payment_id language_id taxzone_id currency intnotes cp_id shipto_id));
$form->restore_vars(qw(taxincluded)) if $form->{id};
$form->restore_vars(qw(salesman_id)) if $editing;
- Bugfix 1753: Benutzerdefinierte Variable f. Waren: bearbeitbar nicht auswählbar
- Bugfix 1738: Entwürfe können nicht gelöscht werden
- Bugfix 1759: Währung bei Kunden / Lieferanten vorbelegen
+ - Bugfix 1770: Währung / currency überlebt Workflow über Lieferschein nicht
- Bugfix 1773: SQL Fehler bei Anzeige von Angeboten
\n=<br>
[Template/LaTeX]
-order=\\ <pagebreak> & \n \r " $ <bullet> % _ # ^ { } < > £ ± ² ³ ° § ® ©
+order=\\ <pagebreak> & \n \r " $ <bullet> % _ # ^ { } < > £ ± ² ³ ° § ® © \xad
\\=\\textbackslash\s
<pagebreak>=
"=''
°=$^\\circ$
§=\\S
®=\\textregistered
-©=\\textcopyright
+©=\\textcopyrighta
+\xad=\\-
+
[Template/OpenDocument]
order=& < > " ' \x80 \n \r
<input type="hidden" name="cc" value="[% HTML.escape(cc) %]">
<input type="hidden" name="closed" value="[% HTML.escape(closed) %]">
<input type="hidden" name="convert_from_oe_ids" value="[% HTML.escape(convert_from_oe_ids) %]">
- <input type="hidden" name="curr" value="[% HTML.escape(curr) %]">
+ <input type="hidden" name="currency" value="[% HTML.escape(currency) %]">
<input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
<input type="hidden" name="discount" value="[% HTML.escape(discount) %]">
<input type="hidden" name="dunning_amount" value="[% HTML.escape(dunning_amount) %]">