X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/becc49b1374f60cd4c8b389490859e92a99ae572..487d4f1f6ccd3e22c05469f679bf5d0685914611:/SL/Form.pm
diff --git a/SL/Form.pm b/SL/Form.pm
index d6cbc0b7c..f82a70f66 100644
--- a/SL/Form.pm
+++ b/SL/Form.pm
@@ -1,4 +1,4 @@
-#=====================================================================
+#====================================================================
# LX-Office ERP
# Copyright (C) 2004
# Based on SQL-Ledger Version 2.1.9
@@ -382,8 +382,8 @@ function fokus(){document.$self->{fokus}.focus();}
$jsscript = qq|
-
-
+
+
$self->{javascript}
|;
}
@@ -412,14 +412,14 @@ function fokus(){document.$self->{fokus}.focus();}
$main::lxdebug->leave_sub();
}
-# write Trigger JavaScript-Code ($qty = 1 - only one Trigger)
+# write Trigger JavaScript-Code ($qty = quantity of Triggers)
+# changed it to accept an arbitrary number of triggers - sschoeling
sub write_trigger {
$main::lxdebug->enter_sub();
- my ($self, $myconfig, $qty,
- $inputField_1, $align_1, $button_1,
- $inputField_2, $align_2, $button_2)
- = @_;
+ my $self = shift;
+ my $myconfig = shift;
+ my $qty = shift;
# set dateform for jsscript
# default
@@ -448,35 +448,21 @@ sub write_trigger {
}
}
- $trigger_1 = qq|
+ while ($#_ >= 2) {
+ push @triggers, qq|
Calendar.setup(
- {
- inputField : "$inputField_1",
- ifFormat :"$ifFormat",
- align : "$align_1",
- button : "$button_1"
- }
- );
+ {
+ inputField : "|.(shift).qq|",
+ ifFormat :"$ifFormat",
+ align : "|.(shift).qq|",
+ button : "|.(shift).qq|"
+ }
+ );
|;
-
- if ($qty == 2) {
- $trigger_2 = qq|
- Calendar.setup(
- {
- inputField : "$inputField_2",
- ifFormat :"$ifFormat",
- align : "$align_2",
- button : "$button_2"
- }
- );
- |;
}
$jsscript = qq|
|;
@@ -519,6 +505,12 @@ sub format_amount {
$main::lxdebug->enter_sub();
my ($self, $myconfig, $amount, $places, $dash) = @_;
+
+ #Workaround for $format_amount calls without $places
+ if (!defined $places){
+ (my $dec) = ($amount =~ /\.(\d+)/);
+ $places = length $dec;
+ }
if ($places =~ /\d/) {
$amount = $self->round_amount($amount, $places);
@@ -584,19 +576,44 @@ sub parse_amount {
$main::lxdebug->enter_sub();
my ($self, $myconfig, $amount) = @_;
-
- if (!(substr($amount, -3, 1) eq ".")) {
- if ( ($myconfig->{numberformat} eq '1.000,00')
- || ($myconfig->{numberformat} eq '1000,00')) {
- $amount =~ s/\.//g;
- $amount =~ s/,/\./;
- }
-
- $amount =~ s/,//g;
- }
-
+ $main::lxdebug->message(LXDebug::DEBUG2, "Start amount: $amount");
+
+ if ($myconfig->{in_numberformat} == 1){
+ # Extra input number format 1000.00 or 1000,00
+ $main::lxdebug->message(LXDebug::DEBUG2, "in_numberformat: " . $main::locale->text('1000,00 or 1000.00'));
+ $amount =~ s/,/\./g;
+ #$main::lxdebug->message(LXDebug::DEBUG2, "1.Parsed Number: $amount") if ($amount);
+ $amount = scalar reverse $amount;
+ #$main::lxdebug->message(LXDebug::DEBUG2, "2.Parsed Number: $amount") if ($amount);
+ $amount =~ s/\./DOT/;
+ #$main::lxdebug->message(LXDebug::DEBUG2, "3.Parsed Number: $amount") if ($amount);
+ $amount =~ s/\.//g;
+ #$main::lxdebug->message(LXDebug::DEBUG2, "4.Parsed Number: $amount") if ($amount);
+ $amount =~ s/DOT/\./;
+ #$main::lxdebug->message(LXDebug::DEBUG2, "5.Parsed Number:" . $amount) if ($amount);
+ $amount = scalar reverse $amount ;
+ $main::lxdebug->message(LXDebug::DEBUG2, "Parsed amount:" . $amount . "\n");
+
+ return ($amount * 1);
+
+ }
+ $main::lxdebug->message(LXDebug::DEBUG2, "in_numberformat: " . $main::locale->text('equal Outputformat'));
+ $main::lxdebug->message(LXDebug::DEBUG2, " = numberformat: $myconfig->{numberformat}");
+ if ( ($myconfig->{numberformat} eq '1.000,00')
+ || ($myconfig->{numberformat} eq '1000,00')) {
+ $amount =~ s/\.//g;
+ $amount =~ s/,/\./;
+ }
+
+ if ($myconfig->{numberformat} eq "1'000.00") {
+ $amount =~ s/'//g;
+ }
+
+ $amount =~ s/,//g;
+
+ $main::lxdebug->message(LXDebug::DEBUG2, "Parsed amount:" . $amount. "\n") if ($amount);
$main::lxdebug->leave_sub();
-
+
return ($amount * 1);
}
@@ -846,6 +863,7 @@ sub parse_template {
}
s/<%(.+?)%>/$self->{$1}/g;
+ s/<\/nobr>/ /g;
print OUT;
}
@@ -1030,7 +1048,7 @@ sub format_string {
next unless ($self->{$field} =~ /\/);
$self->{$field} =~ s/\//g;
if ($field =~ /.*_(\d+)$/) {
- if ($self->{"_forced_pagebreaks"}) {
+ if (!$self->{"_forced_pagebreaks"}) {
$self->{"_forced_pagebreaks"} = [];
}
push(@{ $self->{"_forced_pagebreaks"} }, "$1");
@@ -1100,9 +1118,6 @@ sub format_string {
'u' => 'underline');
foreach my $field (@fields) {
- if ($field =~ /descrip/) {
- print(STDERR "QFT: ${field}: " . $self->{$field} . "\n");
- }
foreach my $key (keys(%markup_replace)) {
my $new = $markup_replace{$key};
$self->{$field} =~
@@ -1280,6 +1295,11 @@ sub get_exchangerate {
$main::lxdebug->enter_sub();
my ($self, $dbh, $curr, $transdate, $fld) = @_;
+
+ unless ($transdate) {
+ $main::lxdebug->leave_sub();
+ return "";
+ }
my $query = qq|SELECT e.$fld FROM exchangerate e
WHERE e.curr = '$curr'
@@ -1597,7 +1617,7 @@ sub create_links {
# now get the account numbers
$query =
- qq|SELECT c.accno, SUBSTRING(c.description,1,50) as description, c.link, c.taxkey_id
+ qq|SELECT c.accno, c.description, c.link, c.taxkey_id
FROM chart c
WHERE c.link LIKE '%$module%'
ORDER BY c.accno|;
@@ -1670,7 +1690,7 @@ sub create_links {
LEFT Join tax t ON (a.taxkey = t.taxkey)
WHERE a.trans_id = $self->{id}
AND a.fx_transaction = '0'
- ORDER BY a.transdate|;
+ ORDER BY a.oid,a.transdate|;
$sth = $dbh->prepare($query);
$sth->execute || $self->dberror($query);
@@ -1680,12 +1700,17 @@ sub create_links {
$self->{exchangerate} =
$self->get_exchangerate($dbh, $self->{currency}, $self->{transdate},
$fld);
+ my $index=0;
# store amounts in {acc_trans}{$key} for multiple accounts
while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
$ref->{exchangerate} =
$self->get_exchangerate($dbh, $self->{currency}, $ref->{transdate},
$fld);
+ if ( !($xkeyref{ $ref->{accno} } =~ /tax/)) {
+ $index++;
+ }
+ $ref->{index} = $index;
push @{ $self->{acc_trans}{ $xkeyref{ $ref->{accno} } } }, $ref;
}
@@ -1763,10 +1788,9 @@ sub lastname_used {
$where = "quotation = '1'";
}
- my $query = qq|SELECT id FROM $arap
- WHERE id IN (SELECT MAX(id) FROM $arap
+ my $query = qq|SELECT MAX(id) FROM $arap
WHERE $where
- AND ${table}_id > 0)|;
+ AND ${table}_id > 0|;
my $sth = $dbh->prepare($query);
$sth->execute || $self->dberror($query);
@@ -2120,6 +2144,38 @@ sub get_partsgroup {
}
+sub get_pricegroup {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig, $p) = @_;
+
+ my $dbh = $self->dbconnect($myconfig);
+
+ my $query = qq|SELECT p.id, p.pricegroup
+ FROM pricegroup p|;
+
+ $query .= qq|
+ ORDER BY pricegroup|;
+
+ if ($p->{all}) {
+ $query = qq|SELECT id, pricegroup FROM pricegroup
+ ORDER BY pricegroup|;
+ }
+
+ my $sth = $dbh->prepare($query);
+ $sth->execute || $self->dberror($query);
+
+ $self->{all_pricegroup} = ();
+ while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
+ push @{ $self->{all_pricegroup} }, $ref;
+ }
+ $sth->finish;
+ $dbh->disconnect;
+
+ $main::lxdebug->leave_sub();
+}
+
+
sub audittrail {
my ($self, $dbh, $myconfig, $audittrail) = @_;
@@ -2180,7 +2236,7 @@ sub audittrail {
$query = qq|INSERT INTO audittrail (trans_id, tablename, reference,
formname, action, employee_id, transdate) VALUES (
$audittrail->{id}, '$audittrail->{tablename}', |
- .$dbh->quote($audittrail->{reference}).qq|',
+ .$dbh->quote($audittrail->{reference}).qq|,
'$audittrail->{formname}', '$audittrail->{action}',
$employee_id, '$audittrail->{transdate}')|;
} else {