X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fam.pl;h=b6ee94255ed92ea6ed277fad1c1ce30bbb31fe9a;hb=5ca651f0b08f68c1f977868204b3629217785157;hp=1ebd59816fdda79dd8df2138eb5b87a67a661bfe;hpb=d8593f08b19e17fabb5dd1e0fe93c3a5d78e37ea;p=kivitendo-erp.git diff --git a/bin/mozilla/am.pl b/bin/mozilla/am.pl index 1ebd59816..b6ee94255 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 @@ -364,7 +366,9 @@ sub account_header {  | . $locale->text('Revenue') . qq|\n
 | - . $locale->text('Expense') . qq| + . $locale->text('Expense') . qq|
+  | + . $locale->text('Costs') . qq|    | @@ -492,11 +496,6 @@ sub form_footer { . $locale->text('Delete') . qq|">|; } - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - print qq| @@ -531,36 +530,7 @@ sub list_account { $callback = "$form->{script}?action=list_account&path=$form->{path}&login=$form->{login}&password=$form->{password}"; - @column_index = qw(accno gifi_accno description debit credit link); - - $column_header{accno} = qq|| . $locale->text('Account') . qq||; - $column_header{gifi_accno} = - qq|| . $locale->text('GIFI') . qq||; - $column_header{description} = - qq|| . $locale->text('Description') . qq||; - $column_header{debit} = qq|| . $locale->text('Debit') . qq||; - $column_header{credit} = qq|| . $locale->text('Credit') . qq||; - $column_header{link} = qq|| . $locale->text('Link') . qq||; - $form->header; - $colspan = $#column_index + 1; - - print qq| - - - - - - - - -|; - - map { print "$column_header{$_}\n" } @column_index; - - print qq| - -|; # escape callback $callback = $form->escape($callback); @@ -579,50 +549,67 @@ sub list_account { $form->format_amount(\%myconfig, -$ca->{amount}, 2, " "); } - $ca->{link} =~ s/:/
/og; - - if ($ca->{charttype} eq "H") { - print qq||; - - $column_data{accno} = - qq||; - $column_data{gifi_accno} = - qq||; - $column_data{description} = qq||; - $column_data{debit} = qq||; - $column_data{credit} = qq| |; - $column_data{link} = qq||; - - } else { - $i++; - $i %= 2; - print qq| -|; - $column_data{accno} = - qq||; - $column_data{gifi_accno} = - qq||; - $column_data{description} = qq||; - $column_data{debit} = qq||; - $column_data{credit} = qq||; - $column_data{link} = qq||; - + my @links = split( q{:}, $ca->{link}); + + $ca->{link} = q{}; + + foreach my $link (@links){ + $link = ( $link eq 'AR') ? $locale->text('Account Link AR') + : ( $link eq 'AP') ? $locale->text('Account Link AP') + : ( $link eq 'IC') ? $locale->text('Account Link IC') + : ( $link eq 'AR_amount' ) ? $locale->text('Account Link AR_amount') + : ( $link eq 'AR_paid' ) ? $locale->text('Account Link AR_paid') + : ( $link eq 'AR_tax' ) ? $locale->text('Account Link AR_tax') + : ( $link eq 'AP_amount' ) ? $locale->text('Account Link AP_amount') + : ( $link eq 'AP_paid' ) ? $locale->text('Account Link AP_paid') + : ( $link eq 'AP_tax' ) ? $locale->text('Account Link AP_tax') + : ( $link eq 'IC_sale' ) ? $locale->text('Account Link IC_sale') + : ( $link eq 'IC_cogs' ) ? $locale->text('Account Link IC_cogs') + : ( $link eq 'IC_taxpart' ) ? $locale->text('Account Link IC_taxpart') + : ( $link eq 'IC_income' ) ? $locale->text('Account Link IC_income') + : ( $link eq 'IC_expense' ) ? $locale->text('Account Link IC_expense') + : ( $link eq 'IC_taxservice' ) ? $locale->text('Account Link IC_taxservice') + : ( $link eq 'CT_tax' ) ? $locale->text('Account Link CT_tax') + : $locale->text('Unknown Link') . ': ' . $link; + + $ca->{link} .= qq|[| . $link . qq|] |; } - - map { print "$column_data{$_}\n" } @column_index; - - print "\n"; + + $ca->{startdate} =~ s/,/
/og; + $ca->{tk_ustva} =~ s/,/
/og; + + $ca->{taxkey_id} =~ s/,/
/og; + $ca->{taxdescription} =~ s/,/
/og; + + $ca->{datevautomatik} = ($ca->{datevautomatik}) ? $locale->text('On'):q{}; + + $ca->{category} = ($ca->{category} eq 'A') ? $locale->text('Account Category A') + : ($ca->{category} eq 'E') ? $locale->text('Account Category E') + : ($ca->{category} eq 'L') ? $locale->text('Account Category L') + : ($ca->{category} eq 'I') ? $locale->text('Account Category I') + : ($ca->{category} eq 'Q') ? $locale->text('Account Category Q') + : ($ca->{category} eq 'C') ? $locale->text('Account Category C') + : ($ca->{category} eq 'G') ? $locale->text('Account Category G') + : $locale->text('Unknown Category') . ': ' . $ca->{category}; + + $ca->{link_edit_account} = + qq|$form->{script}?action=edit_account&id=$ca->{id}| + .qq|&path=$form->{path}&login=$form->{login}| + .qq|&password=$form->{password}&callback=$callback>$ca->{accno}|; } - - print qq| - -
$form->{title}
{script}?action=edit_account&id=$ca->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{accno}{script}?action=edit_gifi&accno=$ca->{gifi_accno}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{gifi_accno} $ca->{description}    
{script}?action=edit_account&id=$ca->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{accno}{script}?action=edit_gifi&accno=$ca->{gifi_accno}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{gifi_accno} $ca->{description} $ca->{debit}$ca->{credit}$ca->{link} 

- - - -|; - + + my $parameters_ref = { + + + # hidden_variables => $_hidden_variables_ref, + }; + + # Ausgabe des Templates + print($form->parse_html_template('am/list_accounts', $parameters_ref)); + $lxdebug->leave_sub(); + + } sub delete_account { @@ -823,11 +810,6 @@ sub gifi_footer { } } - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - print qq| @@ -998,14 +980,8 @@ sub list_department { {password}> |; + . $locale->text('Add') . qq|"> - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| @@ -1197,14 +1173,8 @@ sub list_lead { {password}> |; + . $locale->text('Add') . qq|"> - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| @@ -1401,14 +1371,7 @@ sub list_business { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -1532,7 +1495,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|| @@ -1546,6 +1509,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; @@ -1584,6 +1559,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; @@ -1613,14 +1602,7 @@ sub list_language { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -1646,6 +1628,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| @@ -1661,15 +1665,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|
@@ -1712,8 +1734,10 @@ 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); - if ($eur) { - $form->{"inventory_accno_id"} = $form->{"std_inventory_accno_id"}; + $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; @@ -1748,14 +1772,26 @@ sub list_buchungsgruppe { $form->{title} = $locale->text('Buchungsgruppen'); - @column_index = qw(description inventory_accno income_accno_0 expense_accno_0 income_accno_1 expense_accno_1 income_accno_2 expense_accno_2 income_accno_3 expense_accno_3 ); + @column_index = qw(up down description inventory_accno + income_accno_0 expense_accno_0 + income_accno_1 expense_accno_1 + income_accno_2 expense_accno_2 + income_accno_3 expense_accno_3 ); + $column_header{up} = + qq|| + . qq|| . $locale->text(| + . qq||; + $column_header{down} = + qq|| + . qq|| . $locale->text(| + . qq||; $column_header{description} = - qq|| + qq|| . $locale->text('Description') . qq||; $column_header{inventory_accno} = - qq|| + qq|| . $locale->text('Bestandskonto') . qq||; $column_header{income_accno_0} = @@ -1812,6 +1848,11 @@ sub list_buchungsgruppe { |; + my $swap_link = qq|$form->{script}?action=swap_buchungsgruppen&|; + map({ $swap_link .= $_ . "=" . $form->escape($form->{$_}) . "&" } + qw(login password path)); + + my $row = 0; foreach $ref (@{ $form->{ALL} }) { $i++; @@ -1821,6 +1862,27 @@ sub list_buchungsgruppe { |; + if ($row) { + my $pref = $form->{ALL}->[$row - 1]; + $column_data{up} = + qq|| . + qq|| . + qq|| . $locale->text(| . + qq||; + } else { + $column_data{up} = qq| |; + } + + if ($row == (scalar(@{ $form->{ALL} }) - 1)) { + $column_data{down} = qq| |; + } else { + my $nref = $form->{ALL}->[$row + 1]; + $column_data{down} = + qq|| . + qq|| . + qq|| . $locale->text(| . + qq||; + } $column_data{description} = qq|{script}?action=edit_buchungsgruppe&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description}|; @@ -1843,6 +1905,8 @@ sub list_buchungsgruppe { print qq| |; + + $row++; } print qq| @@ -1866,14 +1930,7 @@ sub list_buchungsgruppe { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -2044,6 +2101,15 @@ sub delete_buchungsgruppe { $lxdebug->leave_sub(); } +sub swap_buchungsgruppen { + $lxdebug->enter_sub(); + + AM->swap_sortkeys(\%myconfig, $form, "buchungsgruppen"); + list_buchungsgruppe(); + + $lxdebug->leave_sub(); +} + sub add_printer { $lxdebug->enter_sub(); @@ -2168,14 +2234,7 @@ sub list_printer { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -2267,6 +2326,10 @@ sub add_payment { $form->{terms_netto} = 0; $form->{terms_skonto} = 0; $form->{percent_skonto} = 0; + my @languages = AM->language(\%myconfig, $form, 1); + map({ $_->{"language"} = $_->{"description"}; + $_->{"language_id"} = $_->{"id"}; } @languages); + $form->{"TRANSLATION"} = \@languages; &payment_header; &form_footer; @@ -2278,7 +2341,9 @@ sub edit_payment { $form->{title} = "Edit"; - AM->get_payment(\%myconfig, \%$form); + AM->get_payment(\%myconfig, $form); + $form->{percent_skonto} = + $form->format_amount(\%myconfig, $form->{percent_skonto} * 100); &payment_header; @@ -2293,15 +2358,23 @@ sub list_payment { AM->payment(\%myconfig, \%$form); - $form->{callback} = - "$form->{script}?action=list_payment&path=$form->{path}&login=$form->{login}&password=$form->{password}"; + $form->{callback} = build_std_url("action=list_payment"); $callback = $form->escape($form->{callback}); $form->{title} = $locale->text('Payment Terms'); - @column_index = qw(description description_long terms_netto terms_skonto percent_skonto); + @column_index = qw(up down description description_long terms_netto + terms_skonto percent_skonto); + $column_header{up} = + qq|| + . qq|| . $locale->text(| + . qq||; + $column_header{down} = + qq|| + . qq|| . $locale->text(| + . qq||; $column_header{description} = qq|| . $locale->text('Description') @@ -2345,6 +2418,9 @@ sub list_payment { |; + my $swap_link = build_std_url("action=swap_payment_terms"); + + my $row = 0; foreach $ref (@{ $form->{ALL} }) { $i++; @@ -2354,21 +2430,48 @@ sub list_payment { |; + if ($row) { + my $pref = $form->{ALL}->[$row - 1]; + $column_data{up} = + qq|| . + qq|| . + qq|| . $locale->text(| . + qq||; + } else { + $column_data{up} = qq| |; + } + + if ($row == (scalar(@{ $form->{ALL} }) - 1)) { + $column_data{down} = qq| |; + } else { + my $nref = $form->{ALL}->[$row + 1]; + $column_data{down} = + qq|| . + qq|| . + qq|| . $locale->text(| . + qq||; + } $column_data{description} = - qq|{script}?action=edit_payment&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description}|; - $column_data{description_long} = qq|$ref->{description_long}|; + qq|{id}", "callback=$callback") . + qq|">| . H($ref->{description}) . qq||; + $column_data{description_long} = + qq|| . H($ref->{description_long}) . qq||; $column_data{terms_netto} = qq|$ref->{terms_netto}|; $column_data{terms_skonto} = qq|$ref->{terms_skonto}|; $column_data{percent_skonto} = - qq|$ref->{percent_skonto} %|; + qq|| . + $form->format_amount(\%myconfig, $ref->{percent_skonto} * 100) . + qq|%|; map { print "$column_data{$_}\n" } @column_index; print qq| |; + $row++; } print qq| @@ -2385,21 +2488,14 @@ sub list_payment { - + {path}> {login}> {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -2445,6 +2541,22 @@ sub payment_header { | . $locale->text('Long Description') . qq| +|; + + foreach my $language (@{ $form->{"TRANSLATION"} }) { + print qq| + + | . + sprintf($locale->text('Translation (%s)'), + $language->{"language"}) + . qq| + + +|; + } + + print qq| | . $locale->text('Netto Terms') . qq| @@ -2460,7 +2572,38 @@ sub payment_header {
-|; + +

| . $locale->text("You can use the following strings in the long " . + "description and all translations. They will be " . + "replaced by their actual values by Lx-Office " . + "before they're output.") +. qq|

+ +|; $lxdebug->leave_sub(); } @@ -2468,7 +2611,9 @@ sub payment_header { sub save_payment { $lxdebug->enter_sub(); - $form->isblank("description", $locale->text('Language missing!')); + $form->isblank("description", $locale->text('Description missing!')); + $form->{"percent_skonto"} = + $form->parse_amount(\%myconfig, $form->{percent_skonto}) / 100; AM->save_payment(\%myconfig, \%$form); $form->redirect($locale->text('Payment Terms saved!')); @@ -2484,6 +2629,15 @@ sub delete_payment { $lxdebug->leave_sub(); } +sub swap_payment_terms { + $lxdebug->enter_sub(); + + AM->swap_sortkeys(\%myconfig, $form, "payment_terms"); + list_payment(); + + $lxdebug->leave_sub(); +} + sub add_sic { $lxdebug->enter_sub(); @@ -2607,14 +2761,8 @@ sub list_sic { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Add') . qq|"> - print qq| @@ -2737,14 +2885,8 @@ $form->{body} {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Edit') . qq|"> - print qq| @@ -2786,14 +2928,8 @@ $form->{body}
|; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Save') . qq|"> - print q| @@ -2841,6 +2977,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} } @@ -2892,8 +3080,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| @@ -2968,10 +3167,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| + + + +   @@ -2980,16 +3212,8 @@ sub config { - - - - - - -
| . $locale->text('Year End') . qq| (mm/dd) {defaults}{yearend}>| . $locale->text('Weight Unit') . qq|
- | @@ -3122,14 +3346,8 @@ print qq|
|; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Save') . qq|"> - print qq| @@ -3368,14 +3586,8 @@ sub list_warehouse { {password}> |; + . $locale->text('Add') . qq|"> - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| @@ -3465,20 +3677,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(); } @@ -3488,7 +3719,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"}) { @@ -3500,7 +3732,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."); @@ -3509,12 +3750,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)) { @@ -3526,6 +3787,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; } @@ -3544,6 +3806,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})) {