X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=bin%2Fmozilla%2Fic.pl;h=d4ad5f14f7949acd84b860dba113a89ac50d864b;hb=4d261fb7ccec8e5db782c73623dfd7beba6d7e83;hp=5fb8adf57cb274f15107be2153f2c637ca0d689f;hpb=16f131c37eac3667c2e789ab94ab2618fd8f41ed;p=kivitendo-erp.git
diff --git a/bin/mozilla/ic.pl b/bin/mozilla/ic.pl
index 5fb8adf57..d4ad5f14f 100644
--- a/bin/mozilla/ic.pl
+++ b/bin/mozilla/ic.pl
@@ -24,7 +24,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.
#======================================================================
#
# Inventory Control module
@@ -74,23 +75,6 @@ require "bin/mozilla/reportgenerator.pl";
# end of main
-sub add {
- $lxdebug->enter_sub();
-
- $auth->assert('part_service_assembly_edit');
-
- my $title = 'Add ' . ucfirst $form->{item};
- $form->{title} = $locale->text($title);
- $form->{callback} = "$form->{script}?action=add&item=$form->{item}" unless $form->{callback};
- $form->{unit_changeable} = 1;
-
- IC->get_pricegroups(\%myconfig, \%$form);
- &link_part;
- &display_form;
-
- $lxdebug->leave_sub();
-}
-
sub search {
$lxdebug->enter_sub();
@@ -100,11 +84,9 @@ sub search {
$form->{lastsort} = ""; # memory for which table was sort at last time
$form->{ndxs_counter} = 0; # counter for added entries to top100
- my %is_xyz = map { +"is_$_" => ($form->{searchitems} eq $_) } qw(part service assembly);
-
$form->{title} = (ucfirst $form->{searchitems}) . "s";
+ $form->{title} =~ s/ys$/ies/;
$form->{title} = $locale->text($form->{title});
- $form->{title} = $locale->text('Assemblies') if ($is_xyz{is_assembly});
$form->{CUSTOM_VARIABLES} = CVar->get_configs('module' => 'IC');
($form->{CUSTOM_VARIABLES_FILTER_CODE},
@@ -112,91 +94,15 @@ sub search {
'include_prefix' => 'l_',
'include_value' => 'Y');
+ setup_ic_search_action_bar();
$form->header;
$form->get_lists('partsgroup' => 'ALL_PARTSGROUPS');
- print $form->parse_html_template('ic/search', { %is_xyz, });
-
- $lxdebug->leave_sub();
-} #end search()
-
-sub search_update_prices {
- $lxdebug->enter_sub();
-
- $auth->assert('part_service_assembly_edit');
-
- my $pricegroups = IC->get_pricegroups(\%myconfig, \%$form);
-
- $form->{title} = $locale->text('Update Prices');
-
- $form->header;
-
- print $form->parse_html_template('ic/search_update_prices', { PRICE_ROWS => $pricegroups });
+ print $form->parse_html_template('ic/search');
$lxdebug->leave_sub();
} #end search()
-sub confirm_price_update {
- $lxdebug->enter_sub();
-
- $auth->assert('part_service_assembly_edit');
-
- my @errors = ();
- my $value_found = undef;
-
- foreach my $idx (qw(sellprice listprice), (1..$form->{price_rows})) {
- my $name = $idx =~ m/\d/ ? $form->{"pricegroup_${idx}"} : $idx eq 'sellprice' ? $locale->text('Sell Price') : $locale->text('List Price');
- my $type = $idx =~ m/\d/ ? $form->{"pricegroup_type_${idx}"} : $form->{"${idx}_type"};
- my $value_idx = $idx =~ m/\d/ ? "price_${idx}" : $idx;
- my $value = $form->parse_amount(\%myconfig, $form->{$value_idx});
-
- if ((0 > $value) && ($type eq 'percent')) {
- push @errors, $locale->text('You cannot adjust the price for pricegroup "#1" by a negative percentage.', $name);
-
- } elsif (!$value && ($form->{$value_idx} ne '')) {
- push @errors, $locale->text('No valid number entered for pricegroup "#1".', $name);
-
- } elsif (0 < $value) {
- $value_found = 1;
- }
- }
-
- push @errors, $locale->text('No prices will be updated because no prices have been entered.') if (!$value_found);
-
- my $num_matches = IC->get_num_matches_for_priceupdate();
-
- $form->header();
-
- if (@errors) {
- $form->show_generic_error(join('
', @errors), 'back_button' => 1);
- }
-
- $form->{nextsub} = "update_prices";
-
- map { delete $form->{$_} } qw(action header);
-
- print $form->parse_html_template('ic/confirm_price_update', { HIDDENS => [ map { name => $_, value => $form->{$_} }, keys %$form ],
- num_matches => $num_matches });
-
- $lxdebug->leave_sub();
-}
-
-sub update_prices {
- $lxdebug->enter_sub();
-
- $auth->assert('part_service_assembly_edit');
-
- my $num_updated = IC->update_prices(\%myconfig, \%$form);
-
- if (-1 != $num_updated) {
- $form->redirect($locale->text('#1 prices were updated.', $num_updated));
- } else {
- $form->error($locale->text('Could not update prices!'));
- }
-
- $lxdebug->leave_sub();
-}
-
sub top100 {
$::lxdebug->enter_sub();
@@ -233,7 +139,7 @@ sub top100 {
# searchitems=part revers=0 lastsort=''
#
# filter:
-# partnumber ean description partsgroup serialnumber make model drawing microfiche
+# partnumber ean description partsgroup classification serialnumber make model drawing microfiche
# transdatefrom transdateto
#
# radio:
@@ -258,12 +164,9 @@ sub generate_report {
my $cvar_configs = CVar->get_configs('module' => 'IC');
- $form->{title} = (ucfirst $form->{searchitems}) . "s";
- $form->{title} =~ s/ys$/ies/;
- $form->{title} = $locale->text($form->{title});
+ $form->{title} = $locale->text('Articles');
my %column_defs = (
- 'bin' => { 'text' => $locale->text('Bin'), },
'deliverydate' => { 'text' => $locale->text('deliverydate'), },
'description' => { 'text' => $locale->text('Part Description'), },
'notes' => { 'text' => $locale->text('Notes'), },
@@ -282,7 +185,7 @@ sub generate_report {
'onhand' => { 'text' => $locale->text('Stocked Qty'), },
'ordnumber' => { 'text' => $locale->text('Order Number'), },
'partnumber' => { 'text' => $locale->text('Part Number'), },
- 'partsgroup' => { 'text' => $locale->text('Group'), },
+ 'partsgroup' => { 'text' => $locale->text('Partsgroup'), },
'priceupdate' => { 'text' => $locale->text('Updated'), },
'quonumber' => { 'text' => $locale->text('Quotation'), },
'rop' => { 'text' => $locale->text('ROP'), },
@@ -290,12 +193,15 @@ sub generate_report {
'serialnumber' => { 'text' => $locale->text('Serial Number'), },
'soldtotal' => { 'text' => $locale->text('Qty in Selected Records'), },
'name' => { 'text' => $locale->text('Name in Selected Records'), },
- 'transdate' => { 'text' => $locale->text('Transdate'), },
+ 'transdate' => { 'text' => $locale->text('Transdate Record'), },
'unit' => { 'text' => $locale->text('Unit'), },
'weight' => { 'text' => $locale->text('Weight'), },
'shop' => { 'text' => $locale->text('Shop article'), },
+ 'type_and_classific' => { 'text' => $locale->text('Type'), },
'projectnumber' => { 'text' => $locale->text('Project Number'), },
'projectdescription' => { 'text' => $locale->text('Project Description'), },
+ 'warehouse' => { 'text' => $locale->text('Default Warehouse'), },
+ 'bin' => { 'text' => $locale->text('Default Bin'), },
);
$revers = $form->{revers};
@@ -368,8 +274,8 @@ sub generate_report {
transdatefrom => $locale->text('From') . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1),
transdateto => $locale->text('To (time)') . " " . $locale->date(\%myconfig, $form->{transdateto}, 1),
partnumber => $locale->text('Part Number') . ": '$form->{partnumber}'",
- partsgroup => $locale->text('Group') . ": '$form->{partsgroup}'",
- partsgroup_id => $locale->text('Group') . ": '$pg_name'",
+ partsgroup => $locale->text('Partsgroup') . ": '$form->{partsgroup}'",
+ partsgroup_id => $locale->text('Partsgroup') . ": '$pg_name'",
serialnumber => $locale->text('Serial Number') . ": '$form->{serialnumber}'",
description => $locale->text('Part Description') . ": '$form->{description}'",
make => $locale->text('Make') . ": '$form->{make}'",
@@ -418,11 +324,12 @@ sub generate_report {
$form->{l_linetotallastcost} = $form->{searchitems} eq 'assembly' && !$form->{bom} ? "" : 'Y' if $form->{l_lastcost};
$form->{l_linetotallistprice} = "Y" if $form->{l_listprice};
}
+ $form->{"l_type_and_classific"} = "Y";
- if ($form->{searchitems} eq 'service') {
+ if ($form->{l_service} && !$form->{l_assembly} && !$form->{l_part}) {
- # remove bin, weight and rop from list
- map { $form->{"l_$_"} = "" } qw(bin weight rop);
+ # remove warehouse, bin, weight and rop from list
+ map { $form->{"l_$_"} = "" } qw(bin weight rop warehouse);
$form->{l_onhand} = "";
@@ -458,6 +365,10 @@ sub generate_report {
flash('warning', $::locale->text('Soldtotal does not make sense without any bsooqr options'));
}
+ if ($form->{l_soldtotal} && ($form->{l_warehouse} || $form->{l_bin})) {
+ delete $form->{"l_$_"} for qw(bin warehouse);
+ flash('warning', $::locale->text('Sorry, I am too stupid to figure out the default warehouse/bin and the sold qty. I drop the default warehouse/bin option.'));
+ }
if ($form->{l_name} && !$bsooqr_mode) {
delete $form->{l_name};
@@ -466,14 +377,15 @@ sub generate_report {
IC->all_parts(\%myconfig, \%$form);
my @columns = qw(
- partnumber description notes partsgroup bin onhand rop soldtotal unit listprice
+ partnumber type_and_classific description notes partsgroup warehouse 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
insertdate shop
);
- my $pricegroups = SL::DB::Manager::Pricegroup->get_all(sort => 'id');
+ my $pricegroups = SL::DB::Manager::Pricegroup->get_all_sorted;
my @pricegroup_columns;
my %column_defs_pricegroups;
if ($form->{l_pricegroups}) {
@@ -499,6 +411,7 @@ sub generate_report {
my @hidden_variables = (
qw(l_subtotal l_linetotal searchitems itemstatus bom l_pricegroups insertdatefrom insertdateto),
+ qw(l_type_and_classific classification_id l_part l_service l_assembly l_assortment),
@itemstatus_keys,
@callback_keys,
map({ "cvar_$_->{name}" } @searchable_custom_variables),
@@ -509,7 +422,7 @@ sub generate_report {
my $callback = build_std_url('action=generate_report', grep { $form->{$_} } @hidden_variables);
my @sort_full = qw(partnumber description onhand soldtotal deliverydate insertdate shop);
- my @sort_no_revers = qw(partsgroup bin priceupdate invnumber ordnumber quonumber name image drawing serialnumber);
+ my @sort_no_revers = qw(partsgroup priceupdate invnumber ordnumber quonumber name image drawing serialnumber);
foreach my $col (@sort_full) {
$column_defs{$col}->{link} = join '&', $callback, "sort=$col", map { "$_=" . E($form->{$_}) } qw(revers lastsort);
@@ -525,13 +438,15 @@ sub generate_report {
'part' => $locale->text('part_list'),
'service' => $locale->text('service_list'),
'assembly' => $locale->text('assembly_list'),
+ 'article' => $locale->text('article_list'),
);
$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'),
+ 'raw_bottom_info_text' => $form->parse_html_template('ic/generate_report_bottom' ,
+ { PART_CLASSIFICATIONS => SL::DB::Manager::PartClassification->get_all_sorted }),
'output_format' => 'HTML',
'title' => $form->{title},
- 'attachment_basename' => $attachment_basenames{$form->{searchitems}} . strftime('_%Y%m%d', localtime time),
+ 'attachment_basename' => 'article_list' . strftime('_%Y%m%d', localtime time),
);
$report->set_options_from_form();
$locale->set_numberformat_wo_thousands_separator(\%myconfig) if lc($report->{options}->{output_format}) eq 'csv';
@@ -585,7 +500,7 @@ sub generate_report {
$soldtotal = 0 if ($form->{sold});
}
- my $edit_link = build_std_url('action=edit', 'id=' . E($ref->{id}), 'callback');
+ my $edit_link = build_std_url('script=controller.pl', 'action=Part/edit', 'part.id=' . E($ref->{id}), 'callback');
$row->{partnumber}->{link} = $edit_link;
$row->{description}->{link} = $edit_link;
@@ -641,6 +556,8 @@ sub generate_report {
map { $row->{$_}{link} = $ref->{$_} } qw(drawing microfiche);
$row->{notes}{data} = SL::HTML::Util->strip($ref->{notes});
+ $row->{type_and_classific}{data} = $::request->presenter->type_abbreviation($ref->{part_type}).
+ $::request->presenter->classification_abbreviation($ref->{classification_id});
$report->add_data($row);
@@ -652,7 +569,7 @@ sub generate_report {
(!$next_ref->{assemblyitem} && ($same_item ne $next_ref->{ $form->{sort} })))) {
my $row = { map { $_ => { 'class' => 'listsubtotal', } } @columns };
- if (($form->{searchitems} ne 'assembly') || !$form->{bom}) {
+ if ( !$form->{l_assembly} || !$form->{bom}) {
$row->{soldtotal}->{data} = $form->format_amount(\%myconfig, $subtotals{soldtotal});
}
@@ -676,735 +593,58 @@ sub generate_report {
$report->add_data($row);
}
+ setup_ic_generate_report_action_bar();
$report->generate_with_headers();
$lxdebug->leave_sub();
} #end generate_report
-sub parts_subtotal {
- $lxdebug->enter_sub();
-
- $auth->assert('part_service_assembly_edit');
-
- my (%column_data);
- my ($column_index, $subtotalonhand, $subtotalsellprice, $subtotallastcost, $subtotallistprice) = @_;
-
- map { $column_data{$_} = "
| " } @{ $column_index };
- $$subtotalonhand = 0 if ($form->{searchitems} eq 'assembly' && $form->{bom});
-
- $column_data{onhand} =
- ""
- . $form->format_amount(\%myconfig, $$subtotalonhand)
- . " | ";
-
- $column_data{linetotalsellprice} =
- ""
- . $form->format_amount(\%myconfig, $$subtotalsellprice, 2)
- . " | ";
- $column_data{linetotallistprice} =
- ""
- . $form->format_amount(\%myconfig, $$subtotallistprice, 2)
- . " | ";
- $column_data{linetotallastcost} =
- ""
- . $form->format_amount(\%myconfig, $$subtotallastcost, 2)
- . " | ";
-
- $$subtotalonhand = 0;
- $$subtotalsellprice = 0;
- $$subtotallistprice = 0;
- $$subtotallastcost = 0;
-
- print "";
-
- map { print "\n$column_data{$_}" } @{ $column_index };
-
- print qq|
-
-|;
-
- $lxdebug->leave_sub();
-}
-
-sub edit {
- $lxdebug->enter_sub();
-
- $auth->assert('part_service_assembly_details');
-
- # show history button
- $form->{javascript} = qq||;
- #/show hhistory button
- IC->get_part(\%myconfig, \%$form);
-
- $form->{"original_partnumber"} = $form->{"partnumber"};
-
- my $title = 'Edit ' . ucfirst $form->{item};
- $form->{title} = $locale->text($title);
-
- &link_part;
- &display_form;
-
- $lxdebug->leave_sub();
-}
-
-sub link_part {
- $lxdebug->enter_sub();
-
- $auth->assert('part_service_assembly_details');
-
- IC->create_links("IC", \%myconfig, \%$form);
-
- # currencies
- map({ $form->{selectcurrency} .= "