X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/c1ef3affe17e3c7d044ae3e6f70b802817de8ede..cd6bfeee2bf076f15f9fdf57806a7c42bdf1760e:/bin/mozilla/io.pl diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index ece721f33..f8c660d2a 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -126,8 +126,6 @@ sub _check_io_auth { sub display_row { $main::lxdebug->enter_sub(); - _check_io_auth(); - my $form = $main::form; my %myconfig = %main::myconfig; my $locale = $main::locale; @@ -373,8 +371,9 @@ sub display_row { } } - my $edit_prices = $main::auth->assert('edit_prices', 1) && (!$::form->{"active_price_source_$i"} || !$price || $price->editable); - my $edit_discounts = $main::auth->assert('edit_prices', 1) && !$::form->{"active_discount_source_$i"}; + my $right_to_edit_prices = (!$is_purchase && $main::auth->assert('sales_edit_prices', 1)) || ($is_purchase && $main::auth->assert('purchase_edit_prices', 1)); + my $edit_prices = $right_to_edit_prices && (!$::form->{"active_price_source_$i"} || !$price || $price->editable); + my $edit_discounts = $right_to_edit_prices && !$::form->{"active_discount_source_$i"}; $column_data{sellprice} = (!$edit_prices) ? $cgi->hidden( -name => "sellprice_$i", -id => "sellprice_$i", -value => $sellprice_value) . $sellprice_value : $cgi->textfield(-name => "sellprice_$i", -id => "sellprice_$i", -size => 10, -class => "numeric", -value => $sellprice_value); @@ -1655,8 +1654,6 @@ sub relink_accounts { my $form = $main::form; my %myconfig = %main::myconfig; - _check_io_auth(); - $form->{"taxaccounts"} =~ s/\s*$//; $form->{"taxaccounts"} =~ s/^\s*//; foreach my $accno (split(/\s*/, $form->{"taxaccounts"})) { @@ -1899,12 +1896,19 @@ sub _make_record_item { if ($obj->meta->column($method)->isa('Rose::DB::Object::Metadata::Column::Date')) { $obj->${\"$method\_as_date"}($value); } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::(?:Numeric|Float|DoublePrecsion)$/) { - $obj->${\"$method\_as_number"}($value); + $obj->${\"$method\_as_number"}(($value // '') eq '' ? undef : $value); } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::Boolean$/) { $obj->$method(!!$value); + } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::(?:Big)?(?:Int(?:eger)?|Serial)$/) { + $obj->$method(($value // '') eq '' ? undef : $value * 1); } else { $obj->$method($value); } + + if ($method eq 'discount') { + $obj->discount($obj->discount / 100.0); + } + } else { $obj->{__additional_form_attributes}{$method} = $value; } @@ -1950,9 +1954,11 @@ sub _make_record { if ($obj->meta->column($method)->isa('Rose::DB::Object::Metadata::Column::Date')) { $obj->${\"$method\_as_date"}($::form->{$method}); } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::(?:Numeric|Float|DoublePrecsion)$/) { - $obj->${\"$method\_as_number"}($::form->{$method}); + $obj->${\"$method\_as_number"}(($::form->{$method} // '') eq '' ? undef : $::form->{$method}); } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::Boolean$/) { $obj->$method(!!$::form->{$method}); + } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::(?:Big)?(?:Int(?:eger)?|Serial)$/) { + $obj->$method(($::form->{$method} // '') eq '' ? undef : $::form->{$method} * 1); } else { $obj->$method($::form->{$method}); } @@ -2020,15 +2026,33 @@ sub _get_files_for_email_dialog { sub show_sales_purchase_email_dialog { my $email = ''; + my $email_cc = ''; + my $record_email; if ($::form->{cp_id}) { $email = SL::DB::Contact->load_cached($::form->{cp_id})->cp_email; } - my $invoice_mail; - if ($::form->{type} eq 'invoice' && !$email) { - # check for invoice_mail - $email = SL::DB::Customer->load_cached($::form->{vc_id})->invoice_mail; - $invoice_mail = 1 if $email; + # write a dispatch table if a third type enters + # check record mail for sales_invoice + if ($::form->{type} eq 'invoice' && (!$email || $::instance_conf->get_invoice_mail_settings ne 'cp')) { + # check for invoice_mail if defined (vc.invoice_email) + $record_email = SL::DB::Customer->load_cached($::form->{vc_id})->invoice_mail; + if ($record_email) { + # check if cc for contact is also wanted + $email_cc = $email if ($::instance_conf->get_invoice_mail_settings eq 'invoice_mail_cc_cp'); + $email = $record_email; + } } + # check record mail for sales_delivery_order + if ($::form->{type} eq 'sales_delivery_order') { + # check for deliver_order_mail if defined (vc.delivery_order_mail) + $record_email = SL::DB::Customer->load_cached($::form->{vc_id})->delivery_order_mail; + if ($record_email) { + # check if cc for contact is also wanted + $email_cc = $email; # always cc to cp + $email = $record_email; + } + } + # still no email? use general mail (vc.email) if (!$email && $::form->{vc} && $::form->{vc_id}) { $email = SL::DB::Customer->load_cached($::form->{vc_id})->email if 'customer' eq $::form->{vc}; $email = SL::DB::Vendor ->load_cached($::form->{vc_id})->email if 'vendor' eq $::form->{vc}; @@ -2036,10 +2060,14 @@ sub show_sales_purchase_email_dialog { $email = '' if $::form->{type} eq 'purchase_delivery_order'; + $::form->{language} = $::form->get_template_language(\%::myconfig); + $::form->{language} = "_" . $::form->{language}; + my $email_form = { to => $email, + cc => $email_cc, subject => $::form->generate_email_subject, - message => $::form->generate_email_body, + message => $::form->generate_email_body('record_email' => $record_email), attachment_filename => $::form->generate_attachment_filename, js_send_function => 'kivi.SalesPurchase.send_email()', }; @@ -2050,7 +2078,7 @@ sub show_sales_purchase_email_dialog { show_bcc => $::auth->assert('email_bcc', 'may fail'), FILES => \%files, is_customer => $::form->{vc} eq 'customer', - is_invoice_mail => $invoice_mail, + is_invoice_mail => ($record_email && $::form->{type} eq 'invoice'), }); print $::form->ajax_response_header, $html;