X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fis.pl;h=57a79af0d813bee1414ea650183d92eef3fad3bd;hb=b4ddf2d433ca367128cdab950d2fcc391657de38;hp=e04139fbad185299a8019668209e712ea749efc5;hpb=475b7a3ff7259102d938b91bfeac8012dbe69d45;p=kivitendo-erp.git diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index e04139fba..57a79af0d 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -62,9 +62,10 @@ use strict; # end of main sub _may_view_or_edit_this_invoice { - return 1 if $::auth->assert('invoice_edit', 1); # may edit all invoices - return 0 if !$::form->{id}; # creating new invoices isn't allowed without invoice_edit - return 0 if !$::form->{globalproject_id}; # existing records without a project ID are not allowed + return 1 if $::auth->assert('invoice_edit', 1); # may edit all invoices + return 0 if !$::form->{id}; # creating new invoices isn't allowed without invoice_edit + return 1 if $::auth->assert('sales_invoice_view', 1); # viewing is allowed with this right + return 0 if !$::form->{globalproject_id}; # existing records without a project ID are not allowed return SL::DB::Project->new(id => $::form->{globalproject_id})->load->may_employee_view_project_invoices(SL::DB::Manager::Employee->current); } @@ -96,7 +97,7 @@ sub add { $form->{title} = $locale->text('Add Invoice for Advance Payment'); } elsif ($form->{type} eq "final_invoice") { - $form->{title} = $locale->text('Final Invoice'); + $form->{title} = $locale->text('Add Final Invoice'); } else { $form->{title} = $locale->text('Add Sales Invoice'); @@ -333,7 +334,14 @@ sub setup_is_action_bar { if ($form->{id} && $form->{type} eq "invoice_for_advance_payment") { my $invoice_obj = SL::DB::Invoice->load_cached($form->{id}); my $lr = $invoice_obj->linked_records(direction => 'to', to => ['Invoice']); - $has_final_invoice = any {'SL::DB::Invoice' eq ref $_ && "invoice" eq $_->invoice_type} @$lr; + $has_final_invoice = any {'SL::DB::Invoice' eq ref $_ && "final_invoice" eq $_->invoice_type} @$lr; + } + + my $is_invoice_for_advance_payment_from_order; + if ($form->{id} && $form->{type} eq "invoice_for_advance_payment") { + my $invoice_obj = SL::DB::Invoice->load_cached($form->{id}); + my $lr = $invoice_obj->linked_records(direction => 'from', from => ['Order']); + $is_invoice_for_advance_payment_from_order = scalar @$lr >= 1; } for my $bar ($::request->layout->get('actionbar')) { @@ -378,7 +386,7 @@ sub setup_is_action_bar { disabled => !$may_edit_create ? t8('You must not change this invoice.') : !$form->{id} ? t8('This invoice has not been posted yet.') : undef, - only_if => $::instance_conf->get_is_show_mark_as_paid && $form->{type} ne "invoice_for_advance_payment", + only_if => ($::instance_conf->get_is_show_mark_as_paid && $form->{type} ne "invoice_for_advance_payment") || $form->{type} eq 'final_invoice', ], ], # end of combobox "Post" @@ -424,22 +432,24 @@ sub setup_is_action_bar { t8('Further Invoice for Advance Payment'), submit => [ '#form', { action => "further_invoice_for_advance_payment" } ], checks => [ 'kivi.validate_form' ], - disabled => !$may_edit_create ? t8('You must not change this invoice.') - : !$form->{id} ? t8('This invoice has not been posted yet.') - : $has_further_invoice_for_advance_payment ? t8('This invoice has already a further invoice for advanced payment.') - : $has_final_invoice ? t8('This invoice has already a final invoice.') - : undef, + disabled => !$may_edit_create ? t8('You must not change this invoice.') + : !$form->{id} ? t8('This invoice has not been posted yet.') + : $has_further_invoice_for_advance_payment ? t8('This invoice has already a further invoice for advanced payment.') + : $has_final_invoice ? t8('This invoice has already a final invoice.') + : $is_invoice_for_advance_payment_from_order ? t8('This invoice was added from an order. See there.') + : undef, only_if => $form->{type} eq "invoice_for_advance_payment", ], action => [ t8('Final Invoice'), submit => [ '#form', { action => "final_invoice" } ], checks => [ 'kivi.validate_form' ], - disabled => !$may_edit_create ? t8('You must not change this invoice.') - : !$form->{id} ? t8('This invoice has not been posted yet.') - : $has_further_invoice_for_advance_payment ? t8('This invoice has a further invoice for advanced payment.') - : $has_final_invoice ? t8('This invoice has already a final invoice.') - : undef, + disabled => !$may_edit_create ? t8('You must not change this invoice.') + : !$form->{id} ? t8('This invoice has not been posted yet.') + : $has_further_invoice_for_advance_payment ? t8('This invoice has a further invoice for advanced payment.') + : $has_final_invoice ? t8('This invoice has already a final invoice.') + : $is_invoice_for_advance_payment_from_order ? t8('This invoice was added from an order. See there.') + : undef, only_if => $form->{type} eq "invoice_for_advance_payment", ], action => [ @@ -615,11 +625,11 @@ sub form_header { $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; } - $TMPL_VAR{is_type_invoice_for_advance_payment} = $form->{type} eq "invoice_for_advance_payment"; - $TMPL_VAR{is_type_credit_note} = $form->{type} eq "credit_note"; - $TMPL_VAR{is_format_html} = $form->{format} eq 'html'; - $TMPL_VAR{dateformat} = $myconfig{dateformat}; - $TMPL_VAR{numberformat} = $myconfig{numberformat}; + $TMPL_VAR{is_type_normal_invoice} = $form->{type} eq "invoice"; + $TMPL_VAR{is_type_credit_note} = $form->{type} eq "credit_note"; + $TMPL_VAR{is_format_html} = $form->{format} eq 'html'; + $TMPL_VAR{dateformat} = $myconfig{dateformat}; + $TMPL_VAR{numberformat} = $myconfig{numberformat}; # hiddens $TMPL_VAR{HIDDENS} = [qw( @@ -759,18 +769,18 @@ sub form_footer { } print $form->parse_html_template('is/form_footer', { - is_type_invoice_for_advance_payment => ($form->{type} eq "invoice_for_advance_payment"), - is_type_credit_note => ($form->{type} eq "credit_note"), - totalpaid => $totalpaid, - paid_missing => $form->{invtotal} - $totalpaid, - print_options => setup_sales_purchase_print_options(), - show_storno => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && !$totalpaid, - show_delete => ($::instance_conf->get_is_changeable == 2) - ? ($form->current_date(\%myconfig) eq $form->{gldate}) - : ($::instance_conf->get_is_changeable == 1), - today => DateTime->today, - vc_obj => $form->{customer_id} ? SL::DB::Customer->load_cached($form->{customer_id}) : undef, - shipto_cvars => $shipto_cvars, + is_type_normal_invoice => ($form->{type} eq "invoice"), + is_type_credit_note => ($form->{type} eq "credit_note"), + totalpaid => $totalpaid, + paid_missing => $form->{invtotal} - $totalpaid, + print_options => setup_sales_purchase_print_options(), + show_storno => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && !$totalpaid, + show_delete => ($::instance_conf->get_is_changeable == 2) + ? ($form->current_date(\%myconfig) eq $form->{gldate}) + : ($::instance_conf->get_is_changeable == 1), + today => DateTime->today, + vc_obj => $form->{customer_id} ? SL::DB::Customer->load_cached($form->{customer_id}) : undef, + shipto_cvars => $shipto_cvars, }); ##print $form->parse_html_template('is/_payments'); # parser ##print $form->parse_html_template('webdav/_list'); # parser @@ -1039,6 +1049,8 @@ sub post { my @current_taxaccounts = (split(/ /, $form->{taxaccounts})); $form->error($locale->text('Cannot post invoice for advance payment with more than one tax')) if (scalar @current_taxaccounts > 1); + $form->error($locale->text('Cannot post invoice for advance payment with taxincluded')) + if ($form->{taxincluded}); } for my $i (1 .. $form->{paidaccounts}) { @@ -1213,11 +1225,6 @@ sub final_invoice { $main::auth->assert('invoice_edit'); - # search all related invoices for advance payment - # - # (order) -> invoice for adv. payment 1 -> invoice for adv. payment 2 -> invoice for adv. payment 3 -> final invoice - # - # we are currently in the last invoice for adv. payment (3 in this example) my $related_invoices = IS->_get_invoices_for_advance_payment($form->{id}); delete @{ $form }{qw(printed emailed queued invnumber invdate exchangerate forex deliverydate datepaid_1 gldate_1 acc_trans_id_1 source_1 memo_1 paid_1 exchangerate_1 AP_paid_1 storno locked)}; @@ -1252,7 +1259,7 @@ sub final_invoice { $form->{"partnumber_$i"} = $item->part->partnumber; $form->{"discount_$i"} = $item->discount*100.0; $form->{"sellprice_$i"} = $item->fxsellprice; - $form->{$_ . "_" . $i} = $item->$_ for qw(description longdescription qty price_factor_id unit sellprice active_price_source active_discount_source); + $form->{$_ . "_" . $i} = $item->$_ for qw(description longdescription qty price_factor_id unit active_price_source active_discount_source); $form->{$_ . "_" . $i} = $form->format_amount(\%myconfig, $form->{$_ . "_" . $i}) for qw(qty sellprice discount); }