use SL::CVar;
use SL::IC;
use SL::Helper::Flash;
+use SL::HTML::Util;
use SL::ReportGenerator;
#use SL::PE;
# $form->header;
#
# print qq|
+# <h1>| . $locale->text('choice part') . qq|</h1>
# <form method=post action=ic.pl>
# <table width=100%>
-# <tr>
-# <th class=listtop colspan=6>| . $locale->text('choice part') . qq|</th>
-# </tr>
-# <tr height="5"></tr>
# <tr class=listheading>
# <th> </th>
# <th class=listheading>| . $locale->text('Part Number') . qq|</th>
my $colspan = $#column_index + 1;
print qq|
+ <h1>$form->{title}</h1>
+
<table width=100%>
- <tr>
- <th class=listtop colspan=$colspan>$form->{title}</th>
- </tr>
- <tr height="5"></tr>
<tr><td colspan=$colspan>$option</td></tr>
'sellprice' => { 'text' => $locale->text('Sell Price'), },
'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'), },
'unit' => { 'text' => $locale->text('Unit'), },
'weight' => { 'text' => $locale->text('Weight'), },
# 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'));
+ }
+ if ($form->{l_name} && !$bsooqr_mode) {
+ delete $form->{l_name};
+ flash('warning', $::locale->text('Name does not make sense without any bsooqr options'));
+ }
IC->all_parts(\%myconfig, \%$form);
my @columns = qw(
'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},
$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';
if ($ref->{module} eq 'oe') {
# für oe gibt es vier fälle, jeweils nach kunde oder lieferant unterschiedlich:
#
- # | ist bestellt | Vom Kunde bestellt | -> edit_oe_ord_link
- # | Anfrage | Angebot | -> edit_oe_quo_link
+ # | 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');
}
map { $row->{$_}{link} = $ref->{$_} } qw(drawing microfiche);
+ $row->{notes}{data} = SL::HTML::Util->strip($ref->{notes});
+
$report->add_data($row);
my $next_ref = $form->{parts}[$idx + 1];
$form->{bin_id} ||= $default_bin_id || $form->{WAREHOUSES}->[$max -1]->{BINS}->[0]->{id};
}
+ $form->{LANGUAGES} = SL::DB::Manager::Language->get_all_sorted;
+ $form->{translations_map} = { map { ($_->{language_id} => $_) } @{ $form->{translations} || [] } };
IC->retrieve_buchungsgruppen(\%myconfig, $form);
@{ $form->{BUCHUNGSGRUPPEN} } = grep { $_->{id} eq $form->{buchungsgruppen_id} || ($form->{id} && $form->{orphaned}) || !$form->{id} } @{ $form->{BUCHUNGSGRUPPEN} };
$form->{CUSTOM_VARIABLES} = CVar->get_custom_variables('module' => 'IC', 'trans_id' => $form->{id});
- CVar->render_inputs('variables' => $form->{CUSTOM_VARIABLES}, show_disabled_message => 1)
+ my ($null, $partsgroup_id) = split /--/, $form->{partsgroup};
+
+ CVar->render_inputs('variables' => $form->{CUSTOM_VARIABLES}, show_disabled_message => 1, partsgroup_id => $partsgroup_id)
if (scalar @{ $form->{CUSTOM_VARIABLES} });
+ $::request->layout->use_javascript("${_}.js") for qw(ckeditor/ckeditor ckeditor/adapters/jquery);
$form->header;
#print $form->parse_html_template('ic/form_header', { ALL_PRICE_FACTORS => $form->{ALL_PRICE_FACTORS},
# ALL_UNITS => $form->{ALL_UNITS},
# parse pricegroups. and no, don't rely on check_form for this...
map { $form->{"price_$_"} = $form->parse_amount(\%myconfig, $form->{"price_$_"}) } 1 .. $form->{price_rows};
- $form->{sellprice} = $form->parse_amount(\%myconfig, $form->{sellprice});
+ $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) for qw(sellprice listprice ve gv);
+
+ if ($form->{item} eq 'part') {
+ $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) for qw(weight rop);
+ }
# same for makemodel lastcosts
# but parse_amount not necessary for assembly component lastcosts
unless ($form->{item} eq "assembly") {
map { $form->{"lastcost_$_"} = $form->parse_amount(\%myconfig, $form->{"lastcost_$_"}) } 1 .. $form->{"makemodel_rows"};
- };
- $form->{listprice} = $form->parse_amount(\%myconfig, $form->{listprice});
+ $form->{lastcost} = $form->parse_amount(\%myconfig, $form->{lastcost});
+ }
if ($form->{item} eq "assembly") {
my $i = $form->{assembly_rows};
} else {
$i = $form->{assembly_rows};
}
- $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"});
+ $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"} > 0);
$form->{sellprice} -= $form->{"sellprice_$i"} * $form->{"qty_$i"};
$form->{weight} -= $form->{"weight_$i"} * $form->{"qty_$i"};
# set values for last invoice/order item
$i = $form->{rowcount};
- $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"});
+ $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"} > 0);
map { $form->{"${_}_$i"} = $newform{$_} } qw(partnumber description bin unit listprice inventory_accno income_accno expense_accno sellprice lastcost price_factor_id);
map { $form->{"ic_${_}_$i"} = $newform{$_} } @ic_cvar_fields;
$lxdebug->leave_sub();
}
-sub parts_language_selection {
- $lxdebug->enter_sub();
-
- $auth->assert('part_service_assembly_edit');
-
- my $languages = IC->retrieve_languages(\%myconfig, $form);
-
- if ($form->{language_values} ne "") {
- foreach my $item (split(/---\+\+\+---/, $form->{language_values})) {
- my ($language_id, $translation, $longdescription) = split(/--\+\+--/, $item);
-
- foreach my $language (@{ $languages }) {
- next unless ($language->{id} == $language_id);
-
- $language->{translation} = $translation;
- $language->{longdescription} = $longdescription;
-
- $language->{translation_area} = ($language->{translation_rows} = $form->numtextrows($language->{translation}, 40)) > 1;
- $language->{longdescription_rows} = max 4, $form->numtextrows($language->{longdescription}, 40);
-
- last;
- }
- }
- }
-
- my @header_sort = qw(name longdescription);
- my %header_title = ( "name" => $locale->text("Name"),
- "longdescription" => $locale->text("Long Description"),
- );
-
- my @header =
- map(+{ "column_title" => $header_title{$_},
- "column" => $_,
- },
- @header_sort);
-
- $form->{"title"} = $locale->text("Language Values");
- $form->header();
- print $form->parse_html_template("ic/parts_language_selection", { "HEADER" => \@header,
- "LANGUAGES" => $languages, });
-
- $lxdebug->leave_sub();
-}
-
sub ajax_autocomplete {
$main::lxdebug->enter_sub();