X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fio.pl;h=af912eeb5bad354b3944b0e4fc1ae8154f67eb37;hb=a6ce2c7f3f7ae10f7065fb86121c8d11049617ee;hp=29ddae380b96f97d4e94b729ae67dd608c0e47e0;hpb=f5abed8644dc069876b3e1cca970cb842fd50ffa;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index 29ddae380..af912eeb5 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -28,7 +28,8 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1335, USA. # ####################################################################### # @@ -49,15 +50,18 @@ use SL::CT; use SL::Locale::String qw(t8); use SL::IC; use SL::IO; +use SL::File; use SL::PriceSource; +use SL::DB::Contact; use SL::DB::Customer; use SL::DB::Default; use SL::DB::Language; use SL::DB::Printer; use SL::DB::Vendor; use SL::Helper::CreatePDF; -use SL::Helper::Flash qw(flash); +use SL::Helper::Flash; +use SL::Helper::PrintOptions; require "bin/mozilla/common.pl"; @@ -103,7 +107,6 @@ if (-f "bin/mozilla/$::myconfig{login}_io.pl") { # $locale->text('Nov') # $locale->text('Dec') use SL::IS; -use SL::PE; use SL::AM; use Data::Dumper; @@ -159,7 +162,7 @@ sub display_row { # column_index my @header_sort = qw( - runningnumber partnumber description ship ship_missing qty price_factor + runningnumber partnumber type_and_classific description ship ship_missing qty price_factor unit weight price_source sellprice discount linetotal bin stock_in_out ); @@ -169,6 +172,8 @@ sub display_row { my %column_def = ( runningnumber => { width => 5, value => $locale->text('No.'), display => 1, }, partnumber => { width => 8, value => $locale->text('Number'), display => 1, }, + type_and_classific + => { width => 2, value => $locale->text('Type'), display => 1, }, description => { width => 30, value => $locale->text('Part Description'), display => 1, }, ship => { width => 5, value => $locale->text('Delivered'), display => $is_s_p_order, }, ship_missing => { width => 5, value => $locale->text('Not delivered'), display => $show_ship_missing, }, @@ -295,12 +300,14 @@ sub display_row { my $rows = $form->numtextrows($form->{"description_$i"}, 30, 6); # quick delete single row - $column_data{runningnumber} .= q|| . + $column_data{runningnumber} = q|| . q|| . $locale->text('Remove') . q| |; $column_data{runningnumber} .= $cgi->textfield(-name => "runningnumber_$i", -id => "runningnumber_$i", -size => 5, -value => $i); # HuT $column_data{partnumber} = $cgi->textfield(-name => "partnumber_$i", -id => "partnumber_$i", -size => 12, -value => $form->{"partnumber_$i"}); + $column_data{type_and_classific} = $::request->presenter->type_abbreviation($form->{"part_type_$i"}). + $::request->presenter->classification_abbreviation($form->{"classification_id_$i"}) if $form->{"id_$i"}; $column_data{description} = (($rows > 1) # if description is too large, use a textbox instead ? $cgi->textarea( -name => "description_$i", -id => "description_$i", -default => $form->{"description_$i"}, -rows => $rows, -columns => 30) : $cgi->textfield(-name => "description_$i", -id => "description_$i", -value => $form->{"description_$i"}, -size => 30)) @@ -381,7 +388,7 @@ sub display_row { '-labels' => \%projectnumber_labels, '-default' => $form->{"project_id_$i"} )); - $column_data{reqdate} = qq||; + $column_data{reqdate} = qq||; $column_data{subtotal} = sprintf qq||, $form->{"subtotal_$i"} ? 'checked' : ''; # begin marge calculations @@ -488,7 +495,7 @@ sub display_row { HEADER => \@HEADER, }); - if (0 != ($form->{sellprice_total} * 1)) { + if (abs($form->{sellprice_total} * 1) >= 0.01) { $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100; } @@ -665,7 +672,6 @@ sub item_selected { map { $amount += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } split / /, $form->{"taxaccounts_$i"} if !$form->{taxincluded}; $form->{creditremaining} -= $amount; - $form->{"runningnumber_$i"} = $i; # format amounts @@ -1020,82 +1026,6 @@ sub request_for_quotation { quotation(); } -sub edit_e_mail { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - - _check_io_auth(); - - if ($form->{second_run}) { - $form->{print_and_post} = 0; - $form->{resubmit} = 0; - } - - $form->{email} = $form->{shiptoemail} if $form->{shiptoemail} && $form->{formname} =~ /(pick|packing|bin)_list/; - - if ($form->{"cp_id"}) { - CT->get_contact(\%myconfig, $form); - $form->{"email"} = $form->{"cp_email"} if $form->{"cp_email"}; - } - - $form->{language} = $form->get_template_language(\%myconfig); - $form->{language} = "_" . $form->{language} if $form->{language}; - - my $title = $locale->text('E-mail') . " " . $form->get_formname_translation(); - - $form->{oldmedia} = $form->{media}; - $form->{media} = "email"; - - my $global_bcc = AM->get_defaults()->{global_bcc}; - - $form->{bcc} = join ', ', grep $_, $form->{bcc}, $global_bcc; - - my $attachment_filename = $form->generate_attachment_filename(); - my $subject = $form->{subject} || $form->generate_email_subject(); - - $form->header; - - my (@dont_hide_key_list, %dont_hide_key, @hidden_keys); - @dont_hide_key_list = qw(action email cc bcc subject message sendmode format header override login password); - @dont_hide_key{@dont_hide_key_list} = (1) x @dont_hide_key_list; - @hidden_keys = sort grep { !$dont_hide_key{$_} } grep { !ref $form->{$_} } keys %$form; - - print $form->parse_html_template('generic/edit_email', - { title => $title, - a_filename => $attachment_filename, - subject => $subject, - print_options => print_options('inline' => 1), - action => 'send_email', - HIDDEN => [ map +{ name => $_, value => $form->{$_} }, @hidden_keys ], - SHOW_BCC => $::auth->assert('email_bcc', 'may fail') }); - - $main::lxdebug->leave_sub(); -} - -sub send_email { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - - _check_io_auth(); - - my $callback = $form->{script} . "?action=edit"; - map({ $callback .= "\&${_}=" . E($form->{$_}); } qw(type id)); - - print_form("return"); - - Common->save_email_status(\%myconfig, $form); - - $form->{callback} = $callback; - $form->redirect(); - - $main::lxdebug->leave_sub(); -} - sub print_options { $::lxdebug->enter_sub(); @@ -1291,11 +1221,7 @@ sub print_form { $form->{TEMPLATE_DRIVER_OPTIONS} = { }; if (any { $form->{type} eq $_ } qw(sales_quotation sales_order sales_delivery_order invoice request_quotation purchase_order purchase_delivery_order credit_note)) { - $form->{TEMPLATE_DRIVER_OPTIONS}->{variable_content_types} = { - longdescription => 'html', - partnotes => 'html', - notes => 'html', - }; + $form->{TEMPLATE_DRIVER_OPTIONS}->{variable_content_types} = $form->get_variable_content_types(); } $form->isblank("email", $locale->text('E-mail address missing!')) @@ -1489,6 +1415,7 @@ sub print_form { $form->{emailed} .= " $form->{formname}"; $form->{emailed} =~ s/^ //; + $form->{addition} = "MAILED"; } my $emailed = $form->{emailed}; @@ -1657,45 +1584,6 @@ sub post_as_new { $main::lxdebug->leave_sub(); } -sub ship_to { - $main::lxdebug->enter_sub(); - - _check_io_auth(); - - $::form->{print_and_post} = 0 if $::form->{second_run}; - - map { $::form->{$_} = $::form->parse_amount(\%::myconfig, $::form->{$_}) } qw(exchangerate creditlimit creditremaining); - - # get details for customer/vendor - call_sub($::form->{vc} . "_details", qw(name department_1 department_2 street zipcode city country gln contact email phone fax), $::form->{vc} . "number"); - $::form->{rowcount}--; - - my $cvars = SL::DB::Shipto->new->cvars_by_config; - my @shipto_vars = qw(shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptogln - shiptocontact shiptocp_gender shiptophone shiptofax shiptoemail - shiptodepartment_1 shiptodepartment_2); - my $previous_form = $::auth->save_form_in_session(skip_keys => [ @shipto_vars, qw(header shipto_id), map { "shiptocvar_" . $_->config->name } @{ $cvars } ]); - $::form->{title} = $::locale->text('Ship to'); - $::form->header; - - my $vc_obj = ($::form->{vc} eq 'customer' ? "SL::DB::Customer" : "SL::DB::Vendor")->new(id => $::form->{$::form->{vc} . "_id"})->load; - - $_->value($::form->{"shiptocvar_" . $_->config->name}) for @{ $cvars }; - - print $::form->parse_html_template('io/ship_to', { previousform => $previous_form, - nextsub => $::form->{display_form} || 'display_form', - vc_obj => $vc_obj, - cvars => $cvars, - }); - - $main::lxdebug->leave_sub(); -} - -sub ship_to_entered { - $::auth->restore_form_from_session(delete $::form->{previousform}); - call_sub($::form->{nextsub}); -} - sub relink_accounts { $main::lxdebug->enter_sub(); @@ -1759,9 +1647,11 @@ sub _update_part_information { foreach my $i (1..$form->{rowcount}) { next unless ($form->{"id_${i}"}); - my $info = $form->{PART_INFORMATION}->{$form->{"id_${i}"}} || { }; - $form->{"partunit_${i}"} = $info->{unit}; - $form->{"weight_$i"} = $info->{weight}; + my $info = $form->{PART_INFORMATION}->{$form->{"id_${i}"}} || { }; + $form->{"partunit_${i}"} = $info->{unit}; + $form->{"weight_$i"} = $info->{weight}; + $form->{"part_type_$i"} = $info->{part_type}; + $form->{"classification_id_$i"} = $info->{classification_id}; } $main::lxdebug->leave_sub(); @@ -1967,7 +1857,6 @@ sub _make_record_item { } sub _make_record { - Form::disconnect_standard_dbh; my $class = { sales_order => 'Order', purchase_order => 'Order', @@ -2019,3 +1908,56 @@ sub _make_record { return $obj; } + +sub setup_sales_purchase_print_options { + my $print_form = Form->new(''); + $print_form->{printers} = SL::DB::Manager::Printer->get_all_sorted; + $print_form->{languages} = SL::DB::Manager::Language->get_all_sorted; + + $print_form->{$_} = $::form->{$_} for qw(type media language_id printer_id); + + return SL::Helper::PrintOptions->get_print_options( + form => $print_form, + options => { + show_headers => 1, + }, + ); +} + +sub show_sales_purchase_email_dialog { + my $contact = $::form->{cp_id} ? SL::DB::Contact->load_cached($::form->{cp_id}) : undef; + my $email_form = { + to => $contact ? $contact->cp_email : '', + subject => $::form->generate_email_subject, + attachment_filename => $::form->generate_attachment_filename, + }; + + my $html = $::form->parse_html_template("common/_send_email_dialog", { + email_form => $email_form, + show_bcc => $::auth->assert('email_bcc', 'may fail'), + }); + + print $::form->ajax_response_header, $html; +} + +sub send_sales_purchase_email { + my $type = $::form->{type}; + my $id = $::form->{id}; + my $script = $type =~ m{sales_order|purchase_order|quotation} ? 'oe.pl' + : $type =~ m{delivery_} ? 'do.pl' + : 'is.pl'; + + my $email_form = delete $::form->{email_form}; + my %field_names = (to => 'email'); + + $::form->{ $field_names{$_} // $_ } = $email_form->{$_} for keys %{ $email_form }; + + $::form->{media} = 'email'; + + print_form("return"); + Common->save_email_status(\%::myconfig, $::form); + + flash_later('info', $::locale->text('The email has been sent.')); + + print $::form->redirect_header($script . '?action=edit&id=' . $::form->escape($id) . '&type=' . $::form->escape($type)); +}