X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fic.pl;h=473467b4e068171deb75aceb26b4a0f020ad93b7;hb=d139dd31791627953f82749d02702bcb8308ebea;hp=2ada087cbbe7450bde9645d1f19e28006a76feba;hpb=72be9c763f3b7f7df1fae4fe10011e45f9e2ad1d;p=kivitendo-erp.git diff --git a/bin/mozilla/ic.pl b/bin/mozilla/ic.pl index 2ada087cb..473467b4e 100644 --- a/bin/mozilla/ic.pl +++ b/bin/mozilla/ic.pl @@ -38,6 +38,7 @@ use List::MoreUtils qw(any); use SL::AM; use SL::CVar; use SL::IC; +use SL::Helper::Flash; use SL::ReportGenerator; #use SL::PE; @@ -93,7 +94,7 @@ sub add { sub search { $lxdebug->enter_sub(); - $auth->assert('part_service_assembly_edit'); + $auth->assert('part_service_assembly_details'); $form->{revers} = 0; # switch for backward sorting $form->{lastsort} = ""; # memory for which table was sort at last time @@ -105,8 +106,6 @@ sub search { $form->{title} = $locale->text($form->{title}); $form->{title} = $locale->text('Assemblies') if ($is_xyz{is_assembly}); - $form->{jsscript} = 1; - $form->{CUSTOM_VARIABLES} = CVar->get_configs('module' => 'IC'); ($form->{CUSTOM_VARIABLES_FILTER_CODE}, $form->{CUSTOM_VARIABLES_INCLUSION_CODE}) = CVar->render_search_options('variables' => $form->{CUSTOM_VARIABLES}, @@ -288,7 +287,6 @@ sub update_prices { # $form->header; # # print qq| -# #
# # @@ -388,8 +386,6 @@ sub update_prices { # . $locale->text('TOP100') . qq|"> # # -# -# #|; # $lxdebug->leave_sub(); #} #end list() @@ -725,8 +721,6 @@ sub addtop100 { my $colspan = $#column_index + 1; print qq| - -
@@ -977,13 +971,10 @@ sub addtop100 { print qq| - + - - - |; $lxdebug->leave_sub(); @@ -1010,7 +1001,7 @@ sub addtop100 { # bought sold onorder ordered rfq quoted # l_partnumber l_description l_serialnumber l_unit l_listprice l_sellprice l_lastcost # l_linetotal l_priceupdate l_bin l_rop l_weight l_image l_drawing l_microfiche -# l_partsgroup l_subtotal l_soldtotal l_deliverydate +# l_partsgroup l_subtotal l_soldtotal l_deliverydate l_pricegroups # # hiddens: # nextsub revers lastsort sort ndxs_counter @@ -1018,7 +1009,7 @@ sub addtop100 { sub generate_report { $lxdebug->enter_sub(); - $auth->assert('part_service_assembly_edit'); + $auth->assert('part_service_assembly_details'); my ($revers, $lastsort, $description); @@ -1032,6 +1023,7 @@ sub generate_report { 'bin' => { 'text' => $locale->text('Bin'), }, 'deliverydate' => { 'text' => $locale->text('deliverydate'), }, 'description' => { 'text' => $locale->text('Part Description'), }, + 'notes' => { 'text' => $locale->text('Notes'), }, 'drawing' => { 'text' => $locale->text('Drawing'), }, 'ean' => { 'text' => $locale->text('EAN'), }, 'image' => { 'text' => $locale->text('Image'), }, @@ -1202,36 +1194,65 @@ sub generate_report { # soldtotal doesn't make sense with more than one bsooqr option. # so reset it to sold (the most common option), and issue a warning + # ... + # also it doesn't make sense without bsooqr. disable and issue a warning too my @bsooqr = qw(sold bought onorder ordered rfq quoted); - if ($form->{l_subtotal} && 1 < grep { $form->{$_} } @bsooqr) { + my $bsooqr_mode = grep { $form->{$_} } @bsooqr; + if ($form->{l_subtotal} && 1 < $bsooqr_mode) { my $enabled = first { $form->{$_} } @bsooqr; $form->{$_} = '' for @bsooqr; $form->{$enabled} = 'Y'; push @options, $::locale->text('Subtotal cannot distinguish betweens record types. Only one of the selected record types will be displayed: #1', $optiontexts{$enabled}); } + if ($form->{l_soldtotal} && !$bsooqr_mode) { + delete $form->{l_soldtotal}; + + flash('warning', $::locale->text('Soldtotal does not make sense without any bsooqr options')); + } IC->all_parts(\%myconfig, \%$form); my @columns = qw( - partnumber description partsgroup bin onhand rop soldtotal unit listprice + partnumber description notes partsgroup bin onhand rop soldtotal unit listprice linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost priceupdate weight image drawing microfiche invnumber ordnumber quonumber transdate name serialnumber deliverydate ean projectnumber projectdescription ); + my $pricegroups = SL::DB::Manager::Pricegroup->get_all(sort => 'id'); + my @pricegroup_columns; + my %column_defs_pricegroups; + if ($form->{l_pricegroups}) { + @pricegroup_columns = map { "pricegroup_" . $_->id } @{ $pricegroups }; + %column_defs_pricegroups = map { + "pricegroup_" . $_->id => { + text => $::locale->text('Pricegroup') . ' ' . $_->pricegroup, + visible => 1, + }, + } @{ $pricegroups }; + } + push @columns, @pricegroup_columns; + my @includeable_custom_variables = grep { $_->{includeable} } @{ $cvar_configs }; my @searchable_custom_variables = grep { $_->{searchable} } @{ $cvar_configs }; my %column_defs_cvars = map { +"cvar_$_->{name}" => { 'text' => $_->{description} } } @includeable_custom_variables; push @columns, map { "cvar_$_->{name}" } @includeable_custom_variables; - %column_defs = (%column_defs,%column_defs_cvars); # nochmal die cvars als überschrift hinzufügen - map { $column_defs{$_}->{visible} = $form->{"l_$_"} ? 1 : 0 } @columns; - map { $column_defs{$_}->{align} = 'right' } qw(onhand sellprice listprice lastcost linetotalsellprice linetotallastcost linetotallistprice rop weight soldtotal); + %column_defs = (%column_defs, %column_defs_cvars, %column_defs_pricegroups); + map { $column_defs{$_}->{visible} ||= $form->{"l_$_"} ? 1 : 0 } @columns; + map { $column_defs{$_}->{align} = 'right' } qw(onhand sellprice listprice lastcost linetotalsellprice linetotallastcost linetotallistprice rop weight soldtotal), @pricegroup_columns; + + my @hidden_variables = ( + qw(l_subtotal l_linetotal searchitems itemstatus bom l_pricegroups), + @itemstatus_keys, + @callback_keys, + map({ "cvar_$_->{name}" } @searchable_custom_variables), + map({'cvar_'. $_->{name} .'_qtyop'} grep({$_->{type} eq 'number'} @searchable_custom_variables)), + map({ "l_$_" } @columns), + ); - my @hidden_variables = (qw(l_subtotal l_linetotal searchitems itemstatus bom), @itemstatus_keys, @callback_keys, - map({ "cvar_$_->{name}" } @searchable_custom_variables), map { "l_$_" } @columns); my $callback = build_std_url('action=generate_report', grep { $form->{$_} } @hidden_variables); my @sort_full = qw(partnumber description onhand soldtotal deliverydate); @@ -1253,7 +1274,7 @@ sub generate_report { 'assembly' => $locale->text('assembly_list'), ); - $report->set_options('top_info_text' => $locale->text('Options') . ': ' . join(', ', grep $_, @options), + $report->set_options('raw_top_info_text' => $form->parse_html_template('ic/generate_report_top', { options => \@options }), 'raw_bottom_info_text' => $form->parse_html_template('ic/generate_report_bottom'), 'output_format' => 'HTML', 'title' => $form->{title}, @@ -1303,7 +1324,7 @@ sub generate_report { $ref->{lastcost} *= $ref->{exchangerate} / $ref->{price_factor}; # use this for assemblies - my $soldtotal = $ref->{soldtotal}; + my $soldtotal = $bsooqr_mode ? $ref->{soldtotal} : $ref->{onhand}; if ($ref->{assemblyitem}) { $row->{partnumber}{align} = 'right'; @@ -1316,9 +1337,13 @@ sub generate_report { $row->{description}->{link} = $edit_link; foreach (qw(sellprice listprice lastcost)) { - $row->{$_}{data} = $form->format_amount(\%myconfig, $ref->{$_}, -2); + $row->{$_}{data} = $form->format_amount(\%myconfig, $ref->{$_}, 2); $row->{"linetotal$_"}{data} = $form->format_amount(\%myconfig, $ref->{onhand} * $ref->{$_}, 2); } + foreach ( @pricegroup_columns ) { + $row->{$_}{data} = $form->format_amount(\%myconfig, $ref->{"$_"}, 2); + }; + map { $row->{$_}{data} = $form->format_amount(\%myconfig, $ref->{$_}); } qw(onhand rop weight soldtotal); @@ -1335,9 +1360,16 @@ sub generate_report { # set module stuff if ($ref->{module} eq 'oe') { - my $edit_oe_link = build_std_url("script=oe.pl", 'action=edit', 'type=' . E($ref->{cv} eq 'vendor' ? 'purchase_order' : 'sales_order'), 'id=' . E($ref->{trans_id}), 'callback'); - $row->{ordnumber}{link} = $edit_oe_link; - $row->{quonumber}{link} = $edit_oe_link if (!$ref->{ordnumber}); + # für oe gibt es vier fälle, jeweils nach kunde oder lieferant unterschiedlich: + # + # | ist bestellt | Von Kunden bestellt | -> edit_oe_ord_link + # | Anfrage | Angebot | -> edit_oe_quo_link + + my $edit_oe_ord_link = build_std_url("script=oe.pl", 'action=edit', 'type=' . E($ref->{cv} eq 'vendor' ? 'purchase_order' : 'sales_order'), 'id=' . E($ref->{trans_id}), 'callback'); + my $edit_oe_quo_link = build_std_url("script=oe.pl", 'action=edit', 'type=' . E($ref->{cv} eq 'vendor' ? 'request_quotation' : 'sales_quotation'), 'id=' . E($ref->{trans_id}), 'callback'); + + $row->{ordnumber}{link} = $edit_oe_ord_link; + $row->{quonumber}{link} = $edit_oe_quo_link if (!$ref->{ordnumber}); } else { $row->{invnumber}{link} = build_std_url("script=$ref->{module}.pl", 'action=edit', 'type=invoice', 'id=' . E($ref->{trans_id}), 'callback'); @@ -1375,7 +1407,7 @@ sub generate_report { $idx++; } - if ($form->{"l_linetotal"}) { + if ($form->{"l_linetotal"} && !$form->{report_generator_csv_options_for_import}) { my $row = { map { $_ => { 'class' => 'listtotal', } } @columns }; map { $row->{"linetotal$_"}->{data} = $form->format_amount(\%myconfig, $totals{$_}, 2) } @subtotal_columns; @@ -1437,7 +1469,7 @@ sub parts_subtotal { sub edit { $lxdebug->enter_sub(); - $auth->assert('part_service_assembly_edit'); + $auth->assert('part_service_assembly_details'); # show history button $form->{javascript} = qq||; @@ -1458,13 +1490,12 @@ sub edit { sub link_part { $lxdebug->enter_sub(); - $auth->assert('part_service_assembly_edit'); + $auth->assert('part_service_assembly_details'); IC->create_links("IC", \%myconfig, \%$form); # currencies - map({ $form->{selectcurrency} .= "
$form->{title}