X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/024df846ffcf9d315f068a50f3fac8a992791902..b12e8d1411cb7af3a1a9b6f7637692f0758b4741:/bin/mozilla/am.pl diff --git a/bin/mozilla/am.pl b/bin/mozilla/am.pl index b60c1fa53..e34957f94 100644 --- a/bin/mozilla/am.pl +++ b/bin/mozilla/am.pl @@ -40,13 +40,39 @@ use Data::Dumper; 1; + + +require "$form->{path}/common.pl"; + # end of main sub add { &{"add_$form->{type}"} } -sub edit { &{"edit_$form->{type}"} } -sub save { &{"save_$form->{type}"} } sub delete { &{"delete_$form->{type}"} } +sub display { + if ($form->{display_nextsub}) { + &{ $form->{display_nextsub} }(); + } else { + &{ $form->{nextsub} }(); + } +} + +sub save { + if ($form->{save_nextsub}) { + &{ $form->{save_nextsub} }(); + } else { + &{ $form->{nextsub} }(); + } +} + +sub edit { + if ($form->{edit_nextsub}) { + &{ $form->{edit_nextsub} }(); + } else { + &{ "edit_$form->{type}" }(); + } +} + sub add_account { $lxdebug->enter_sub(); @@ -92,14 +118,16 @@ sub account_header { $form->{description} =~ s/\"/"/g; if (@{ $form->{TAXKEY} }) { - $form->{selecttaxkey} = ""; @@ -174,10 +202,14 @@ sub account_header { 76 => $locale->text('UStVA-Nr. 76'), 77 => $locale->text('UStVA-Nr. 77'), 80 => $locale->text('UStVA-Nr. 80'), + 81 => $locale->text('UStVA-Nr. 81 left'), + 811 => $locale->text('UStVA-Nr. 81 right'), 84 => $locale->text('UStVA-Nr. 84'), 85 => $locale->text('UStVA-Nr. 85'), 86 => $locale->text('UStVA-Nr. 86 left'), 861 => $locale->text('UStVA-Nr. 86 right'), + 89 => $locale->text('UStVA-Nr. 89 left'), + 891 => $locale->text('UStVA-Nr. 89 right'), 91 => $locale->text('UStVA-Nr. 91'), 93 => $locale->text('UStVA-Nr. 93 left'), 931 => $locale->text('UStVA-Nr. 93 right'), @@ -363,7 +395,9 @@ sub account_header {  | . $locale->text('Revenue') . qq|\n
 | - . $locale->text('Expense') . qq| + . $locale->text('Expense') . qq|
+  | + . $locale->text('Costs') . qq|    | @@ -479,7 +513,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| @@ -531,36 +559,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 +578,66 @@ 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} =~ s/,/
/og; + $ca->{taxaccount} =~ 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|; } - - 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 { @@ -645,236 +660,6 @@ sub delete_account { $lxdebug->leave_sub(); } -sub list_gifi { - $lxdebug->enter_sub(); - - @{ $form->{fields} } = (accno, description); - $form->{table} = "gifi"; - $form->{sortorder} = "accno"; - - AM->gifi_accounts(\%myconfig, \%$form); - - $form->{title} = $locale->text('GIFI'); - - # construct callback - $callback = - "$form->{script}?action=list_gifi&path=$form->{path}&login=$form->{login}&password=$form->{password}"; - - @column_index = qw(accno description); - - $column_header{accno} = qq|| . $locale->text('GIFI') . qq||; - $column_header{description} = - qq|| . $locale->text('Description') . qq||; - - $form->header; - $colspan = $#column_index + 1; - - print qq| - - - - - - - - -|; - - map { print "$column_header{$_}\n" } @column_index; - - print qq| - -|; - - # escape callback - $callback = $form->escape($callback); - - foreach $ca (@{ $form->{ALL} }) { - - $i++; - $i %= 2; - - print qq| -|; - - $column_data{accno} = - qq||; - $column_data{description} = qq||; - - map { print "$column_data{$_}\n" } @column_index; - - print "\n"; - } - - print qq| - - - -
$form->{title}
{script}?action=edit_gifi&coa=1&accno=$ca->{accno}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ca->{accno}$ca->{description} 

- - - -|; - - $lxdebug->leave_sub(); -} - -sub add_gifi { - $lxdebug->enter_sub(); - - $form->{title} = "Add"; - - # construct callback - $form->{callback} = - "$form->{script}?action=list_gifi&path=$form->{path}&login=$form->{login}&password=$form->{password}"; - - $form->{coa} = 1; - - &gifi_header; - &gifi_footer; - - $lxdebug->leave_sub(); -} - -sub edit_gifi { - $lxdebug->enter_sub(); - - $form->{title} = "Edit"; - - AM->get_gifi(\%myconfig, \%$form); - - &gifi_header; - &gifi_footer; - - $lxdebug->leave_sub(); -} - -sub gifi_header { - $lxdebug->enter_sub(); - - $form->{title} = $locale->text("$form->{title} GIFI"); - - # $locale->text('Add GIFI') - # $locale->text('Edit GIFI') - - $form->{description} =~ s/\"/"/g; - - $form->header; - - print qq| - - -
{script}> - -{accno}> - - - - - - - - - - - - - -
$form->{title}
- - - - - - - - - -
| . $locale->text('GIFI') . qq|{accno}>
| . $locale->text('Description') . qq|
-

-|; - - $lxdebug->leave_sub(); -} - -sub gifi_footer { - $lxdebug->enter_sub(); - - print qq| - - - -{path}> -{login}> -{password}> - -
|; - - if ($form->{coa}) { - print qq| - -|; - - if ($form->{accno} && $form->{orphaned}) { - print qq||; - } - } - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| -
- - - -|; - - $lxdebug->leave_sub(); -} - -sub save_gifi { - $lxdebug->enter_sub(); - - $form->isblank("accno", $locale->text('GIFI missing!')); - AM->save_gifi(\%myconfig, \%$form); - $form->redirect($locale->text('GIFI saved!')); - - $lxdebug->leave_sub(); -} - -sub copy_to_coa { - $lxdebug->enter_sub(); - - $form->isblank("accno", $locale->text('GIFI missing!')); - - AM->save_gifi(\%myconfig, \%$form); - - delete $form->{id}; - $form->{gifi_accno} = $form->{accno}; - $form->{title} = "Add"; - $form->{charttype} = "A"; - - &account_header; - &form_footer; - - $lxdebug->leave_sub(); -} - -sub delete_gifi { - $lxdebug->enter_sub(); - - AM->delete_gifi(\%myconfig, \%$form); - $form->redirect($locale->text('GIFI deleted!')); - - $lxdebug->leave_sub(); -} - sub add_department { $lxdebug->enter_sub(); @@ -998,14 +783,8 @@ sub list_department { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + . $locale->text('Add') . qq|"> - print qq| @@ -1090,29 +869,29 @@ sub delete_department { $lxdebug->leave_sub(); } -sub add_business { +sub add_lead { $lxdebug->enter_sub(); $form->{title} = "Add"; $form->{callback} = - "$form->{script}?action=add_business&path=$form->{path}&login=$form->{login}&password=$form->{password}" + "$form->{script}?action=add_lead&path=$form->{path}&login=$form->{login}&password=$form->{password}" unless $form->{callback}; - &business_header; + &lead_header; &form_footer; $lxdebug->leave_sub(); } -sub edit_business { +sub edit_lead { $lxdebug->enter_sub(); $form->{title} = "Edit"; - AM->get_business(\%myconfig, \%$form); + AM->get_lead(\%myconfig, \%$form); - &business_header; + &lead_header; $form->{orphaned} = 1; &form_footer; @@ -1120,32 +899,24 @@ sub edit_business { $lxdebug->leave_sub(); } -sub list_business { +sub list_lead { $lxdebug->enter_sub(); - AM->business(\%myconfig, \%$form); + AM->lead(\%myconfig, \%$form); $form->{callback} = - "$form->{script}?action=list_business&path=$form->{path}&login=$form->{login}&password=$form->{password}"; + "$form->{script}?action=list_lead&path=$form->{path}&login=$form->{login}&password=$form->{password}"; $callback = $form->escape($form->{callback}); - $form->{title} = $locale->text('Type of Business'); + $form->{title} = $locale->text('Lead'); - @column_index = qw(description discount customernumberinit); + @column_index = qw(description cost profit); $column_header{description} = - qq|| + qq|| . $locale->text('Description') . qq||; - $column_header{discount} = - qq|| - . $locale->text('Discount') - . qq| %|; - $column_header{customernumberinit} = - qq|| - . $locale->text('Customernumberinit') - . qq||; $form->header; @@ -1157,10 +928,7 @@ sub list_business { $form->{title} - - - - + |; map { print "$column_header{$_}\n" } @column_index; @@ -1178,16 +946,202 @@ sub list_business { |; - $discount = - $form->format_amount(\%myconfig, $ref->{discount} * 100, 1, " "); - $description = - ($ref->{salesman}) - ? "$ref->{description}" - : "$ref->{description}"; + $lead = $ref->{lead}; + $column_data{description} = - qq||; - $column_data{discount} = qq||; - $column_data{customernumberinit} = + qq||; + + map { print "$column_data{$_}\n" } @column_index; + + print qq| + +|; + } + + print qq| + + + +
{script}?action=edit_business&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$description$discount{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(); + + $form->{title} = "Add"; + + $form->{callback} = + "$form->{script}?action=add_business&path=$form->{path}&login=$form->{login}&password=$form->{password}" + unless $form->{callback}; + + &business_header; + &form_footer; + + $lxdebug->leave_sub(); +} + +sub edit_business { + $lxdebug->enter_sub(); + + $form->{title} = "Edit"; + + AM->get_business(\%myconfig, \%$form); + + &business_header; + + $form->{orphaned} = 1; + &form_footer; + + $lxdebug->leave_sub(); +} + +sub list_business { + $lxdebug->enter_sub(); + + AM->business(\%myconfig, \%$form); + + $form->{callback} = + "$form->{script}?action=list_business&path=$form->{path}&login=$form->{login}&password=$form->{password}"; + + $callback = $form->escape($form->{callback}); + + $form->{title} = $locale->text('Type of Business'); + + @column_index = qw(description discount customernumberinit); + + $column_header{description} = + qq|| + . $locale->text('Description') + . qq||; + $column_header{discount} = + qq|| + . $locale->text('Discount') + . qq| %|; + $column_header{customernumberinit} = + qq|| + . $locale->text('Customernumberinit') + . qq||; + + $form->header; + + print qq| + + + + + + + + + |; + $column_header{output_numberformat} = + qq||; + $column_header{output_dateformat} = + qq||; + $column_header{output_longdates} = + qq||; $form->header; @@ -1401,6 +1356,20 @@ sub list_language { $column_data{template_code} = qq||; $column_data{article_code} = qq||; + $column_data{output_numberformat} = + ""; + $column_data{output_dateformat} = + ""; + $column_data{output_longdates} = + ""; map { print "$column_data{$_}\n" } @column_index; @@ -1430,14 +1399,7 @@ sub list_language { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -1463,6 +1425,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 +1462,33 @@ sub language_header { - + - + - + + + + + + + + + + + + + @@ -1529,6 +1531,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; @@ -1562,14 +1569,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||; + $column_header{down} = + qq||; $column_header{description} = - qq||; $column_header{inventory_accno} = - qq||; $column_header{income_accno_0} = @@ -1582,19 +1601,19 @@ sub list_buchungsgruppe { . qq||; $column_header{income_accno_1} = qq||; $column_header{expense_accno_1} = qq||; $column_header{income_accno_2} = qq||; $column_header{expense_accno_2} = qq||; $column_header{income_accno_3} = qq| |; + 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++; @@ -1635,6 +1659,27 @@ sub list_buchungsgruppe { |; + if ($row) { + my $pref = $form->{ALL}->[$row - 1]; + $column_data{up} = + 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||; + } $column_data{description} = qq||; @@ -1657,6 +1702,8 @@ sub list_buchungsgruppe { print qq| |; + + $row++; } print qq| @@ -1680,14 +1727,7 @@ sub list_buchungsgruppe { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -1706,50 +1746,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 +1788,11 @@ sub buchungsgruppe_header { |; } else { $linkaccounts = qq| - |; - } + {inventory_accno_id}>|; + } - $linkaccounts .= qq| + $linkaccounts .= qq| @@ -1844,7 +1867,7 @@ sub buchungsgruppe_header { - + $linkaccounts @@ -1875,6 +1898,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(); @@ -1999,14 +2031,7 @@ sub list_printer { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -2085,229 +2110,36 @@ sub delete_printer { $lxdebug->leave_sub(); } - -sub add_adr { +sub add_payment { $lxdebug->enter_sub(); $form->{title} = "Add"; $form->{callback} = - "$form->{script}?action=add_adr&path=$form->{path}&login=$form->{login}&password=$form->{password}" + "$form->{script}?action=add_payment&path=$form->{path}&login=$form->{login}&password=$form->{password}" unless $form->{callback}; - &adr_header; + $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; $lxdebug->leave_sub(); } -sub edit_adr { +sub edit_payment { $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||; - $column_header{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| + +|; + + $discount = + $form->format_amount(\%myconfig, $ref->{discount} * 100); + $description = + $ref->{description}; + $column_data{description} = + qq||; + $column_data{discount} = qq||; + $column_data{customernumberinit} = qq||; map { print "$column_data{$_}\n" } @column_index; @@ -1218,14 +1172,7 @@ sub list_business { {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|"> @@ -1240,7 +1187,6 @@ sub business_header { $lxdebug->enter_sub(); $form->{title} = $locale->text("$form->{title} Business"); - $form->{salesman} = "checked" if $form->{salesman}; # $locale->text('Add Business') # $locale->text('Edit Business') @@ -1276,10 +1222,6 @@ sub business_header { - - - -
{script}?action=edit_business&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$description$discount$ref->{customernumberinit}| . $locale->text('Customernumberinit') . qq| {customernumberinit}>
| . $locale->text('Salesman') . qq|{salesman}>

@@ -1292,6 +1234,7 @@ sub save_business { $lxdebug->enter_sub(); $form->isblank("description", $locale->text('Description missing!')); + $form->{discount} = $form->parse_amount(\%myconfig, $form->{discount}) / 100; AM->save_business(\%myconfig, \%$form); $form->redirect($locale->text('Business saved!')); @@ -1349,7 +1292,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 +1306,18 @@ sub list_language { qq|| . $locale->text('Article Code') . qq|| + . $locale->text('Number Format') + . qq|| + . $locale->text('Date Format') + . qq|| + . $locale->text('Long Dates') + . qq|$ref->{template_code}$ref->{article_code}" . + ($ref->{output_numberformat} ? $ref->{output_numberformat} : + $locale->text("use program settings")) . + "" . + ($ref->{output_dateformat} ? $ref->{output_dateformat} : + $locale->text("use program settings")) . + "" . + ($ref->{output_longdates} ? $locale->text("Yes") : $locale->text("No")) . + "
| . $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|

| + . qq|| . $locale->text(| + . qq|| + . qq|| . $locale->text(| + . qq|| + qq|| . $locale->text('Description') . qq|| + qq|| . $locale->text('Bestandskonto') . qq|| - . $locale->text('Erlöse EU o. UStId') + . $locale->text('Erlöse EU m. UStId') . qq|| - . $locale->text('Aufwand EU o. UStId') + . $locale->text('Aufwand EU m. UStId') . qq|| - . $locale->text('Erlöse EU m. UStId') + . $locale->text('Erlöse EU o. UStId') . qq|| - . $locale->text('Aufwand EU m. UStId') + . $locale->text('Aufwand EU o. UStId') . qq|| @@ -1626,6 +1645,11 @@ sub list_buchungsgruppe {
| . + qq|| . + qq|| . $locale->text(| . + qq|  | . + qq|| . + qq|| . $locale->text(| . + qq|{script}?action=edit_buchungsgruppe&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description}
| . $locale->text('Erlöse Inland') . qq|
| . $locale->text('Buchungsgruppe') . qq|

| - . $locale->text('ADR Description') - . qq|| - . $locale->text('ADR Code') - . 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(); - - $form->{title} = "Add"; - - $form->{callback} = - "$form->{script}?action=add_payment&path=$form->{path}&login=$form->{login}&password=$form->{password}" - unless $form->{callback}; - - &payment_header; - &form_footer; - - $lxdebug->leave_sub(); -} - -sub edit_payment { - $lxdebug->enter_sub(); - - $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; @@ -2322,15 +2154,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') @@ -2374,6 +2214,9 @@ sub list_payment { |; + my $swap_link = build_std_url("action=swap_payment_terms"); + + my $row = 0; foreach $ref (@{ $form->{ALL} }) { $i++; @@ -2383,21 +2226,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| @@ -2414,21 +2284,14 @@ sub list_payment { - + {path}> {login}> {password}> |; - - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } - - print qq| + . $locale->text('Add') . qq|">
@@ -2470,14 +2333,26 @@ sub payment_header { | . $locale->text('Description') . qq| - - | . $locale->text('Ranking') . qq| - - | . $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| @@ -2493,7 +2368,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(); } @@ -2501,7 +2407,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!')); @@ -2517,318 +2425,227 @@ sub delete_payment { $lxdebug->leave_sub(); } -sub add_sic { +sub swap_payment_terms { $lxdebug->enter_sub(); - $form->{title} = "Add"; - - $form->{callback} = - "$form->{script}?action=add_sic&path=$form->{path}&login=$form->{login}&password=$form->{password}" - unless $form->{callback}; - - &sic_header; - &form_footer; + AM->swap_sortkeys(\%myconfig, $form, "payment_terms"); + list_payment(); $lxdebug->leave_sub(); } -sub edit_sic { +sub display_template { $lxdebug->enter_sub(); - $form->{title} = "Edit"; - - AM->get_sic(\%myconfig, \%$form); - - &sic_header; - - $form->{orphaned} = 1; - &form_footer; + $form->{edit} = 0; + display_template_form(); $lxdebug->leave_sub(); } -sub list_sic { +sub edit_template { $lxdebug->enter_sub(); - AM->sic(\%myconfig, \%$form); - - $form->{callback} = - "$form->{script}?action=list_sic&path=$form->{path}&login=$form->{login}&password=$form->{password}"; + $form->{edit} = 1; + display_template_form(); - $callback = $form->escape($form->{callback}); - - $form->{title} = $locale->text('Standard Industrial Codes'); - - @column_index = qw(code description); - - $column_header{code} = - qq|| . $locale->text('Code') . qq||; - $column_header{description} = - qq|| . $locale->text('Description') . qq||; - - $form->header; - - print qq| - - - - - - - - - - - - - -
$form->{title}
- - -|; - - map { print "$column_header{$_}\n" } @column_index; - - print qq| - -|; - - foreach $ref (@{ $form->{ALL} }) { - - $i++; - $i %= 2; - - if ($ref->{sictype} eq 'H') { - print qq| - -|; - $column_data{code} = - qq||; - $column_data{description} = qq||; - - } else { - print qq| - -|; - - $column_data{code} = - qq||; - $column_data{description} = qq||; - - } - - map { print "$column_data{$_}\n" } @column_index; - - print qq| - -|; - } - - print qq| -
{script}?action=edit_sic&code=$ref->{code}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{code}$ref->{description}
{script}?action=edit_sic&code=$ref->{code}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{code}$ref->{description}
-

- -
-
{script}> - - - - + $lxdebug->leave_sub(); +} -{path}> -{login}> -{password}> +sub save_template { + $lxdebug->enter_sub(); -|; + $form->isblank("formname", $locale->text("You're not editing a file.")) unless ($form->{type} eq "stylesheet"); - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; + my ($filename) = AM->prepare_template_filename(\%myconfig, $form); + if (my $error = AM->save_template($filename, $form->{content})) { + $form->error(sprintf($locale->text("Saving the file '%s' failed. OS error message: %s"), $filename, $error)); } - print qq| -
- - - -|; + $form->{edit} = 0; + display_template_form(); $lxdebug->leave_sub(); } -sub sic_header { +sub display_template_form { $lxdebug->enter_sub(); - $form->{title} = $locale->text("$form->{title} SIC"); - - # $locale->text('Add SIC') - # $locale->text('Edit SIC') + $form->{formname} =~ s|.*/||; + my $format = $form->{format} eq "html" ? "html" : "tex"; - $form->{code} =~ s/\"/"/g; - $form->{description} =~ s/\"/"/g; - - $checked = ($form->{sictype} eq 'H') ? "checked" : ""; + my $title = $form->{type} eq "stylesheet" ? $locale->text("Edit the stylesheet") : $locale->text("Edit templates"); + $form->{title} = $title; - $form->header; + my $edit_options; - print qq| - + my @hidden = qw(login path password type format); -
{script}> + if (($form->{type} ne "stylesheet") && !$form->{edit}) { + $edit_options = "

"; - -{code}> + my %formname_setup = + ( + "balance_sheet" => { "translation" => $locale->text('Balance Sheet'), "html" => 1 }, + "bin_list" => $locale->text('Bin List'), + "bwa" => { "translation" => $locale->text('BWA'), "html" => 1 }, + "check" => { "translation" => $locale->text('Check'), "html" => 1 }, + "credit_note" => $locale->text('Credit Note'), + "income_statement" => { "translation" => $locale->text('Income Statement'), "html" => 1 }, + "invoice" => $locale->text('Invoice'), + "packing_list" => $locale->text('Packing List'), + "pick_list" => $locale->text('Pick List'), + "proforma" => $locale->text('Proforma Invoice'), + "purchase_order" => $locale->text('Purchase Order'), + "receipt" => { "translation" => $locale->text('Receipt'), "tex" => 1 }, + "request_quotation" => $locale->text('RFQ'), + "sales_order" => $locale->text('Confirmation'), + "sales_quotation" => $locale->text('Quotation'), + "statement" => $locale->text('Statement'), + "storno_invoice" => $locale->text('Storno Invoice'), + "storno_packing_list" => $locale->text('Storno Packing List'), + "ustva-2004" => { "translation" => $locale->text("USTVA 2004"), "tex" => 1 }, + "ustva-2005" => { "translation" => $locale->text("USTVA 2005"), "tex" => 1 }, + "ustva-2006" => { "translation" => $locale->text("USTVA 2006"), "tex" => 1 }, + "ustva-2007" => { "translation" => $locale->text("USTVA 2007"), "tex" => 1 }, + "ustva" => $locale->text("USTVA"), + "zahlungserinnerung" => $locale->text('Payment Reminder'), + ); - - - - - - - - - - - - - - - - - - - -
$form->{title}
| . $locale->text('Code') . qq|{code}>
| - . $locale->text('Heading') . qq|
| . $locale->text('Description') . qq|

-|; + my (@values, %labels, $file, $setup); - $lxdebug->leave_sub(); -} + while (($file, $setup) = each(%formname_setup)) { + next unless (!ref($setup) || $setup->{$format}); -sub save_sic { - $lxdebug->enter_sub(); + push(@values, $file); + $labels{$file} = ref($setup) ? $setup->{translation} : $setup; + } + @values = sort({ $labels{$a} cmp $labels{$b} } @values); - $form->isblank("code", $locale->text('Code missing!')); - $form->isblank("description", $locale->text('Description missing!')); - AM->save_sic(\%myconfig, \%$form); - $form->redirect($locale->text('SIC saved!')); + $edit_options .= + $locale->text("Template") . " " . + NTI($cgi->popup_menu("-name" => "formname", "-default" => $form->{formname}, + "-values" => \@values, "-labels" => \%labels)); - $lxdebug->leave_sub(); -} + $form->get_lists("printers" => "ALL_PRINTERS", + "languages" => "ALL_LANGUAGES"); -sub delete_sic { - $lxdebug->enter_sub(); + @values = (""); + %labels = (); - AM->delete_sic(\%myconfig, \%$form); - $form->redirect($locale->text('SIC deleted!')); + foreach my $item (@{ $form->{ALL_LANGUAGES} }) { + next unless ($item->{template_code}); + my $key = "$item->{id}--$item->{template_code}"; + push(@values, $key); + $labels{$key} = $item->{description}; + } - $lxdebug->leave_sub(); -} + if (1 != scalar(@values)) { + $edit_options .= + " " . $locale->text("Language") . " " . + NTI($cgi->popup_menu("-name" => "language", "-default" => $form->{language}, + "-values" => \@values, "-labels" => \%labels)); + } -sub display_stylesheet { - $lxdebug->enter_sub(); + @values = (""); + %labels = (); - $form->{file} = "css/$myconfig{stylesheet}"; - &display_form; + foreach my $item (@{ $form->{ALL_PRINTERS} }) { + next unless ($item->{template_code}); + my $key = "$item->{id}--$item->{template_code}"; + push(@values, $key); + $labels{$key} = $item->{printer_description}; + } - $lxdebug->leave_sub(); -} + if (1 != scalar(@values)) { + $edit_options .= + " " . $locale->text("Printer") . " " . + NTI($cgi->popup_menu("-name" => "printer", "-default" => $form->{printer}, + "-values" => \@values, "-labels" => \%labels)); + } -sub display_form { - $lxdebug->enter_sub(); + $edit_options .= qq| - $form->{file} =~ s/^(.:)*?\/|\.\.\///g; - $form->{file} =~ s/^\/*//g; - $form->{file} =~ s/$userspath//; + - $form->error("$!: $form->{file}") unless -f $form->{file}; + - AM->load_template(\%$form); +

- $form->{title} = $form->{file}; +
+|; - # if it is anything but html - if ($form->{file} !~ /\.html$/) { - $form->{body} = "
\n$form->{body}\n
"; + } else { + push(@hidden, qw(formname language printer)); } - $form->header; + if ($form->{formname} || ($form->{type} eq "stylesheet")) { + my ($filename, $display_filename) = AM->prepare_template_filename(\%myconfig, $form); + my ($content, $lines) = AM->load_template($filename); - print qq| - + $body = qq| +|; -$form->{body} + if ($form->{edit}) { + $form->{fokus} = "Form.content"; + $body = qq|\n

| . $locale->text('Edit file') . " '" . H($display_filename) . qq|'

\n

| + . NTI($cgi->textarea("-name" => "content", + "-id" => "content", + "-default" => $content, + "-columns" => 100, + "-rows" => 25)) + . qq|

-{script}> +

+ -{file}> - + +

+|; -{path}> -{login}> -{password}> + } else { + $content = "\n\n" unless ($content); -|; + $body = qq| +

| . $locale->text('Display file') . " '" . H($display_filename) . qq|'

- if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + - print qq| -
+

- - +

+

| . H($content) . qq|
+

|; - $lxdebug->leave_sub(); -} - -sub edit_template { - $lxdebug->enter_sub(); - - AM->load_template(\%$form); - - $form->{title} = $locale->text('Edit Template'); - - # convert   to   - $form->{body} =~ s/ / /gi; + if ($lines > 25) { + $body .= qq| + +|; + } + } + } $form->header; print qq| -
{script}> - -{file}> - - -{path}> -{login}> -{password}> +
$title
- + - - -
-|; +|; + $form->hide_form(@hidden); - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } + print qq| +$edit_options - print q| -
+$body + @@ -2837,15 +2654,6 @@ $form->{body} $lxdebug->leave_sub(); } -sub save_template { - $lxdebug->enter_sub(); - - AM->save_template(\%$form); - $form->redirect($locale->text('Template saved!')); - - $lxdebug->leave_sub(); -} - sub config { $lxdebug->enter_sub(); @@ -2866,12 +2674,64 @@ sub config { : ""; } - foreach $item (qw(address signature)) { - $myconfig{$item} =~ s/\\n/\r\n/g; + 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; @@ -2886,19 +2746,6 @@ sub config { } $countrycodes = "