X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Fic.pl;h=28d41f3b3928c0aaac41a001517a5b4fe21ca44f;hb=b6133a726fa261cb97f2c105ea4a93161609d6ca;hp=22263dec8decf3b9019a8b2badfe391ddb06e74c;hpb=40782548cf82ac1e4c0fe417113a4cb3072e9390;p=kivitendo-erp.git diff --git a/bin/mozilla/ic.pl b/bin/mozilla/ic.pl index 22263dec8..28d41f3b3 100644 --- a/bin/mozilla/ic.pl +++ b/bin/mozilla/ic.pl @@ -32,12 +32,22 @@ #====================================================================== #$locale->text('ea'); +use POSIX qw(strftime); + use SL::IC; +use SL::ReportGenerator; #use SL::PE; -require "$form->{path}/io.pl"; +# use strict; +#use warnings; + +# global imports +our ($form, $locale, %myconfig, $lxdebug); + +require "bin/mozilla/io.pl"; require "bin/mozilla/common.pl"; +require "bin/mozilla/reportgenerator.pl"; 1; @@ -49,7 +59,7 @@ sub add { $form->{title} = $locale->text('Add ' . ucfirst $form->{item}); $form->{callback} = - "$form->{script}?action=add&item=$form->{item}&path=$form->{path}&login=$form->{login}&password=$form->{password}" + "$form->{script}?action=add&item=$form->{item}&login=$form->{login}&password=$form->{password}" unless $form->{callback}; $form->{"unit_changeable"} = 1; @@ -64,6 +74,8 @@ sub add { sub search { $lxdebug->enter_sub(); + my ($button1, $button2, $onhand, $makemodel, $serialnumber, $l_serialnumber, $toplevel, $bought); + $form->{title} = (ucfirst $form->{searchitems}) . "s"; $form->{title} = $locale->text($form->{title}); @@ -80,8 +92,8 @@ sub search { # $locale->text('Services') # use JavaScript Calendar or not - $form->{jsscript} = $jscalendar; - $jsscript = ""; + $form->{jsscript} = 1; + my $jsscript = ""; if ($form->{jsscript}) { # with JavaScript Calendar @@ -375,7 +387,6 @@ $jsscript -{path}> {login}> {password}> @@ -401,11 +412,13 @@ $jsscript sub search_update_prices { $lxdebug->enter_sub(); + my ($onhand, $makemodel, $serialnumber, $l_serialnumber, $toplevel, $bought); + $form->{title} = $locale->text('Update prices'); IC->get_pricegroups(\%myconfig, \%$form); # use JavaScript Calendar or not -# $form->{jsscript} = $jscalendar; +# $form->{jsscript} = 1; # $jsscript = ""; # if ($form->{jsscript}) { # @@ -538,7 +551,7 @@ sub search_update_prices {
| - . $locale->text('Part Number') . qq| | -| - . $locale->text('Part Description') . qq| | +| . $locale->text('Part Number') . qq| | +| . $locale->text('Part Description') . qq| | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
@@ -658,7 +671,6 @@ sub choice { print qq| -{path}> {login}> {password}> @@ -690,9 +702,10 @@ sub choice { {extras}>|; + my ($partnumber, $description, $unit, $sellprice, $soldtotal); # if choice set data if ($form->{ndx}) { - for ($i = 0; $i < $form->{ndxs_counter}; $i++) { + for (my $i = 0; $i < $form->{ndxs_counter}; $i++) { # prepeare data $partnumber = $form->{"totop100_partnumber_$j"}; @@ -716,7 +729,7 @@ sub choice { # set data for next page if (($form->{ndxs_counter}) > 0) { - for ($i = 1; ($i < $form->{ndxs_counter} + 1); $i++) { + for (my $i = 1; ($i < $form->{ndxs_counter} + 1); $i++) { $partnumber = $form->{"totop100_partnumber_$i"}; $description = $form->{"totop100_description_$i"}; $unit = $form->{"totop100_unit_$i"}; @@ -748,6 +761,9 @@ sub choice { sub list { $lxdebug->enter_sub(); + our ($lastndx); + our ($partnumber, $description, $unit, $sellprice, $soldtotal); + my @sortorders = ("", "partnumber", "description", "all"); my $sortorder = $sortorders[($form->{description} ? 2 : 0) + ($form->{partnumber} ? 1 : 0)]; IC->get_parts(\%myconfig, \%$form, $sortorder); @@ -805,7 +821,6 @@ sub list { | {module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber} | " + ? "{module}.pl?action=edit&type=invoice&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{invnumber} | " : "$ref->{invnumber} | "; $column_data{ordnumber} = ($ref->{module} eq 'oe') - ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber} | " + ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{ordnumber} | " : "$ref->{ordnumber} | "; $column_data{quonumber} = ($ref->{module} eq 'oe' && !$ref->{ordnumber}) - ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber} | " + ? "{module}.pl?action=edit&type=$ref->{type}&id=$ref->{trans_id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{quonumber} | " : "$ref->{quonumber} | "; $column_data{name} = "$ref->{name} | "; @@ -1436,7 +1446,6 @@ sub addtop100 { - - - -|; + $report->generate_with_headers(); $lxdebug->leave_sub(); } #end generate_report sub parts_subtotal { $lxdebug->enter_sub(); + + # imports + our (%column_data, @column_index); + our ($subtotalonhand, $totalsellprice, $totallastcost, $totallistprice, $subtotalsellprice, $subtotallastcost, $subtotallistprice); map { $column_data{$_} = "" } @column_index; $subtotalonhand = 0 if ($form->{searchitems} eq 'assembly' && $form->{bom}); @@ -2070,15 +1898,15 @@ sub link_part { split(/:/, $form->{currencies})); # parts and assemblies have the same links - $item = $form->{item}; + my $item = $form->{item}; if ($form->{item} eq 'assembly') { $item = 'part'; } # build the popup menus $form->{taxaccounts} = ""; - foreach $key (keys %{ $form->{IC_links} }) { - foreach $ref (@{ $form->{IC_links}{$key} }) { + foreach my $key (keys %{ $form->{IC_links} }) { + foreach my $ref (@{ $form->{IC_links}{$key} }) { # if this is a tax field if ($key =~ /IC_tax/) { @@ -2132,7 +1960,7 @@ sub link_part { if ($form->{item} eq 'assembly') { - foreach $i (1 .. $form->{assembly_rows}) { + foreach my $i (1 .. $form->{assembly_rows}) { if ($form->{"partsgroup_id_$i"}) { $form->{"partsgroup_$i"} = qq|$form->{"partsgroup_$i"}--$form->{"partsgroup_id_$i"}|; @@ -2155,18 +1983,24 @@ sub link_part { sub form_header { $lxdebug->enter_sub(); + my ($payment, $rows, $notes, $description, $ean, $buchungsgruppe, $partsgroup, $group, $tax, $lastcost, $eur, $linkaccounts, $weight, $n, $rop, $bin, $vegv); + my ($notdiscountableok, $notdiscountable); + my ($formula, $formula_label, $imagelinks, $obsolete, $shopok, $shop); + + $form->get_lists('price_factors' => 'ALL_PRICE_FACTORS'); + map({ $form->{$_} = $form->format_amount(\%myconfig, $form->{$_}, -2) } qw(sellprice listprice lastcost gv)); map { $form->{$_} = $form->format_amount(\%myconfig, $form->{$_}) } qw(weight rop stock); - foreach $item (qw(partnumber description unit notes)) { + foreach my $item (qw(partnumber description unit notes)) { $form->{$item} =~ s/\"/"/g; } $payment = qq||; - foreach $item (@{ $form->{payment_terms} }) { + foreach my $item (@{ $form->{payment_terms} }) { if ($form->{payment_id} eq $item->{id}) { $payment .= qq||; } else { @@ -2191,13 +2025,13 @@ sub form_header { $ean = qq||; - foreach $item (split / /, $form->{taxaccounts}) { + foreach my $item (split / /, $form->{taxaccounts}) { $form->{"IC_tax_$item"} = ($form->{"IC_tax_$item"}) ? "checked" : ""; } IC->retrieve_buchungsgruppen(\%myconfig, $form); if (@{ $form->{BUCHUNGSGRUPPEN} }) { - foreach $item (@{ $form->{BUCHUNGSGRUPPEN} }) { + foreach my $item (@{ $form->{BUCHUNGSGRUPPEN} }) { if ($item->{id} == $form->{buchungsgruppen_id}) { $form->{selectbuchungsgruppe} .= " |
| - . $locale->text('Geschäftsvolumen') . qq| | + . $locale->text('Business Volume') . qq|{gv}> | ||||||||||
@@ -2461,7 +2298,8 @@ sub form_header { # type=submit $locale->text('Edit Service') # type=submit $locale->text('Edit Assembly') # use JavaScript Calendar or not - $form->{jsscript} = $jscalendar; + my ($jsscript, $button1); + $form->{jsscript} = 1; $jsscript = ""; if ($form->{jsscript}) { @@ -2490,6 +2328,22 @@ sub form_header { $unit_select .= AM->unit_select_html($units, "unit", $form->{"unit"}); } + my $price_factor; + if (0 < scalar @{ $form->{ALL_PRICE_FACTORS} }) { + my @values = ('', map { $_->{id} } @{ $form->{ALL_PRICE_FACTORS} }); + my %labels = map { $_->{id} => $_->{description} } @{ $form->{ALL_PRICE_FACTORS} }; + + $price_factor = + qq| | |||||||||||
| + . $locale->text('Price Factor') + . qq| | | + . NTI($cgi->popup_menu('-name' => 'price_factor_id', + '-default' => $form->{price_factor_id}, + '-values' => \@values, + '-labels' => \%labels)) + . qq| | ||||||||||
| . $locale->text('Notes') . qq| | -| . $locale->text('Formula') . qq| | +$formula_label | |||||||||
$notes | - $formel + $formula | ||||||||||
{sellprice}> | |||||||||||
| . $locale->text('Unit') . qq| | $unit_select | @@ -2650,7 +2505,6 @@ sub form_footer { } print qq| - {path}> {login}> {password}> @@ -2707,7 +2561,7 @@ sub form_footer { if (!$form->{previousform}) { if ($form->{menubar}) { - require "$form->{path}/menu.pl"; + require "bin/mozilla/menu.pl"; &menubar; } } @@ -2737,10 +2591,7 @@ sub form_footer { sub makemodel_row { $lxdebug->enter_sub(); my ($numrows) = @_; - - $form->{"make_$i"} =~ s/\"/"/g; - $form->{"model_$i"} =~ s/\"/"/g; - + print qq|||||||||||
@@ -2751,7 +2602,9 @@ sub makemodel_row { | |||||||||||
@@ -2772,6 +2625,10 @@ sub makemodel_row { sub assembly_row { $lxdebug->enter_sub(); my ($numrows) = @_; + my (@column_index, %column_data, %column_header); + my ($nochange, $callback, $previousform, $linetotal, $href); + + our ($deliverydate); # ToDO: cjeck if this indeed comes from global context @column_index = qw(runningnumber qty unit bom partnumber description partsgroup total); @@ -2792,7 +2649,7 @@ sub assembly_row { $previousform = ""; # save form variables in a previousform variable - foreach $key (sort keys %$form) { + foreach my $key (sort keys %$form) { # escape ampersands $form->{$key} =~ s/&/%26/g; @@ -2839,7 +2696,7 @@ sub assembly_row { | $form->{"partnumber_$i"} | |; $column_data{runningnumber} = @@ -2940,7 +2797,7 @@ sub update { $lxdebug->enter_sub(); if ($form->{item} eq "assembly") { - $i = $form->{assembly_rows}; + my $i = $form->{assembly_rows}; # if last row is empty check the form otherwise retrieve item if ( ($form->{"partnumber_$i"} eq "") @@ -2953,7 +2810,7 @@ sub update { IC->assembly_item(\%myconfig, \%$form); - $rows = scalar @{ $form->{item_list} }; + my $rows = scalar @{ $form->{item_list} }; if ($rows) { $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"}); @@ -2983,26 +2840,19 @@ sub update { } } - } - if ($form->{item} eq "part") { + } elsif (($form->{item} eq 'part') || ($form->{item} eq 'service')) { &check_form; } - if ($form->{item} eq 'service') { - map({ $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } - qw(sellprice listprice lastcost)); - &form_header; - &price_row; - &form_footer; - } - $lxdebug->leave_sub(); } sub save { $lxdebug->enter_sub(); + my ($parts_id, %newform, $previousform, $amount, $callback); + # check if there is a part number - commented out, cause there is an automatic allocation of numbers # $form->isblank("partnumber", $locale->text(ucfirst $form->{item}." Part Number missing!")); @@ -3034,20 +2884,20 @@ sub save { # $locale->text('Assembly Number missing!') # save part - $lxdebug->message(LXDebug::DEBUG1, - "ic.pl: sellprice in save = $form->{sellprice}\n"); - $rc = IC->save(\%myconfig, \%$form); - if ($rc == 3) { + $lxdebug->message($LXDebug::DEBUG1, "ic.pl: sellprice in save = $form->{sellprice}\n"); + if (IC->save(\%myconfig, \%$form) == 3) { $form->error($locale->text('Partnumber not unique!')); } # saving the history if(!exists $form->{addition}) { + $form->{snumbers} = qq|partnumber_| . $form->{partnumber}; $form->{addition} = "SAVED"; $form->save_history($form->dbconnect(\%myconfig)); } # /saving the history $parts_id = $form->{id}; + my $i; # load previous variables if ($form->{previousform}) { @@ -3060,8 +2910,8 @@ sub save { map { delete $form->{$_} } keys %newform; # now take it apart and restore original values - foreach $item (split /&/, $previousform) { - ($key, $value) = split /=/, $item, 2; + foreach my $item (split /&/, $previousform) { + my ($key, $value) = split m/=/, $item, 2; $value =~ s/%26/&/g; $form->{$key} = $value; } @@ -3081,8 +2931,7 @@ sub save { $form->{weight} -= $form->{"weight_$i"} * $form->{"qty_$i"}; # change/add values for assembly item - map { $form->{"${_}_$i"} = $newform{$_} } - qw(partnumber description bin unit weight listprice sellprice inventory_accno income_accno expense_accno); + map { $form->{"${_}_$i"} = $newform{$_} } qw(partnumber description bin unit weight listprice sellprice inventory_accno income_accno expense_accno price_factor_id); $form->{sellprice} += $form->{"sellprice_$i"} * $form->{"qty_$i"}; $form->{weight} += $form->{"weight_$i"} * $form->{"qty_$i"}; @@ -3093,44 +2942,46 @@ sub save { $i = $form->{rowcount}; $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"}); - map { $form->{"${_}_$i"} = $newform{$_} } - qw(partnumber description bin unit listprice inventory_accno income_accno expense_accno sellprice); + map { $form->{"${_}_$i"} = $newform{$_} } qw(partnumber description bin unit listprice inventory_accno income_accno expense_accno sellprice lastcost price_factor_id); + $form->{"sellprice_$i"} = $newform{lastcost} if ($form->{vendor_id}); + if ($form->{exchangerate} != 0) { $form->{"sellprice_$i"} /= $form->{exchangerate}; } - $lxdebug->message(LXDebug::DEBUG1, - qq|sellprice_$i in previousform 2 = | - . $form->{"sellprice_$i"} . qq|\n|); - map { $form->{"taxaccounts_$i"} .= "$_ " } split / /, - $newform{taxaccount}; + + $lxdebug->message($LXDebug::DEBUG1, qq|sellprice_$i in previousform 2 = | . $form->{"sellprice_$i"} . qq|\n|); + + map { $form->{"taxaccounts_$i"} .= "$_ " } split / /, $newform{taxaccount}; chop $form->{"taxaccounts_$i"}; - foreach $item (qw(description rate taxnumber)) { - $index = $form->{"taxaccounts_$i"} . "_$item"; + foreach my $item (qw(description rate taxnumber)) { + my $index = $form->{"taxaccounts_$i"} . "_$item"; $form->{$index} = $newform{$index}; } # credit remaining calculation - $amount = - $form->{"sellprice_$i"} * (1 - $form->{"discount_$i"} / 100) * - $form->{"qty_$i"}; - map { $form->{"${_}_base"} += $amount } - (split / /, $form->{"taxaccounts_$i"}); - map { $amount += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } - split / /, $form->{"taxaccounts_$i"} - if !$form->{taxincluded}; + $amount = $form->{"sellprice_$i"} * (1 - $form->{"discount_$i"} / 100) * $form->{"qty_$i"}; + + map { $form->{"${_}_base"} += $amount } (split / /, $form->{"taxaccounts_$i"}); + map { $amount += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } split / /, $form->{"taxaccounts_$i"} if !$form->{taxincluded}; $form->{creditremaining} -= $amount; # redo number formatting, because invoice parse them! - $i = $form->{rowcount}; - map { - $form->{"${_}_$i"} = - $form->format_amount(\%myconfig, $form->{"${_}_$i"}) - } qw(weight listprice sellprice rop); + map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}) } qw(weight listprice sellprice rop); } $form->{"id_$i"} = $parts_id; + + # Get the actual price factor (not just the ID) for the marge calculation. + $form->get_lists('price_factors' => 'ALL_PRICE_FACTORS'); + foreach my $pfac (@{ $form->{ALL_PRICE_FACTORS} }) { + next if ($pfac->{id} != $newform{price_factor_id}); + $form->{"marge_price_factor_$i"} = $pfac->{factor}; + last; + } + delete $form->{ALL_PRICE_FACTORS}; + delete $form->{action}; # restore original callback @@ -3141,17 +2992,15 @@ sub save { $form->{makemodel_rows}--; # put callback together - foreach $key (keys %$form) { + foreach my $key (keys %$form) { # do single escape for Apache 2.0 - $value = $form->escape($form->{$key}, 1); + my $value = $form->escape($form->{$key}, 1); $callback .= qq|&$key=$value|; } $form->{callback} = $callback; } - $lxdebug->message(LXDebug::DEBUG1, - qq|ic.pl: sellprice_$i nach sub save = | - . $form->{"sellprice_$i"} . qq|\n|); + $lxdebug->message($LXDebug::DEBUG1, qq|ic.pl: sellprice_$i nach sub save = | . $form->{"sellprice_$i"} . qq|\n|); # redirect $form->redirect; @@ -3164,6 +3013,7 @@ sub save_as_new { # saving the history if(!exists $form->{addition}) { + $form->{snumbers} = qq|partnumber_| . $form->{partnumber}; $form->{addition} = "SAVED AS NEW"; $form->save_history($form->dbconnect(\%myconfig)); } @@ -3181,11 +3031,12 @@ sub delete { $lxdebug->enter_sub(); # saving the history if(!exists $form->{addition}) { + $form->{snumbers} = qq|partnumber_| . $form->{partnumber}; $form->{addition} = "DELETED"; $form->save_history($form->dbconnect(\%myconfig)); } # /saving the history - $rc = IC->delete(\%myconfig, \%$form); + my $rc = IC->delete(\%myconfig, \%$form); # redirect $form->redirect($locale->text('Item deleted!')) if ($rc > 0); @@ -3208,7 +3059,7 @@ sub price_row {| . $locale->text('Preis') . qq| | |; - for $i (1 .. $numrows) { + for my $i (1 .. $numrows) { print qq||||||||||
$form->{"pricegroup_$i"} | @@ -3230,13 +3081,14 @@ sub price_row { sub parts_language_selection { $lxdebug->enter_sub(); + our ($onload); my $languages = IC->retrieve_languages(\%myconfig, $form); my $callback = "$form->{script}?action=parts_language_selection&"; map({ $callback .= "$_=" . $form->escape($form->{$_}) . "&" } - (qw(login path password name input_name), grep({ /^[fl]_/ } keys %$form))); + (qw(login password name input_name), grep({ /^[fl]_/ } keys %$form))); my @header_sort = qw(name longdescription); my %header_title = ( "name" => $locale->text("Name"),