X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Foe.pl;h=ac4dcf5b4c6b425add16835e4316bc20fc507569;hb=f5e0cdb2123962a7ced378468c6fb29c384c0d4a;hp=8b6a403f9fa621b4ccc02e0f37fb86c0f77e32af;hpb=50305a6d2b85e49fdfaa0c58be8094745762ba8d;p=kivitendo-erp.git diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index 8b6a403f9..ac4dcf5b4 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -37,8 +37,8 @@ use SL::IR; use SL::IS; use SL::PE; -require "$form->{path}/io.pl"; -require "$form->{path}/arap.pl"; +require "bin/mozilla/io.pl"; +require "bin/mozilla/arap.pl"; 1; @@ -98,7 +98,7 @@ sub add { set_headings("add"); $form->{callback} = - "$form->{script}?action=add&type=$form->{type}&vc=$form->{vc}&login=$form->{login}&path=$form->{path}&password=$form->{password}" + "$form->{script}?action=add&type=$form->{type}&vc=$form->{vc}&login=$form->{login}&password=$form->{password}" unless $form->{callback}; &order_links; @@ -120,19 +120,19 @@ sub edit { # editing without stuff to edit? try adding it first if ($form->{rowcount}) { - map { $id++ if $form->{"id_$_"} } (1 .. $form->{rowcount}); + map { $id++ if $form->{"multi_id_$_"} } (1 .. $form->{rowcount}); if (!$id) { # reset rowcount undef $form->{rowcount}; &add; + $lxdebug->leave_sub(); return; } - } else { - if (!$form->{id}) { - &add; - return; - } + } elsif (!$form->{id}) { + &add; + $lxdebug->leave_sub(); + return; } if ($form->{print_and_save}) { @@ -157,15 +157,15 @@ sub edit { sub order_links { $lxdebug->enter_sub(); - # get customer/vendor $form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP"); # retrieve order/quotation - $form->{webdav} = $webdav; - # set jscalendar - $form->{jscalendar} = $jscalendar; + $form->{webdav} = $webdav; + $form->{jsscript} = 1; + + my $editing = $form->{id}; OE->retrieve(\%myconfig, \%$form); @@ -179,6 +179,8 @@ sub order_links { $taxzone_id = $form->{taxzone_id}; } + $salesman_id = $form->{salesman_id} if ($editing); + # if multiple rowcounts (== collective order) then check if the # there were more than one customer (in that case OE::retrieve removes @@ -227,6 +229,7 @@ sub order_links { } $form->{cp_id} = $cp_id; + if ($payment_id) { $form->{payment_id} = $payment_id; } @@ -236,7 +239,7 @@ sub order_links { if ($taxzone_id) { $form->{taxzone_id} = $taxzone_id; } - $form->{intnotes} = $intnotes; + $form->{intnotes} = $intnotes if $intnotes; ($form->{ $form->{vc} }) = split /--/, $form->{ $form->{vc} }; $form->{"old$form->{vc}"} = qq|$form->{$form->{vc}}--$form->{"$form->{vc}_id"}|; @@ -245,18 +248,11 @@ sub order_links { if (@{ $form->{"all_$form->{vc}"} }) { $form->{ $form->{vc} } = qq|$form->{$form->{vc}}--$form->{"$form->{vc}_id"}|; - map { $form->{"select$form->{vc}"} .= "\n" } (@{ $form->{"all_$form->{vc}"} }); } - # currencies - @curr = split(/:/, $form->{currencies}); - chomp $curr[0]; - $form->{defaultcurrency} = $curr[0]; - $form->{currency} = $form->{defaultcurrency} unless $form->{currency}; - - map { $form->{selectcurrency} .= "\n" } (@{ $form->{all_departments} }); } $form->{employee} = "$form->{employee}--$form->{employee_id}"; - # sales staff - if (@{ $form->{all_employees} }) { - $form->{selectemployee} = ""; - map { $form->{selectemployee} .= "|; - foreach $item (@{ $form->{payment_terms} }) { - if ($form->{payment_id} eq $item->{id}) { - $payment .= qq||; - } else { - $payment .= qq||; - } - } - if ($form->{jsscript}) { - - # with JavaScript Calendar - $button1 = qq| - {transdate}> - text('button') . qq|> - |; - $button2 = qq| - {reqdate}> - text('button') . qq|> - |; - - #write Trigger - $jsscript = - Form->write_trigger(\%myconfig, "2", "transdate", "BL", "trigger1", - "reqdate", "BL", "trigger2"); + $button1 = qq| + + text('button') . qq|> + |; + $button2 = qq| + + text('button') . qq|> + |; - } else { + #write Trigger + $jsscript = + Form->write_trigger(\%myconfig, "2", "transdate", "BL", "trigger1", + "reqdate", "BL", "trigger2"); + + my @tmp; - # without JavaScript Calendar - $button1 = qq| - {transdate}>|; - $button2 = qq| - {reqdate}>|; + if (($form->{"type"} eq "sales_order") || + ($form->{"type"} eq "purchase_order")) { + push(@tmp, qq| + + |); } if ($form->{id}) { - $openclosed = qq| - - + push(@tmp, qq| - -|; - - if (($form->{"type"} eq "sales_order") || - ($form->{"type"} eq "purchase_order")) { - $openclosed .= qq| - - -|; - } + |); + } + if (@tmp) { $openclosed .= qq| + + | . join("\n", @tmp) . qq| |; } # set option selected - foreach $item ($form->{vc}, currency, department, employee) { + foreach $item ($form->{vc}, currency, department, ($form->{vc} eq "customer" ? customer : vendor)) { $form->{"select$item"} =~ s/ selected//; $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; @@ -410,40 +383,100 @@ sub form_header { #quote select[customer|vendor] Bug 133 $form->{"select$form->{vc}"} = $form->quote($form->{"select$form->{vc}"}); + #substitute \n and \r to \s (bug 543) + $form->{"select$form->{vc}"} =~ s/[\n\r]/ /g; + my @old_project_ids = ($form->{"globalproject_id"}); map({ push(@old_project_ids, $form->{"project_id_$_"}) if ($form->{"project_id_$_"}); } (1..$form->{"rowcount"})); + my $vc = $form->{vc} eq "customer" ? "customers" : "vendors"; $form->get_lists("contacts" => "ALL_CONTACTS", "shipto" => "ALL_SHIPTO", "projects" => { "key" => "ALL_PROJECTS", "all" => 0, - "old_id" => \@old_project_ids }); - - my (%labels, @values); + "old_id" => \@old_project_ids }, + "employees" => "ALL_EMPLOYEES", + "salesmen" => "ALL_SALESMEN", + "taxzones" => "ALL_TAXZONES", + "payments" => "ALL_PAYMENTS", + "currencies" => "ALL_CURRENCIES", + $vc => "ALL_" . uc($vc)); + + my %labels; + my @values = (undef); foreach my $item (@{ $form->{"ALL_CONTACTS"} }) { push(@values, $item->{"cp_id"}); $labels{$item->{"cp_id"}} = $item->{"cp_name"} . ($item->{"cp_abteilung"} ? " ($item->{cp_abteilung})" : ""); } - my $contact = - NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, - '-labels' => \%labels, '-default' => $form->{"cp_id"})); + + my $contact; + if (scalar @values > 1) { + $contact = qq| + + | . $locale->text('Contact Person') . qq| + | . + NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px', + '-labels' => \%labels, '-default' => $form->{"cp_id"})) + . qq| + + |; + } + + %labels = (); + @values = (); + + foreach my $item (@{ $form->{($form->{vc} eq "customer" ? "ALL_CUSTOMERS" : "ALL_VENDORS")}}) { + push(@values, $item->{"name"}.qq|--|.$item->{"id"}); + $labels{$item->{"name"}.qq|--|.$item->{"id"}} = $item->{name}; + } + + $vc = qq| + {vc}_id"}) . qq|"> + {vc}"}) . qq|"> + | . $locale->text(ucfirst($form->{vc})) . qq| + | . + (($myconfig{vclimit} <= scalar(@values)) + ? qq|{vc}"} =~ /^(.*)\-\-.*$/)) . qq|" name="$form->{vc}">| + : (NTI($cgi->popup_menu('-name' => "$form->{vc}", '-default' => $form->{"old$form->{vc}"}, + '-onChange' => 'document.getElementById(\'update_button\').click();', + '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq| + + {vc}"}) . qq|">|; + + %labels = (); + @values = (""); + foreach my $item (@{ $form->{"ALL_PAYMENTS"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = $item->{"description"}; + } + + $payments = qq| + | . $locale->text('Payment Terms') . qq| + | . + NTI($cgi->popup_menu('-name' => 'payment_id', '-values' => \@values, '-style' => 'width: 250px', + '-labels' => \%labels, '-default' => $form->{payment_id})) + . qq||; %labels = (); @values = (""); foreach my $item (@{ $form->{"ALL_SHIPTO"} }) { push(@values, $item->{"shipto_id"}); - $labels{$item->{"shipto_id"}} = - $item->{"shiptoname"} . " " . $item->{"shiptodepartment_1"}; + $labels{$item->{"shipto_id"}} = join "; ", grep { $_ } map { $item->{"shipto${_}" } } qw(name department_1 street city); } - my $shipto = qq| - | . $locale->text('Shipping Address') . qq| - | . - NTI($cgi->popup_menu('-name' => 'shipto_id', '-values' => \@values, - '-labels' => \%labels, '-default' => $form->{"shipto_id"})) + my $shipto; + if (scalar @values > 1) { + $shipto = qq| + + | . $locale->text('Shipping Address') . qq| + | . + NTI($cgi->popup_menu('-name' => 'shipto_id', '-values' => \@values, '-style' => 'width: 250px', + '-labels' => \%labels, '-default' => $form->{"shipto_id"})) . qq||; + } %labels = (); @values = (""); @@ -455,6 +488,77 @@ sub form_header { NTI($cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values, '-labels' => \%labels, '-default' => $form->{"globalproject_id"})); + + my $salesmen = ""; + %labels = (); + @values = (); + if ($form->{type} =~ /^sales_/) { + foreach my $item (@{ $form->{"ALL_SALESMEN"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = ($item->{"name"} ne "" ? $item->{"name"} : $item->{"login"}); + } + $salesmen = + qq| + | . $locale->text('Salesman') . qq| + | . + NTI($cgi->popup_menu('-name' => 'salesman_id', '-default' => $form->{"salesman_id"} ? $form->{"salesman_id"} : $form->{"employee_id"}, + '-values' => \@values, '-labels' => \%labels)) + . qq| + |; + } + + %labels = (); + @values = (); + foreach my $item (@{ $form->{"ALL_EMPLOYEES"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = $item->{"name"} ne "" ? $item->{"name"} : $item->{"login"}; + } + + my $employee = qq| + + | . $locale->text('Employee') . qq| + | . + NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"}, + '-values' => \@values, '-labels' => \%labels)) . qq| + + |; + + %labels = (); + @values = (); + foreach my $item (@{ $form->{"ALL_TAXZONES"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = $item->{"description"}; + } + + $taxzone = qq| + + | . $locale->text('Steuersatz') . qq| + | . + NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"}, + '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')) . qq| + + |; + + %labels = (); + @values = (); + my $i = 0; + foreach my $item (@{ $form->{"ALL_CURRENCIES"} }) { + push(@values, $item); + $labels{$item} = $item; + } + + $form->{currency} = $form->{defaultcurrency} unless $form->{currency}; + my $currencies; + if (scalar @values) { + $currencies = qq| + + | . $locale->text('Currency') . qq| + | . + NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"}, + '-values' => \@values, '-labels' => \%labels)) . qq| + + |; + } $form->{exchangerate} = $form->format_amount(\%myconfig, $form->{exchangerate}); @@ -490,71 +594,31 @@ sub form_header { } } - $vclabel = ucfirst $form->{vc}; - $vclabel = $locale->text($vclabel); - - - if ($form->{business}) { $business = qq| - | . $locale->text('Business') . qq| - $form->{business} - | . $locale->text('Trade Discount') . qq| - | + | . ($form->{vc} eq "customer" ? $locale->text('Customer type') : $locale->text('Vendor type')) . qq| + $form->{business}; | . $locale->text('Trade Discount') . qq| | . $form->format_amount(\%myconfig, $form->{tradediscount} * 100) . qq| % - + |; } if ($form->{max_dunning_level}) { $dunning = qq| - - - - - - - - - -
| . $locale->text('Max. Dunning Level') . qq|:$form->{max_dunning_level}| . $locale->text('Dunning Amount') . qq|:| - . $form->format_amount(\%myconfig, $form->{dunning_amount},2) - . qq|
- - + + | . $locale->text('Max. Dunning Level') . qq|: + + $form->{max_dunning_level}; + | . $locale->text('Dunning Amount') . qq|: | + . $form->format_amount(\%myconfig, $form->{dunning_amount},2) + . qq| + + |; } - if (@{ $form->{TAXZONE} }) { - $form->{selecttaxzone} = ""; - foreach $item (@{ $form->{TAXZONE} }) { - if ($item->{id} == $form->{taxzone_id}) { - $form->{selecttaxzone} .= - ""; - } else { - $form->{selecttaxzone} .= - ""; - } - - } - } else { - $form->{selecttaxzone} =~ s/ selected//g; - if ($form->{taxzone_id} ne "") { - $form->{selecttaxzone} =~ s/value=$form->{taxzone_id}>/value=$form->{taxzone_id} selected>/; - } - } - - $taxzone = qq| - - | . $locale->text('Steuersatz') . qq| - - - |; - - if ($form->{type} !~ /_quotation$/) { $ordnumber = qq| @@ -585,20 +649,11 @@ sub form_header { $n = ($form->{creditremaining} =~ /-/) ? "0" : "1"; $creditremaining = qq| - - - - - - - - - - - -
| . $locale->text('Credit Limit') . qq|$form->{creditlimit}| . $locale->text('Remaining') . qq|$form->{creditremaining}
- - $shipto + $shipto + + | . $locale->text('Credit Limit') . qq| + $form->{creditlimit}; | . $locale->text('Remaining') . qq| $form->{creditremaining} + |; } else { @@ -642,46 +697,22 @@ sub form_header { |; } - $vc = - ($form->{"select$form->{vc}"}) - ? qq|\n{vc}"}">| - : qq|{vc} value="$form->{$form->{vc}}" size=35>|; - $department = qq| | . $locale->text('Department') . qq| - + - -| if $form->{selectdepartment}; - - $employee = qq| - -|; + | if $form->{selectdepartment}; if ($form->{type} eq 'sales_order') { if ($form->{selectemployee}) { - $employee = qq| - {customer_klass}> - - | . $locale->text('Salesperson') . qq| - - - - -|; + $employee .= qq| + |; } } else { - $employee = qq| - {customer_klass}> - - | . $locale->text('Employee') . qq| - - - - -|; + $employee .= qq| + |; } if ($form->{resubmit} && ($form->{format} eq "html")) { $onload = @@ -689,53 +720,41 @@ sub form_header { } elsif ($form->{resubmit}) { $onload = qq|document.oe.submit()|; } else { - $onload = "fokus()"; + $onload = "focus()"; } $credittext = $locale->text('Credit Limit exceeded!!!'); if ($creditwarning) { $onload = qq|alert('$credittext')|; } - + + $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|; + $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|; + $form->{"javascript"} .= qq||; # show history button js $form->{javascript} .= qq||; #/show history button js + $form->{javascript} .= qq||; + $form->header; print qq|
{script}> + +|; -{id}> -{action}> - -{type}> -{formname}> -{media}> -{format}> -{proforma}> - - - - - -{vc}> - - - -{discount}> -{creditlimit}> -{creditremaining}> + $form->hide_form(qw(id action type vc formname media format proforma queued printed emailed + title discount creditlimit creditremaining tradediscount business + max_dunning_level dunning_amount)); -{tradediscount}> -{business}> - + print qq| @@ -749,24 +768,15 @@ sub form_header { @@ -1123,7 +1136,6 @@ sub form_footer { -{path}> {login}> {password}> @@ -1143,9 +1155,17 @@ sub update { map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining); $form->{update} = 1; - + + if($form->{payment_id}) { + $payment_id = $form->{payment_id}; + } + &check_name($form->{vc}); - + + if($form->{payment_id} eq "") { + $form->{payment_id} = $payment_id; + } + $buysell = 'buy'; $buysell = 'sell' if ($form->{vc} eq 'vendor'); $form->{exchangerate} = $exchangerate @@ -1297,7 +1317,7 @@ sub search { $form->{vc} = 'customer'; $ordlabel = $locale->text('Order Number'); $ordnumber = 'ordnumber'; - $employee = $locale->text('Salesperson'); + $employee = $locale->text('Employee'); } if ($form->{type} eq 'sales_quotation') { @@ -1312,27 +1332,13 @@ sub search { $form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP"); - map { $vc .= "\n" } (@{ $form->{all_departments} }); } @@ -1357,37 +1363,31 @@ sub search { } # use JavaScript Calendar or not - $form->{jsscript} = $jscalendar; + $form->{jsscript} = 1; $jsscript = ""; - if ($form->{jsscript}) { - - # with JavaScript Calendar - $button1 = qq| - - |; - $button2 = qq| - - |; - - #write Trigger - $jsscript = - Form->write_trigger(\%myconfig, "2", "transdatefrom", "BR", "trigger3", - "transdateto", "BL", "trigger4"); - } else { - # without JavaScript Calendar - $button1 = qq| - |; - $button2 = qq| - |; - } + $button1 = qq| + + |; + $button2 = qq| + + |; + + #write Trigger + $jsscript = + Form->write_trigger(\%myconfig, "2", "transdatefrom", "BR", "trigger3", + "transdateto", "BL", "trigger4"); + + my $vc = $form->{vc} eq "customer" ? "customers" : "vendors"; $form->get_lists("projects" => { "key" => "ALL_PROJECTS", - "all" => 1 }); + "all" => 1 }, + "employees" => "ALL_EMPLOYEES", + $vc => "ALL_" . uc($vc)); my %labels = (); my @values = (""); @@ -1399,6 +1399,40 @@ sub search { NTI($cgi->popup_menu('-name' => 'project_id', '-values' => \@values, '-labels' => \%labels)); + #employees + %labels = (); + @values = (); + foreach my $item (@{ $form->{"ALL_EMPLOYEES"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = $item->{"name"} ne "" ? $item->{"name"} : $item->{"login"}; + } + + my $employee_block = qq| + + + + |; + + %labels = (); + @values = (""); + + foreach my $item (@{ $form->{($form->{vc} eq "customer" ? "ALL_CUSTOMERS" : "ALL_VENDORS")}}) { + push(@values, $item->{name}.qq|--|.$item->{"id"}); + $labels{$item->{name}.qq|--|.$item->{"id"}} = $item->{"name"}; + } + + my $vc_label = $form->{vc} eq "customer" ? $locale->text('Customer') : $locale->text('Vendor'); + $vc = + $myconfig{vclimit} <= scalar(@values) + ? qq|{vc}"} =~ /^(.*)\-\-.*$/)) . qq|" name="$form->{vc}">| + : NTI($cgi->popup_menu('-name' => "$form->{vc}", + '-default' => $form->{"old$form->{vc}"}, + '-onChange' => 'document.getElementById(\'update_button\').click();', + '-values' => \@values, + '-labels' => \%labels)); $form->header; print qq| @@ -1415,7 +1449,7 @@ sub search {
- - - {vc}_id value=$form->{"$form->{vc}_id"}> - {vc}"}"> - - - + $vc + $contact $creditremaining $business $dunning $taxzone $department - - - - {defaultcurrency}> + $currencies $exchangerate @@ -776,7 +786,11 @@ sub form_header { - |; + + + + + |; # # + $payments + +
$vclabel$vc| - . $locale->text('Contact Person') . qq|$contact
| . $locale->text('Currency') . qq|
| . $locale->text('Ship via') . qq|
| . $locale->text('Transaction description') . qq|
# @@ -803,6 +817,7 @@ print qq|
$openclosed $employee + $salesmen $ordnumber @@ -966,10 +981,10 @@ sub form_footer { - - -
| . $locale->text('Project Number') . qq|$notes $intnotes
| . $locale->text('Payment Terms') . qq|
+
$taxincluded @@ -1021,14 +1036,12 @@ sub form_footer { print $webdav_list; } - print qq| -{jscalendar}> -|; + print qq|
|; - &print_options; + print_options(); print qq| - text('button') . qq|> - text('button') . qq|> + text('button') . qq|> + text('button') . qq|>
| . $locale->text('Employee') . qq|| . + NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"}, + '-values' => \@values, '-labels' => \%labels)) . qq| +
- + $department @@ -1423,6 +1457,11 @@ sub search { + $employee_block + + + + @@ -1455,7 +1494,7 @@ sub search { . $locale->text('Required by') . qq| - + @@ -1468,8 +1507,12 @@ sub search { . $locale->text('Tax') . qq| + + + |; + $column_header{transaction_description} = + qq||; $column_header{ids} = qq||; @@ -1727,13 +1771,13 @@ sub orders { $subtotalamount += $oe->{amount}; $column_data{ids} = - qq||; + qq||; $column_data{id} = ""; $column_data{transdate} = ""; $column_data{reqdate} = ""; $column_data{$ordnumber} = - ""; + ""; $column_data{name} = ""; $column_data{employee} = ""; @@ -1750,6 +1794,7 @@ sub orders { $column_data{"delivered"} = ""; + $column_data{transaction_description} = ""; $i++; $i %= 2; @@ -1801,7 +1846,6 @@ sub orders { if ($form->{type} =~ /sales_order/) { print qq| - @@ -1824,7 +1868,6 @@ sub orders { {type}> {vc}> -{path}> {login}> {password}> @@ -1879,6 +1922,10 @@ sub save_and_close { $form->isblank("transdate", $locale->text('Quotation Date missing!')); } + my $idx = $form->{type} =~ /_quotation$/ ? "quonumber" : "ordnumber"; + $form->{$idx} =~ s/^\s*//g; + $form->{$idx} =~ s/\s*$//g; + $msg = ucfirst $form->{vc}; $form->isblank($form->{vc}, $locale->text($msg . " missing!")); @@ -1889,9 +1936,16 @@ sub save_and_close { if ($form->{currency} ne $form->{defaultcurrency}); &validate_items; - + + if($form->{payment_id}) { + $payment_id = $form->{payment_id}; + } + # if the name changed get new values if (&check_name($form->{vc})) { + if($form->{payment_id} eq "") { + $form->{payment_id} = $payment_id; + } &update; exit; } @@ -1942,6 +1996,7 @@ sub save_and_close { # saving the history if(!exists $form->{addition}) { + $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "SAVED"; $form->save_history($form->dbconnect(\%myconfig)); } @@ -1962,6 +2017,10 @@ sub save { $form->isblank("transdate", $locale->text('Quotation Date missing!')); } + my $idx = $form->{type} =~ /_quotation$/ ? "quonumber" : "ordnumber"; + $form->{$idx} =~ s/^\s*//g; + $form->{$idx} =~ s/\s*$//g; + $msg = ucfirst $form->{vc}; $form->isblank($form->{vc}, $locale->text($msg . " missing!")); @@ -1972,9 +2031,16 @@ sub save { if ($form->{currency} ne $form->{defaultcurrency}); &validate_items; - + + if($form->{payment_id}) { + $payment_id = $form->{payment_id}; + } + # if the name changed get new values if (&check_name($form->{vc})) { + if($form->{payment_id} eq "") { + $form->{payment_id} = $payment_id; + } &update; exit; } @@ -2023,6 +2089,7 @@ sub save { # saving the history if(!exists $form->{addition}) { + $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "SAVED"; $form->save_history($form->dbconnect(\%myconfig)); } @@ -2069,8 +2136,11 @@ sub delete {

$msg $form->{$ordnumber}

+ + @@ -2080,7 +2150,7 @@ sub delete { $lxdebug->leave_sub(); } -sub yes { +sub delete_order_quotation { $lxdebug->enter_sub(); if ($form->{type} =~ /_order$/) { @@ -2091,13 +2161,15 @@ sub yes { $err = $locale->text('Cannot delete quotation!'); } if (OE->delete(\%myconfig, \%$form, $spool)){ - $form->redirect($msg); # saving the history if(!exists $form->{addition}) { + $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "DELETED"; $form->save_history($form->dbconnect(\%myconfig)); } # /saving the history + $form->info($msg); + exit(); } $form->error($err); @@ -2125,9 +2197,16 @@ sub invoice { $form->{ordnumber} = ""; $form->{quodate} = $form->{transdate}; } - + + if($form->{payment_id}) { + $payment_id = $form->{payment_id}; + } + # if the name changed get new values if (&check_name($form->{vc})) { + if($form->{payment_id} eq "") { + $form->{payment_id} = $payment_id; + } &update; exit; } @@ -2207,7 +2286,7 @@ sub invoice { # locale messages $locale = new Locale "$myconfig{countrycode}", "$script"; - require "$form->{path}/$form->{script}"; + require "bin/mozilla/$form->{script}"; map { $form->{"select$_"} = "" } ($form->{vc}, currency); @@ -2288,7 +2367,6 @@ sub backorder_exchangerate { print qq| -{path}> {login}> {password}> @@ -2424,6 +2502,8 @@ sub save_as_new { # Let Lx-Office assign a new order number if the user hasn't changed the # previous one. If it has been changed manually then use it as-is. my $idx = $form->{type} =~ /_quotation$/ ? "quonumber" : "ordnumber"; + $form->{$idx} =~ s/^\s*//g; + $form->{$idx} =~ s/\s*$//g; if ($form->{saved_xyznumber} && ($form->{saved_xyznumber} eq $form->{$idx})) { delete($form->{$idx}); @@ -2434,14 +2514,70 @@ sub save_as_new { $lxdebug->leave_sub(); } +sub check_for_direct_delivery_yes { + $lxdebug->enter_sub(); + + $form->{direct_delivery_checked} = 1; + delete @{$form}{grep /^shipto/, keys %{ $form }}; + map { s/^CFDD_//; $form->{$_} = $form->{"CFDD_${_}"} } grep /^CFDD_/, keys %{ $form }; + $form->{shipto} = 1; + purchase_order(); + $lxdebug->leave_sub(); +} + +sub check_for_direct_delivery_no { + $lxdebug->enter_sub(); + + $form->{direct_delivery_checked} = 1; + delete @{$form}{grep /^shipto/, keys %{ $form }}; + purchase_order(); + + $lxdebug->leave_sub(); +} + +sub check_for_direct_delivery { + $lxdebug->enter_sub(); + + if ($form->{direct_delivery_checked} + || (!$form->{shiptoname} && !$form->{shiptostreet} && !$form->{shipto_id})) { + $lxdebug->leave_sub(); + return; + } + + if ($form->{shipto_id}) { + Common->get_shipto_by_id(\%myconfig, $form, $form->{shipto_id}, "CFDD_"); + + } else { + map { $form->{"CFDD_${_}"} = $form->{$_ } } grep /^shipto/, keys %{ $form }; + } + + delete $form->{action}; + $form->{VARIABLES} = [ map { { "key" => $_, "value" => $form->{$_} } } grep { ref $_ eq "" } keys %{ $form } ]; + + $form->header(); + print $form->parse_html_template("oe/check_for_direct_delivery"); + + $lxdebug->leave_sub(); + + exit 0; +} + sub purchase_order { $lxdebug->enter_sub(); + if ($form->{type} eq 'sales_order') { + check_for_direct_delivery(); + } + if ( $form->{type} eq 'sales_quotation' || $form->{type} eq 'request_quotation') { OE->close_order(\%myconfig, \%$form); } + if ($form->{type} =~ /^sales_/) { + delete($form->{ordnumber}); + } + $form->{cp_id} *= 1; $form->{title} = $locale->text('Add Purchase Order'); @@ -2461,6 +2597,10 @@ sub sales_order { OE->close_order(\%myconfig, $form); } + if ($form->{type} eq "purchase_order") { + delete($form->{ordnumber}); + } + $form->{cp_id} *= 1; $form->{title} = $locale->text('Add Sales Order'); @@ -2509,3 +2649,33 @@ sub poso { $lxdebug->leave_sub(); } +sub e_mail { + $lxdebug->enter_sub(); + + $form->{print_and_save} = 1; + + if (!$form->{id}) { + $print_post = 1; + + my $saved_form = save_form(); + + save(); + + my %saved_vars; + map({ $saved_vars{$_} = $form->{$_}; } qw(id ordnumber quonumber)); + restore_form($saved_form); + map({ $form->{$_} = $saved_vars{$_}; } qw(id ordnumber quonumber)); + } + + edit_e_mail(); + + $lxdebug->leave_sub(); +} + +sub yes { + call_sub($form->{yes_nextsub}); +} + +sub no { + call_sub($form->{no_nextsub}); +}

$vclabel$vc_label $vc
$ordlabel
| . $locale->text('Transaction description') . qq|
| . $locale->text("Project Number") . qq| $projectnumber
$vclabel $vc_label $employee | . $locale->text('Ship via') . qq| | . $locale->text('Total') . qq|
| . $locale->text('Project Number') . qq| | + . $locale->text('Transaction description') . qq|
| @@ -1488,7 +1531,6 @@ $jsscript
-{path}> {login}> {password}> {vc}> @@ -1508,35 +1550,35 @@ $jsscript sub orders { $lxdebug->enter_sub(); - # split vendor / customer - ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = - split(/--/, $form->{ $form->{vc} }); - - OE->transactions(\%myconfig, \%$form); - $ordnumber = ($form->{type} =~ /_order$/) ? "ordnumber" : "quonumber"; - $number = $form->escape($form->{$ordnumber}); - $name = $form->escape($form->{ $form->{vc} }); - $department = $form->escape($form->{department}); - # construct href - $href = - "$form->{script}?path=$form->{path}&action=orders&type=$form->{type}&vc=$form->{vc}&login=$form->{login}&password=$form->{password}&transdatefrom=$form->{transdatefrom}&transdateto=$form->{transdateto}&open=$form->{open}&closed=$form->{closed}¬delivered=$form->{notdelivered}&delivered=$form->{delivered}&$ordnumber=$number&$form->{vc}=$name&department=$department"; + my @fields = + qw(type vc login password transdatefrom transdateto + open closed notdelivered delivered department + transaction_description); + push @fields, $form->{vc}; + $href = "$form->{script}?action=orders&" + . join("&", map { "${_}=" . E($form->{$_}) } @fields) + . "&${ordnumber}=" . E($form->{$ordnumber}); + $callback = $href; - # construct callback - $number = $form->escape($form->{$ordnumber}, 1); - $name = $form->escape($form->{ $form->{vc} }, 1); - $department = $form->escape($form->{department}, 1); + # split vendor / customer + ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = + split(/--/, $form->{ $form->{vc} }); - $callback = - "$form->{script}?path=$form->{path}&action=orders&type=$form->{type}&vc=$form->{vc}&login=$form->{login}&password=$form->{password}&transdatefrom=$form->{transdatefrom}&transdateto=$form->{transdateto}&open=$form->{open}&closed=$form->{closed}¬delivered=$form->{notdelivered}&delivered=$form->{delivered}&$ordnumber=$number&$form->{vc}=$name&department=$department"; + OE->transactions(\%myconfig, \%$form); - @columns = - $form->sort_columns("transdate", "reqdate", "id", "$ordnumber", - "name", "netamount", "tax", "amount", - "curr", "employee", "shipvia", "globalprojectnumber", - "open", "closed", "delivered"); + @columns = ( + "transdate", "reqdate", + "id", "$ordnumber", + "name", "netamount", + "tax", "amount", + "curr", "employee", + "shipvia", "globalprojectnumber", + "transaction_description", "open", + "closed", "delivered" + ); $form->{l_open} = $form->{l_closed} = "Y" if ($form->{open} && $form->{closed}); @@ -1576,11 +1618,10 @@ sub orders { if ($form->{vc} eq 'customer') { if ($form->{type} eq 'sales_order') { $form->{title} = $locale->text('Sales Orders'); - $employee = $locale->text('Salesperson'); } else { $form->{title} = $locale->text('Quotations'); - $employee = $locale->text('Employee'); } + $employee = $locale->text('Employee'); $name = $locale->text('Customer'); } @@ -1631,6 +1672,9 @@ sub orders { $column_header{employee} = qq|
$employee| + . $locale->text("Transaction description") . qq|$oe->{id}$oe->{transdate} $oe->{reqdate} {path}&action=$action&type=$form->{type}&id=$oe->{id}&vc=$form->{vc}&login=$form->{login}&password=$form->{password}&callback=$callback_escaped>$oe->{$ordnumber}{type}&id=$oe->{id}&vc=$form->{vc}&login=$form->{login}&password=$form->{password}&callback=$callback_escaped>$oe->{$ordnumber}$oe->{name}$oe->{employee} " . ($oe->{"delivered"} ? $locale->text("Yes") : $locale->text("No")) . "" . H($oe->{transaction_description}) . "