X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Far.pl;h=cf0555f90a811a2f3fc204f0d507e8b15c8f3f6f;hb=f3324b5ad66924333bf2a313974f6d4d21932707;hp=d88cb2d14645b62a71e53800b7884f0938ac90c7;hpb=3d99b4f59f7595e8f0faa0a729c70d333edfed04;p=kivitendo-erp.git diff --git a/bin/mozilla/ar.pl b/bin/mozilla/ar.pl index d88cb2d14..cf0555f90 100644 --- a/bin/mozilla/ar.pl +++ b/bin/mozilla/ar.pl @@ -50,7 +50,7 @@ use SL::DB::Employee; use SL::DB::Invoice; use SL::DB::RecordTemplate; use SL::DB::Tax; -use SL::Helper::Flash qw(flash); +use SL::Helper::Flash qw(flash flash_later); use SL::Locale::String qw(t8); use SL::Presenter::Tag; use SL::Presenter::Chart; @@ -124,16 +124,17 @@ sub load_record_template { # Fill $::form from the template. my $today = DateTime->today_local; - $::form->{title} = "Add"; - $::form->{currency} = $template->currency->name; - $::form->{direct_debit} = $template->direct_debit; - $::form->{globalproject_id} = $template->project_id; - $::form->{AR_chart_id} = $template->ar_ap_chart_id; - $::form->{transdate} = $today->to_kivitendo; - $::form->{duedate} = $today->to_kivitendo; - $::form->{rowcount} = @{ $template->items }; - $::form->{paidaccounts} = 1; - $::form->{$_} = $template->$_ for qw(department_id ordnumber taxincluded employee_id notes); + $::form->{title} = "Add"; + $::form->{currency} = $template->currency->name; + $::form->{direct_debit} = $template->direct_debit; + $::form->{globalproject_id} = $template->project_id; + $::form->{transaction_description} = $template->transaction_description; + $::form->{AR_chart_id} = $template->ar_ap_chart_id; + $::form->{transdate} = $today->to_kivitendo; + $::form->{duedate} = $today->to_kivitendo; + $::form->{rowcount} = @{ $template->items }; + $::form->{paidaccounts} = 1; + $::form->{$_} = $template->$_ for qw(department_id ordnumber taxincluded employee_id notes); if ($template->customer) { $::form->{customer_id} = $template->customer_id; @@ -197,21 +198,22 @@ sub save_record_template { } (1..($::form->{rowcount} || 1)); $template->assign_attributes( - template_type => 'ar_transaction', - template_name => $new_name, - - currency_id => SL::DB::Manager::Currency->find_by(name => $::form->{currency})->id, - ar_ap_chart_id => $::form->{AR_chart_id} || undef, - customer_id => $::form->{customer_id} || undef, - department_id => $::form->{department_id} || undef, - project_id => $::form->{globalproject_id} || undef, - employee_id => $::form->{employee_id} || undef, - taxincluded => $::form->{taxincluded} ? 1 : 0, - direct_debit => $::form->{direct_debit} ? 1 : 0, - ordnumber => $::form->{ordnumber}, - notes => $::form->{notes}, - - items => \@items, + template_type => 'ar_transaction', + template_name => $new_name, + + currency_id => SL::DB::Manager::Currency->find_by(name => $::form->{currency})->id, + ar_ap_chart_id => $::form->{AR_chart_id} || undef, + customer_id => $::form->{customer_id} || undef, + department_id => $::form->{department_id} || undef, + project_id => $::form->{globalproject_id} || undef, + employee_id => $::form->{employee_id} || undef, + taxincluded => $::form->{taxincluded} ? 1 : 0, + direct_debit => $::form->{direct_debit} ? 1 : 0, + ordnumber => $::form->{ordnumber}, + notes => $::form->{notes}, + transaction_description => $::form->{transaction_description}, + + items => \@items, ); eval { @@ -817,7 +819,18 @@ sub post { } # /saving the history - $form->redirect($locale->text('AR transaction posted.') . ' ' . $locale->text('ID') . ': ' . $form->{id}) unless $inline; + if (!$inline) { + my $msg = $locale->text("AR transaction '#1' posted (ID: #2)", $form->{invnumber}, $form->{id}); + if ($::instance_conf->get_ar_add_doc && $::instance_conf->get_doc_storage) { + my $add_doc_url = build_std_url("script=ar.pl", 'action=edit', 'id=' . E($form->{id})); + SL::Helper::Flash::flash_later('info', $msg); + print $form->redirect_header($add_doc_url); + $::dispatcher->end_request; + + } else { + $form->redirect($msg); + } + } $main::lxdebug->leave_sub(); } @@ -948,9 +961,10 @@ sub search { $form->{title} = $locale->text('Invoices, Credit Notes & AR Transactions'); - $form->{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all_sorted(query => [ deleted => 0 ]); - $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all_sorted; - $form->{ALL_BUSINESS_TYPES} = SL::DB::Manager::Business->get_all_sorted; + $form->{ALL_EMPLOYEES} = SL::DB::Manager::Employee ->get_all_sorted(query => [ deleted => 0 ]); + $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all_sorted; + $form->{ALL_BUSINESS_TYPES} = SL::DB::Manager::Business ->get_all_sorted; + $form->{ALL_TAXZONES} = SL::DB::Manager::TaxZone ->get_all_sorted; $form->{CT_CUSTOM_VARIABLES} = CVar->get_configs('module' => 'CT'); ($form->{CT_CUSTOM_VARIABLES_FILTER_CODE}, @@ -1014,7 +1028,7 @@ sub ar_transactions { qw(ids transdate id type invnumber ordnumber cusordnumber donumber deliverydate name netamount tax amount paid datepaid due duedate transaction_description notes salesman employee shippingpoint shipvia marge_total marge_percent globalprojectnumber customernumber country ustid taxzone - payment_terms charts customertype direct_debit dunning_description department); + payment_terms charts customertype direct_debit dunning_description department attachments); my $ct_cvar_configs = CVar->get_configs('module' => 'CT'); my @ct_includeable_custom_variables = grep { $_->{includeable} } @{ $ct_cvar_configs }; @@ -1025,7 +1039,8 @@ sub ar_transactions { my @hidden_variables = map { "l_${_}" } @columns; push @hidden_variables, "l_subtotal", qw(open closed customer invnumber ordnumber cusordnumber transaction_description notes project_id transdatefrom transdateto duedatefrom duedateto - employee_id salesman_id business_id parts_partnumber parts_description department_id show_marked_as_closed show_not_mailed); + employee_id salesman_id business_id parts_partnumber parts_description department_id show_marked_as_closed show_not_mailed + shippingpoint shipvia taxzone_id); push @hidden_variables, map { "cvar_$_->{name}" } @ct_searchable_custom_variables; $href = $params{want_binary_pdf} ? '' : build_std_url('action=ar_transactions', grep { $form->{$_} } @hidden_variables); @@ -1067,10 +1082,11 @@ sub ar_transactions { 'direct_debit' => { 'text' => $locale->text('direct debit'), }, 'department' => { 'text' => $locale->text('Department'), }, dunning_description => { 'text' => $locale->text('Dunning level'), }, + attachments => { 'text' => $locale->text('Attachments'), }, %column_defs_cvars, ); - foreach my $name (qw(id transdate duedate invnumber ordnumber cusordnumber donumber deliverydate name datepaid employee shippingpoint shipvia transaction_description direct_debit department)) { + foreach my $name (qw(id transdate duedate invnumber ordnumber cusordnumber donumber deliverydate name datepaid employee shippingpoint shipvia transaction_description direct_debit department taxzone)) { my $sortdir = $form->{sort} eq $name ? 1 - $form->{sortdir} : $form->{sortdir}; $column_defs{$name}->{link} = $href . "&sort=$name&sortdir=$sortdir"; } @@ -1148,6 +1164,13 @@ sub ar_transactions { if ($form->{closed}) { push @options, $locale->text('Closed'); } + if ($form->{shipvia}) { + push @options, $locale->text('Ship via') . " : $form->{shipvia}"; + } + if ($form->{shippingpoint}) { + push @options, $locale->text('Shipping Point') . " : $form->{shippingpoint}"; + } + $form->{ALL_PRINTERS} = SL::DB::Manager::Printer->get_all_sorted; @@ -1184,15 +1207,30 @@ sub ar_transactions { $subtotals{marge_percent} = $subtotals{netamount} ? ($subtotals{marge_total} * 100 / $subtotals{netamount}) : 0; $totals{marge_percent} = $totals{netamount} ? ($totals{marge_total} * 100 / $totals{netamount} ) : 0; + # Preserve $ar->{type} before changing it to the abbreviation letter for + # getting files from file management below. + $ar->{object_type} = $ar->{type}; + my $is_storno = $ar->{storno} && $ar->{storno_id}; my $has_storno = $ar->{storno} && !$ar->{storno_id}; - $ar->{type} = - $has_storno ? $locale->text("Invoice with Storno (abbreviation)") : - $is_storno ? $locale->text("Storno (one letter abbreviation)") : - $ar->{amount} < 0 ? $locale->text("Credit note (one letter abbreviation)") : - $ar->{invoice} ? $locale->text("Invoice (one letter abbreviation)") : - $locale->text("AR Transaction (abbreviation)"); + if ($ar->{type} eq 'invoice_for_advance_payment') { + $ar->{type} = + $has_storno ? $locale->text("Invoice for Advance Payment with Storno (abbreviation)") : + $is_storno ? $locale->text("Storno (one letter abbreviation)") : + $locale->text("Invoice for Advance Payment (one letter abbreviation)"); + + } elsif ($ar->{type} eq 'final_invoice') { + $ar->{type} = t8('Final Invoice (one letter abbreviation)'); + + } else { + $ar->{type} = + $has_storno ? $locale->text("Invoice with Storno (abbreviation)") : + $is_storno ? $locale->text("Storno (one letter abbreviation)") : + $ar->{amount} < 0 ? $locale->text("Credit note (one letter abbreviation)") : + $ar->{invoice} ? $locale->text("Invoice (one letter abbreviation)") : + $locale->text("AR Transaction (abbreviation)"); + } map { $ar->{$_} = $form->format_amount(\%myconfig, $ar->{$_}, 2) } qw(netamount tax amount paid due marge_total marge_percent); @@ -1216,6 +1254,20 @@ sub ar_transactions { align => 'center', }; + if ($::instance_conf->get_doc_storage && $form->{l_attachments}) { + my @files = SL::File->get_all_versions(object_id => $ar->{id}, + object_type => $ar->{object_type} || 'invoice', + file_type => 'attachment',); + if (scalar @files) { + my $html = join '
', map { SL::Presenter::FileObject::file_object($_) } @files; + my $text = join "\n", map { $_->file_name } @files; + $row->{attachments} = { 'raw_data' => $html, data => $text }; + } else { + $row->{attachments} = { }; + } + + } + my $row_set = [ $row ]; if (($form->{l_subtotal} eq 'Y')