X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fam.pl;h=7084aa388b7c52c0f181b9546efc3ec768f8d0d3;hb=bdaa8c2f669c9ddcc2f0c8989fed52559d59be43;hp=a21cfbbfd789166aceb5bdd5136cf7939e9a1eeb;hpb=5bfd9281b2152b84f444469eec2674dc8fc4f631;p=kivitendo-erp.git diff --git a/bin/mozilla/am.pl b/bin/mozilla/am.pl index a21cfbbfd..7084aa388 100644 --- a/bin/mozilla/am.pl +++ b/bin/mozilla/am.pl @@ -40,6 +40,8 @@ use Data::Dumper; 1; +require "$form->{path}/common.pl"; + # end of main sub add { &{"add_$form->{type}"} } @@ -92,14 +94,13 @@ sub account_header { $form->{description} =~ s/\"/"/g; if (@{ $form->{TAXKEY} }) { - $form->{selecttaxkey} = ""; @@ -330,8 +331,8 @@ sub account_header { {inventory_accno_id}> {income_accno_id}> {expense_accno_id}> -{fxgain_accno_id}> -{fxloss_accno_id}> +{fxgain_accno_id}> +{fxloss_accno_id}> @@ -363,7 +364,9 @@ sub account_header {  | . $locale->text('Revenue') . qq|\n
 | - . $locale->text('Expense') . qq| + . $locale->text('Expense') . qq|
+  | + . $locale->text('Costs') . qq||; + + $form->header; + + print qq| + + +
   | @@ -479,7 +482,6 @@ sub form_footer { {password}>
|; -#print(STDERR "$form->{type} TYPE $form->{new_chart_valid} CHART_VALID\n"); if ((!$form->{id}) || ($form->{id} && $form->{orphaned}) || (($form->{type} eq "account") && (!$form->{new_chart_valid}))) { print qq| |; } - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - print qq| @@ -823,11 +820,6 @@ sub gifi_footer { } } - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - print qq| @@ -998,14 +990,8 @@ sub list_department { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Add') . qq|"> - print qq| @@ -1090,6 +1076,183 @@ sub delete_department { $lxdebug->leave_sub(); } +sub add_lead { + $lxdebug->enter_sub(); + + $form->{title} = "Add"; + + $form->{callback} = + "$form->{script}?action=add_lead&path=$form->{path}&login=$form->{login}&password=$form->{password}" + unless $form->{callback}; + + &lead_header; + &form_footer; + + $lxdebug->leave_sub(); +} + +sub edit_lead { + $lxdebug->enter_sub(); + + $form->{title} = "Edit"; + + AM->get_lead(\%myconfig, \%$form); + + &lead_header; + + $form->{orphaned} = 1; + &form_footer; + + $lxdebug->leave_sub(); +} + +sub list_lead { + $lxdebug->enter_sub(); + + AM->lead(\%myconfig, \%$form); + + $form->{callback} = + "$form->{script}?action=list_lead&path=$form->{path}&login=$form->{login}&password=$form->{password}"; + + $callback = $form->escape($form->{callback}); + + $form->{title} = $locale->text('Lead'); + + @column_index = qw(description cost profit); + + $column_header{description} = + qq|
| + . $locale->text('Description') + . qq|
+ + + + + +|; + + map { print "$column_header{$_}\n" } @column_index; + + print qq| + +|; + + foreach $ref (@{ $form->{ALL} }) { + + $i++; + $i %= 2; + + print qq| + +|; + + $lead = $ref->{lead}; + + $column_data{description} = + qq||; + + map { print "$column_data{$_}\n" } @column_index; + + print qq| + +|; + } + + print qq| + + + +
$form->{title}
{script}?action=edit_lead&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{lead}

+ +
+
{script}> + + + + + +{path}> +{login}> +{password}> + + + +
+ + + +|; + + $lxdebug->leave_sub(); +} + +sub lead_header { + $lxdebug->enter_sub(); + + $form->{title} = $locale->text("$form->{title} Lead"); + + # $locale->text('Add Lead') + # $locale->text('Edit Lead') + + $form->{description} =~ s/\"/"/g; + + $description = + qq||; + + $form->header; + + print qq| + + +
{script}> + +{id}> + + + + + + + + + + + + + +
$form->{title}
| . $locale->text('Description') . qq|$description

+|; + + $lxdebug->leave_sub(); +} + +sub save_lead { + $lxdebug->enter_sub(); + + $form->isblank("description", $locale->text('Description missing!')); + AM->save_lead(\%myconfig, \%$form); + $form->redirect($locale->text('lead saved!')); + + $lxdebug->leave_sub(); +} + +sub delete_lead { + $lxdebug->enter_sub(); + + AM->delete_lead(\%myconfig, \%$form); + $form->redirect($locale->text('lead deleted!')); + + $lxdebug->leave_sub(); +} + sub add_business { $lxdebug->enter_sub(); @@ -1218,14 +1381,7 @@ sub list_business { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|">
@@ -1349,7 +1505,7 @@ sub list_language { $form->{title} = $locale->text('Languages'); - @column_index = qw(description template_code article_code); + @column_index = qw(description template_code article_code output_numberformat output_dateformat output_longdates); $column_header{description} = qq|| @@ -1363,6 +1519,18 @@ sub list_language { qq|| . $locale->text('Article Code') . qq||; + $column_header{output_numberformat} = + qq|| + . $locale->text('Number Format') + . qq||; + $column_header{output_dateformat} = + qq|| + . $locale->text('Date Format') + . qq||; + $column_header{output_longdates} = + qq|| + . $locale->text('Long Dates') + . qq||; $form->header; @@ -1401,6 +1569,20 @@ sub list_language { $column_data{template_code} = qq|$ref->{template_code}|; $column_data{article_code} = qq|$ref->{article_code}|; + $column_data{output_numberformat} = + "" . + ($ref->{output_numberformat} ? $ref->{output_numberformat} : + $locale->text("use program settings")) . + ""; + $column_data{output_dateformat} = + "" . + ($ref->{output_dateformat} ? $ref->{output_dateformat} : + $locale->text("use program settings")) . + ""; + $column_data{output_longdates} = + "" . + ($ref->{output_longdates} ? $locale->text("Yes") : $locale->text("No")) . + ""; map { print "$column_data{$_}\n" } @column_index; @@ -1430,14 +1612,7 @@ sub list_language { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -1463,6 +1638,28 @@ sub language_header { $form->header; + my $numberformat = + qq||; + foreach $item (qw(1,000.00 1000.00 1.000,00 1000,00)) { + $numberformat .= + ($item eq $form->{output_numberformat}) + ? ""; + } + + my $dateformat = + qq||; + foreach $item (qw(mm-dd-yy mm/dd/yy dd-mm-yy dd/mm/yy dd.mm.yy yyyy-mm-dd)) { + $dateformat .= + ($item eq $form->{output_dateformat}) + ? ""; + } + print qq| @@ -1478,15 +1675,33 @@ sub language_header { | . $locale->text('Language') . qq| - + | . $locale->text('Template Code') . qq| - {template_code}> + | . $locale->text('Article Code') . qq| - {article_code}> + + + + | . $locale->text('Number Format') . qq| + + + + | . $locale->text('Date Format') . qq| + + + + | . $locale->text('Long Dates') . qq| + {output_longdates} ? " checked" : "") . + qq|>| . $locale->text("Yes") . + qq|{output_longdates} ? "" : " checked") . + qq|>| . $locale->text("No") . + qq|
@@ -1529,6 +1744,11 @@ sub add_buchungsgruppe { "$form->{script}?action=add_buchungsgruppe&path=$form->{path}&login=$form->{login}&password=$form->{password}" unless $form->{callback}; AM->get_buchungsgruppe(\%myconfig, \%$form); + $form->{"inventory_accno_id"} = $form->{"std_inventory_accno_id"}; + for (my $i = 0; 4 > $i; $i++) { + map({ $form->{"${_}_accno_id_$i"} = $form->{"std_${_}_accno_id"}; } + qw(income expense)); + } &buchungsgruppe_header; &form_footer; @@ -1582,19 +1802,19 @@ sub list_buchungsgruppe { . qq||; $column_header{income_accno_1} = qq|| - . $locale->text('Erlöse EU o. UStId') + . $locale->text('Erlöse EU m. UStId') . qq||; $column_header{expense_accno_1} = qq|| - . $locale->text('Aufwand EU o. UStId') + . $locale->text('Aufwand EU m. UStId') . qq||; $column_header{income_accno_2} = qq|| - . $locale->text('Erlöse EU m. UStId') + . $locale->text('Erlöse EU o. UStId') . qq||; $column_header{expense_accno_2} = qq|| - . $locale->text('Aufwand EU m. UStId') + . $locale->text('Aufwand EU o. UStId') . qq||; $column_header{income_accno_3} = qq|| @@ -1680,14 +1900,7 @@ sub list_buchungsgruppe { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -1706,50 +1919,33 @@ sub buchungsgruppe_header { # $locale->text('Buchungsgruppe hinzufügen') # $locale->text('Buchungsgruppe bearbeiten') - $form->{description} =~ s/\"/"/g; + my ($acc_inventory, $acc_income, $acc_expense) = ({}, {}, {}); + my %acc_type_map = ( + "IC" => $acc_inventory, + "IC_income" => $acc_income, + "IC_sale" => $acc_income, + "IC_expense" => $acc_expense, + "IC_cogs" => $acc_expense, + ); - # build the popup menus - $form->{taxaccounts} = ""; - foreach $key (keys %{ $form->{IC_links} }) { + foreach $key (keys(%acc_type_map)) { foreach $ref (@{ $form->{IC_links}{$key} }) { - - # if this is a tax field - if ($key =~ /IC_tax/) { - if ($key =~ /$item/) { - $form->{taxaccounts} .= "$ref->{accno} "; - $form->{"IC_tax_$ref->{accno}_description"} = - "$ref->{accno}--$ref->{description}"; - - if ($form->{id}) { - if ($form->{amount}{ $ref->{accno} }) { - $form->{"IC_tax_$ref->{accno}"} = "checked"; - } - } else { - $form->{"IC_tax_$ref->{accno}"} = "checked"; - } - } - } else { - - $form->{"select$key"} .= - "" } + sort({ $a->{"accno"} cmp $b->{"accno"} } + values(%{$acc_type_map{$type}})))); + } if ($form->{id}) { $form->{selectIC} =~ s/selected//g; - $form->{selectIC} =~ s/ value=\$form->{inventory_accno_id}/ value=\$form->{inventory_accno_id} selected/; + $form->{selectIC} =~ s/ value=$form->{inventory_accno_id}/ value=$form->{inventory_accno_id} selected/; $form->{selectIC_income} =~ s/selected//g; $form->{selectIC_income} =~ s/ value=$form->{income_accno_id_0}/ value=$form->{income_accno_id_0} selected/; $form->{selectIC_expense} =~ s/selected//g; @@ -1765,11 +1961,11 @@ sub buchungsgruppe_header { |; } else { $linkaccounts = qq| - |; - } + {inventory_accno_id}>|; + } - $linkaccounts .= qq| + $linkaccounts .= qq| | . $locale->text('Erlöse Inland') . qq| @@ -1844,7 +2040,7 @@ sub buchungsgruppe_header { | . $locale->text('Buchungsgruppe') . qq| - + $linkaccounts
@@ -1999,14 +2195,7 @@ sub list_printer { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -2086,207 +2275,6 @@ sub delete_printer { } -sub add_adr { - $lxdebug->enter_sub(); - - $form->{title} = "Add"; - - $form->{callback} = - "$form->{script}?action=add_adr&path=$form->{path}&login=$form->{login}&password=$form->{password}" - unless $form->{callback}; - - &adr_header; - &form_footer; - - $lxdebug->leave_sub(); -} - -sub edit_adr { - $lxdebug->enter_sub(); - - $form->{title} = "Edit"; - - AM->get_adr(\%myconfig, \%$form); - - &adr_header; - - $form->{orphaned} = 1; - &form_footer; - - $lxdebug->leave_sub(); -} - -sub list_adr { - $lxdebug->enter_sub(); - - AM->adr(\%myconfig, \%$form); - - $form->{callback} = - "$form->{script}?action=list_adr&path=$form->{path}&login=$form->{login}&password=$form->{password}"; - - $callback = $form->escape($form->{callback}); - - $form->{title} = $locale->text('ADR'); - - @column_index = qw(adr_code adr_description); - - $column_header{adr_description} = - qq|| - . $locale->text('ADR Description') - . qq||; - $column_header{adr_code} = - qq|| - . $locale->text('ADR Code') - . qq||; - - $form->header; - - print qq| - - - - - - - - - - - - - -
$form->{title}
- - -|; - - map { print "$column_header{$_}\n" } @column_index; - - print qq| - -|; - - foreach $ref (@{ $form->{ALL} }) { - - $i++; - $i %= 2; - - print qq| - -|; - - - $column_data{adr_code} = - qq||; - $column_data{adr_description} = qq||; - - - map { print "$column_data{$_}\n" } @column_index; - - print qq| - -|; - } - - print qq| -
{script}?action=edit_adr&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{adr_code}$ref->{adr_description}
-

- -
-
{script}> - - - - - -{path}> -{login}> -{password}> - -|; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| - -
- - - -|; - - $lxdebug->leave_sub(); -} - -sub adr_header { - $lxdebug->enter_sub(); - - $form->{title} = $locale->text("$form->{title} ADR"); - - # $locale->text('Add ADR') - # $locale->text('Edit ADR') - - $form->{adr_description} =~ s/\"/"/g; - $form->{adr_code} =~ s/\"/"/g; - - - $form->header; - - print qq| - - -
{script}> - -{id}> - - - - - - - - - - - - - - - - - -
$form->{title}
| . $locale->text('ADR Code') . qq|
| . $locale->text('ADR Description') . qq|

-|; - - $lxdebug->leave_sub(); -} - -sub save_adr { - $lxdebug->enter_sub(); - - $form->isblank("adr_description", $locale->text('ADR Description missing!')); - $form->isblank("adr_code", $locale->text('ADR Code missing!')); - AM->save_adr(\%myconfig, \%$form); - $form->redirect($locale->text('ADR saved!')); - - $lxdebug->leave_sub(); -} - - -sub delete_adr { - $lxdebug->enter_sub(); - - AM->delete_adr(\%myconfig, \%$form); - $form->redirect($locale->text('ADR deleted!')); - - $lxdebug->leave_sub(); -} - - sub add_payment { $lxdebug->enter_sub(); @@ -2296,6 +2284,9 @@ sub add_payment { "$form->{script}?action=add_payment&path=$form->{path}&login=$form->{login}&password=$form->{password}" unless $form->{callback}; + $form->{terms_netto} = 0; + $form->{terms_skonto} = 0; + $form->{percent_skonto} = 0; &payment_header; &form_footer; @@ -2414,21 +2405,14 @@ sub list_payment { - + {path}> {login}> {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|">
@@ -2470,10 +2454,6 @@ sub payment_header { | . $locale->text('Description') . qq| - - | . $locale->text('Ranking') . qq| - - | . $locale->text('Long Description') . qq| @@ -2640,14 +2620,8 @@ sub list_sic { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Add') . qq|"> - print qq| @@ -2770,14 +2744,8 @@ $form->{body} {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Edit') . qq|"> - print qq| @@ -2819,14 +2787,8 @@ $form->{body}
|; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Save') . qq|"> - print q| @@ -2874,6 +2836,58 @@ sub config { $myconfig{$item} =~ s/\\n/\r\n/g; } + @formats = (); + if ($opendocument_templates && $openofficeorg_writer_bin && + $xvfb_bin && (-x $openofficeorg_writer_bin) && (-x $xvfb_bin)) { + push(@formats, { "name" => $locale->text("PDF (OpenDocument/OASIS)"), + "value" => "opendocument_pdf" }); + } + if ($latex_templates) { + push(@formats, { "name" => $locale->text("PDF"), "value" => "pdf" }); + } + push(@formats, { "name" => "HTML", "value" => "html" }); + if ($latex_templates) { + push(@formats, { "name" => $locale->text("Postscript"), + "value" => "postscript" }); + } + if ($opendocument_templates) { + push(@formats, { "name" => $locale->text("OpenDocument/OASIS"), + "value" => "opendocument" }); + } + + if (!$myconfig{"template_format"}) { + $myconfig{"template_format"} = "pdf"; + } + my $template_format = ""; + foreach $item (@formats) { + $template_format .= + ""; + } + + if (!$myconfig{"default_media"}) { + $myconfig{"default_media"} = "screen"; + } + my %selected = ($myconfig{"default_media"} => "selected"); + my $default_media = qq| + + + +|; + + %selected = (); + $selected{$myconfig{"default_printer_id"}} = "selected" + if ($myconfig{"default_printer_id"}); + my $default_printer = qq||; + AM->printer(\%myconfig, $form); + foreach my $printer (@{$form->{"ALL"}}) { + $default_printer .= qq||; + } + %countrycodes = User->country_codes; $countrycodes = ''; foreach $key (sort { $countrycodes{$a} cmp $countrycodes{$b} } @@ -2925,8 +2939,19 @@ sub config { $form->header; - if ($myconfig{menustyle} eq "old") { $oldS = "checked"; } - else { $newS = "checked"; } + if ($myconfig{menustyle} eq "old") { + $menustyle_old = "checked"; + } elsif ($myconfig{menustyle} eq "neu") { + $menustyle_neu = "checked"; + } elsif ($myconfig{menustyle} eq "v3") { + $menustyle_v3 = "checked"; + } + + my ($show_form_details, $hide_form_details); + $myconfig{"show_form_details"} = 1 + unless (defined($myconfig{"show_form_details"})); + $show_form_details = "checked" if ($myconfig{"show_form_details"}); + $hide_form_details = "checked" unless ($myconfig{"show_form_details"}); print qq| @@ -3001,10 +3026,43 @@ sub config { | . $locale->text('Setup Menu') . qq| -  New -  Old - +  | . + $locale->text("Top (CSS)") . qq| +  | . + $locale->text("Top (Javascript)") . qq| +  | . + $locale->text("Old (on the side)") . qq| + + + | . $locale->text('Form details (second row)') . qq| +   + +   + + + + | . $locale->text("Print options") . qq| + + + | . $locale->text('Default template format') . qq| + + + + | . $locale->text('Default output medium') . qq| + + + + | . $locale->text('Default printer') . qq| + + + + | . $locale->text('Number of copies') . qq| + + + +   @@ -3013,16 +3071,8 @@ sub config { - - - - - - -
| . $locale->text('Year End') . qq| (mm/dd) {defaults}{yearend}>| . $locale->text('Weight Unit') . qq|
- | @@ -3108,40 +3158,40 @@ sub config { - - - | . $locale->text('Tax Accounts') . qq| - - - - - - - - - -|; - - foreach $accno (sort keys %{ $form->{taxrates} }) { - print qq| - - - - - -|; - $form->{taxaccounts} .= "$form->{taxrates}{$accno}{id} "; - } - - chop $form->{taxaccounts}; - - print qq| - - -
 | . $locale->text('Rate') . qq| (%)| . $locale->text('Number') . qq|
$form->{taxrates}{$accno}{description}{taxrates}{$accno}{id} size=6 value=$form->{taxrates}{$accno}{rate}>
- - - + |; +# +# | . $locale->text('Tax Accounts') . qq| +# +# +# +# +# +# +# +# +# +# |; +# +# foreach $accno (sort keys %{ $form->{taxrates} }) { +# print qq| +# +# +# +# +# +# |; +# $form->{taxaccounts} .= "$form->{taxrates}{$accno}{id} "; +# } +# +# chop $form->{taxaccounts}; +# +# print qq| +# +# +#
 | . $locale->text('Rate') . qq| (%)| . $locale->text('Number') . qq|
$form->{taxrates}{$accno}{description}{taxrates}{$accno}{id} size=6 value=$form->{taxrates}{$accno}{rate}>
+# +# +print qq| @@ -3155,14 +3205,8 @@ sub config {
|; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Save') . qq|"> - print qq| @@ -3401,14 +3445,8 @@ sub list_warehouse { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Add') . qq|"> - print qq| @@ -3498,20 +3536,39 @@ sub edit_units { AM->units_in_use(\%myconfig, $form, $units); map({ $units->{$_}->{"BASE_UNIT_DDBOX"} = AM->unit_select_data($units, $units->{$_}->{"base_unit"}, 1); } keys(%{$units})); + @languages = AM->language(\%myconfig, $form, 1); + @unit_list = (); foreach $name (sort({ lc($a) cmp lc($b) } grep({ !$units->{$_}->{"base_unit"} } keys(%{$units})))) { map({ push(@unit_list, $units->{$_}); } sort({ ($units->{$a}->{"resolved_factor"} * 1) <=> ($units->{$b}->{"resolved_factor"} * 1) } grep({ $units->{$_}->{"resolved_base_unit"} eq $name } keys(%{$units})))); } - map({ $_->{"factor"} = $form->format_amount(\%myconfig, $_->{"factor"}, 5) if ($_->{"factor"}); } @unit_list); + my $i = 1; + foreach (@unit_list) { + $_->{"factor"} = $form->format_amount(\%myconfig, $_->{"factor"}, 5) if ($_->{"factor"}); + $_->{"UNITLANGUAGES"} = []; + foreach my $lang (@languages) { + push(@{ $_->{"UNITLANGUAGES"} }, + { "idx" => $i, + "unit" => $_->{"name"}, + "language_id" => $lang->{"id"}, + "localized" => $_->{"LANGUAGES"}->{$lang->{"template_code"}}->{"localized"}, + "localized_plural" => $_->{"LANGUAGES"}->{$lang->{"template_code"}}->{"localized_plural"}, + }); + } + $i++; + } $units = AM->retrieve_units(\%myconfig, $form, $form->{"unit_type"}); $ddbox = AM->unit_select_data($units, undef, 1); $form->{"title"} = sprintf($locale->text("Add and edit %s"), $form->{"unit_type"} eq "dimension" ? $locale->text("dimension units") : $locale->text("service units")); $form->header(); - print($form->parse_html_template("am/edit_units", { "UNITS" => \@unit_list, "NEW_BASE_UNIT_DDBOX" => $ddbox })); + print($form->parse_html_template("am/edit_units", + { "UNITS" => \@unit_list, + "NEW_BASE_UNIT_DDBOX" => $ddbox, + "LANGUAGES" => \@languages })); $lxdebug->leave_sub(); } @@ -3521,7 +3578,8 @@ sub add_unit { $form->isblank("new_name", $locale->text("The name is missing.")); $units = AM->retrieve_units(\%myconfig, $form, $form->{"unit_type"}); - $form->show_generic_error($locale->text("A unit with this name does already exist.")) if ($units->{$form->{"new_name"}}); + $all_units = AM->retrieve_units(\%myconfig, $form); + $form->show_generic_error($locale->text("A unit with this name does already exist.")) if ($all_units->{$form->{"new_name"}}); my ($base_unit, $factor); if ($form->{"new_base_unit"}) { @@ -3533,7 +3591,16 @@ sub add_unit { $base_unit = $form->{"new_base_unit"}; } - AM->add_unit(\%myconfig, $form, $form->{"new_name"}, $base_unit, $factor, $form->{"unit_type"}); + my @languages; + foreach my $lang (AM->language(\%myconfig, $form, 1)) { + next unless ($form->{"new_localized_$lang->{id}"} || $form->{"new_localized_plural_$lang->{id}"}); + push(@languages, { "id" => $lang->{"id"}, + "localized" => $form->{"new_localized_$lang->{id}"}, + "localized_plural" => $form->{"new_localized_plural_$lang->{id}"}, + }); + } + + AM->add_unit(\%myconfig, $form, $form->{"new_name"}, $base_unit, $factor, $form->{"unit_type"}, \@languages); $form->{"saved_message"} = $locale->text("The unit has been saved."); @@ -3542,12 +3609,32 @@ sub add_unit { $lxdebug->leave_sub(); } +sub set_unit_languages { + $lxdebug->enter_sub(); + + my ($unit, $languages, $idx) = @_; + + $unit->{"LANGUAGES"} = []; + + foreach my $lang (@{$languages}) { + push(@{ $unit->{"LANGUAGES"} }, + { "id" => $lang->{"id"}, + "localized" => $form->{"localized_${idx}_$lang->{id}"}, + "localized_plural" => $form->{"localized_plural_${idx}_$lang->{id}"}, + }); + } + + $lxdebug->leave_sub(); +} + sub save_unit { $lxdebug->enter_sub(); $old_units = AM->retrieve_units(\%myconfig, $form, $form->{"unit_type"}, "resolved_"); AM->units_in_use(\%myconfig, $form, $old_units); + @languages = AM->language(\%myconfig, $form, 1); + $new_units = {}; @delete_units = (); foreach $i (1..($form->{"rowcount"} * 1)) { @@ -3559,6 +3646,7 @@ sub save_unit { if ($form->{"unchangeable_$i"}) { $new_units->{$form->{"old_name_$i"}} = $old_units->{$form->{"old_name_$i"}}; $new_units->{$form->{"old_name_$i"}}->{"unchanged_unit"} = 1; + set_unit_languages($new_units->{$form->{"old_name_$i"}}, \@languages, $i); next; } @@ -3577,6 +3665,7 @@ sub save_unit { my %h = map({ $_ => $form->{"${_}_$i"} } qw(name base_unit factor old_name)); $new_units->{$form->{"name_$i"}} = \%h; $new_units->{$form->{"name_$i"}}->{"row"} = $i; + set_unit_languages($new_units->{$form->{"old_name_$i"}}, \@languages, $i); } foreach $unit (values(%{$new_units})) { @@ -3607,9 +3696,6 @@ sub save_unit { } } - #print(STDERR Dumper($delete_units)); - #print(STDERR Dumper($new_units)); - AM->save_units(\%myconfig, $form, $form->{"unit_type"}, $new_units, \@delete_units); $form->{"saved_message"} = $locale->text("The units have been saved.");