Revision 86bb04e4
Von Andreas Rudin vor etwa 1 Jahr hinzugefügt
SL/Controller/ClientConfig.pm | ||
---|---|---|
use Rose::Object::MakeMethods::Generic (
|
||
'scalar --get_set_init' => [ qw(defaults all_warehouses all_weightunits all_languages all_currencies all_templates all_price_sources h_unit_name available_quick_search_modules
|
||
all_project_statuses all_project_types zugferd_settings
|
||
posting_options payment_options accounting_options inventory_options profit_options balance_startdate_method_options
|
||
posting_options payment_options accounting_options inventory_options profit_options balance_startdate_method_options yearend_options
|
||
displayable_name_specs_by_module available_documents_with_no_positions) ],
|
||
);
|
||
|
||
... | ... | |
return SL::DB::Helper::AccountingPeriod::get_balance_startdate_method_options;
|
||
}
|
||
|
||
sub init_yearend_options {
|
||
[ { title => t8("default"), value => "default" },
|
||
{ title => t8("simple"), value => "simple" }, ]
|
||
}
|
||
|
||
sub init_all_price_sources {
|
||
my @classes = SL::PriceSource::ALL->all_price_sources;
|
||
|
SL/Controller/YearEndTransactions.pm | ||
---|---|---|
use Data::Dumper;
|
||
use List::Util qw(sum);
|
||
use SL::ClientJS;
|
||
use SL::DB::Default;
|
||
|
||
use SL::DB::Chart;
|
||
use SL::DB::GLTransaction;
|
||
... | ... | |
use SL::DB::Helper::AccountingPeriod qw(get_balance_starting_date get_balance_startdate_method_options);
|
||
|
||
use Rose::Object::MakeMethods::Generic (
|
||
'scalar --get_set_init' => [ qw(cb_date cb_startdate ob_date) ],
|
||
'scalar --get_set_init' => [ qw(cb_date cb_startdate ob_date defaults) ],
|
||
);
|
||
|
||
__PACKAGE__->run_before('check_auth');
|
||
... | ... | |
|
||
$self->cb_startdate($::locale->parse_date_to_object($self->get_balance_starting_date($self->cb_date)));
|
||
|
||
my $defaults = SL::DB::Default->get;
|
||
my $carry_over_chart = SL::DB::Manager::Chart->find_by( id => $defaults->carry_over_account_chart_id );
|
||
my $profit_chart = SL::DB::Manager::Chart->find_by( id => $defaults->profit_carried_forward_chart_id );
|
||
my $loss_chart = SL::DB::Manager::Chart->find_by( id => $defaults->loss_carried_forward_chart_id );
|
||
my $carry_over_chart = SL::DB::Manager::Chart->find_by( id => $self->defaults->carry_over_account_chart_id );
|
||
my $profit_chart = SL::DB::Manager::Chart->find_by( id => $self->defaults->profit_carried_forward_chart_id );
|
||
my $loss_chart = SL::DB::Manager::Chart->find_by( id => $self->defaults->loss_carried_forward_chart_id );
|
||
|
||
$self->render('yearend/form',
|
||
title => t8('Year-end closing'),
|
||
... | ... | |
$self->_parse_form;
|
||
|
||
eval {
|
||
_year_end_bookings( start_date => $self->cb_startdate,
|
||
$self->_year_end_bookings( start_date => $self->cb_startdate,
|
||
cb_date => $self->cb_date,
|
||
);
|
||
1;
|
||
... | ... | |
return $self->js->render;
|
||
};
|
||
|
||
my ($report_data, $profit_loss_sum) = _report(
|
||
my ($report_data, $profit_loss_sum) = $self->_report(
|
||
cb_date => $self->cb_date,
|
||
start_date => $self->cb_startdate,
|
||
);
|
||
... | ... | |
|
||
$self->_parse_form;
|
||
|
||
my ($report_data, $profit_loss_sum) = _report(
|
||
my ($report_data, $profit_loss_sum) = $self->_report(
|
||
cb_date => $self->cb_date,
|
||
start_date => $self->cb_startdate,
|
||
);
|
||
... | ... | |
}
|
||
|
||
sub _year_end_bookings {
|
||
my (%params) = @_;
|
||
my ($self, %params) = @_;
|
||
|
||
my $start_date = delete $params{start_date};
|
||
my $cb_date = delete $params{cb_date};
|
||
|
||
my $defaults = SL::DB::Default->get;
|
||
my $carry_over_chart = SL::DB::Manager::Chart->find_by( id => $defaults->carry_over_account_chart_id ) // die t8('No carry-over chart configured!');
|
||
my $profit_chart = SL::DB::Manager::Chart->find_by( id => $defaults->profit_carried_forward_chart_id ) // die t8('No profit carried forward chart configured!');
|
||
my $loss_chart = SL::DB::Manager::Chart->find_by( id => $defaults->loss_carried_forward_chart_id ) // die t8('No profit and loss carried forward chart configured!');
|
||
my $carry_over_chart = SL::DB::Manager::Chart->find_by( id => $self->defaults->carry_over_account_chart_id ) // die t8('No carry-over chart configured!');
|
||
my $profit_chart = SL::DB::Manager::Chart->find_by( id => $self->defaults->profit_carried_forward_chart_id ) // die t8('No profit carried forward chart configured!');
|
||
my $loss_chart;
|
||
if ( $self->defaults->yearend_method eq 'simple' ) {
|
||
$loss_chart = $profit_chart;
|
||
} else {
|
||
$loss_chart = SL::DB::Manager::Chart->find_by( id => $self->defaults->loss_carried_forward_chart_id ) // die t8('No profit and loss carried forward chart configured!');
|
||
}
|
||
|
||
my ($report_data, $profit_loss_sum) = _report(
|
||
my ($report_data, $profit_loss_sum) = $self->_report(
|
||
start_date => $start_date,
|
||
cb_date => $cb_date,
|
||
);
|
||
... | ... | |
@{$report_data};
|
||
$profit_loss_sum ||= 0;
|
||
my $pl_chart;
|
||
if ( $profit_loss_sum > 0 ) {
|
||
if ( $profit_loss_sum > 0 || $self->defaults->yearend_method eq 'simple' ) {
|
||
$pl_chart = $profit_chart;
|
||
} else {
|
||
$pl_chart = $loss_chart;
|
||
... | ... | |
my $pl_debit_balance = 0;
|
||
my $pl_credit_balance = 0;
|
||
# soll = debit, haben = credit
|
||
my $pl_cb_debit_entry = SL::DB::GLTransaction->new(
|
||
employee_id => $employee_id,
|
||
transdate => $cb_date,
|
||
reference => 'SB ' . $cb_date->year,
|
||
description => 'Automatische SB-Buchungen Erfolgskonten Soll für ' . $cb_date->year,
|
||
ob_transaction => 0,
|
||
cb_transaction => 1,
|
||
taxincluded => 0,
|
||
transactions => [],
|
||
);
|
||
my $pl_cb_credit_entry = SL::DB::GLTransaction->new(
|
||
employee_id => $employee_id,
|
||
transdate => $cb_date,
|
||
reference => 'SB ' . $cb_date->year,
|
||
description => 'Automatische SB-Buchungen Erfolgskonten Haben für ' . $cb_date->year,
|
||
ob_transaction => 0,
|
||
cb_transaction => 1,
|
||
taxincluded => 0,
|
||
transactions => [],
|
||
);
|
||
|
||
foreach my $profit_loss_account ( @profit_loss_accounts ) {
|
||
# $main::lxdebug->message(0, sprintf("found chart %s with balance %s", $profit_loss_account->{accno}, $profit_loss_account->{amount_with_cb}));
|
||
my $chart = $charts_by_id{ $profit_loss_account->{chart_id} };
|
||
|
||
next if $profit_loss_account->{amount_with_cb} == 0;
|
||
if ( $self->defaults->yearend_method ne 'simple' ) {
|
||
my $pl_cb_debit_entry = SL::DB::GLTransaction->new(
|
||
employee_id => $employee_id,
|
||
transdate => $cb_date,
|
||
reference => 'SB ' . $cb_date->year,
|
||
description => 'Automatische SB-Buchungen Erfolgskonten Soll für ' . $cb_date->year,
|
||
ob_transaction => 0,
|
||
cb_transaction => 1,
|
||
taxincluded => 0,
|
||
transactions => [],
|
||
);
|
||
my $pl_cb_credit_entry = SL::DB::GLTransaction->new(
|
||
employee_id => $employee_id,
|
||
transdate => $cb_date,
|
||
reference => 'SB ' . $cb_date->year,
|
||
description => 'Automatische SB-Buchungen Erfolgskonten Haben für ' . $cb_date->year,
|
||
ob_transaction => 0,
|
||
cb_transaction => 1,
|
||
taxincluded => 0,
|
||
transactions => [],
|
||
);
|
||
|
||
if ( $profit_loss_account->{amount_with_cb} < 0 ) {
|
||
$pl_debit_balance -= $profit_loss_account->{amount_with_cb};
|
||
$pl_cb_debit_entry->add_chart_booking(
|
||
chart => $chart,
|
||
tax_id => 0,
|
||
credit => - $profit_loss_account->{amount_with_cb},
|
||
);
|
||
} else {
|
||
$pl_credit_balance += $profit_loss_account->{amount_with_cb};
|
||
$pl_cb_credit_entry->add_chart_booking(
|
||
chart => $chart,
|
||
tax_id => 0,
|
||
debit => $profit_loss_account->{amount_with_cb},
|
||
);
|
||
foreach my $profit_loss_account ( @profit_loss_accounts ) {
|
||
# $main::lxdebug->message(0, sprintf("found chart %s with balance %s", $profit_loss_account->{accno}, $profit_loss_account->{amount_with_cb}));
|
||
my $chart = $charts_by_id{ $profit_loss_account->{chart_id} };
|
||
|
||
next if $profit_loss_account->{amount_with_cb} == 0;
|
||
|
||
if ( $profit_loss_account->{amount_with_cb} < 0 ) {
|
||
$pl_debit_balance -= $profit_loss_account->{amount_with_cb};
|
||
$pl_cb_debit_entry->add_chart_booking(
|
||
chart => $chart,
|
||
tax_id => 0,
|
||
credit => - $profit_loss_account->{amount_with_cb},
|
||
);
|
||
} else {
|
||
$pl_credit_balance += $profit_loss_account->{amount_with_cb};
|
||
$pl_cb_credit_entry->add_chart_booking(
|
||
chart => $chart,
|
||
tax_id => 0,
|
||
debit => $profit_loss_account->{amount_with_cb},
|
||
);
|
||
};
|
||
};
|
||
};
|
||
|
||
# $main::lxdebug->message(0, "pl_debit_balance = $pl_debit_balance");
|
||
# $main::lxdebug->message(0, "pl_credit_balance = $pl_credit_balance");
|
||
|
||
$pl_cb_debit_entry->add_chart_booking(
|
||
chart => $pl_chart,
|
||
tax_id => 0,
|
||
debit => $pl_debit_balance,
|
||
) if $pl_debit_balance;
|
||
# $main::lxdebug->message(0, "pl_debit_balance = $pl_debit_balance");
|
||
# $main::lxdebug->message(0, "pl_credit_balance = $pl_credit_balance");
|
||
|
||
$pl_cb_credit_entry->add_chart_booking(
|
||
chart => $pl_chart,
|
||
tax_id => 0,
|
||
credit => $pl_credit_balance,
|
||
) if $pl_credit_balance;
|
||
$pl_cb_debit_entry->add_chart_booking(
|
||
chart => $pl_chart,
|
||
tax_id => 0,
|
||
debit => $pl_debit_balance,
|
||
) if $pl_debit_balance;
|
||
|
||
# printf("debit : %s -> %s\n", $_->chart->displayable_name, $_->amount) foreach @{ $pl_cb_debit_entry->transactions };
|
||
# printf("credit: %s -> %s\n", $_->chart->displayable_name, $_->amount) foreach @{ $pl_cb_credit_entry->transactions };
|
||
$pl_cb_credit_entry->add_chart_booking(
|
||
chart => $pl_chart,
|
||
tax_id => 0,
|
||
credit => $pl_credit_balance,
|
||
) if $pl_credit_balance;
|
||
|
||
$pl_cb_debit_entry->post if scalar @{ $pl_cb_debit_entry->transactions } > 1;
|
||
$pl_cb_credit_entry->post if scalar @{ $pl_cb_credit_entry->transactions } > 1;
|
||
# printf("debit : %s -> %s\n", $_->chart->displayable_name, $_->amount) foreach @{ $pl_cb_debit_entry->transactions };
|
||
# printf("credit: %s -> %s\n", $_->chart->displayable_name, $_->amount) foreach @{ $pl_cb_credit_entry->transactions };
|
||
|
||
$pl_cb_debit_entry->post if scalar @{ $pl_cb_debit_entry->transactions } > 1;
|
||
$pl_cb_credit_entry->post if scalar @{ $pl_cb_credit_entry->transactions } > 1;
|
||
};
|
||
######### profit-loss transfer #########
|
||
# and finally transfer the new balance of the profit-loss account via the carry-over account
|
||
# we want to use profit_loss_sum with cb!
|
||
|
||
if ( $profit_loss_sum != 0 ) {
|
||
|
||
my $carry_over_cb_entry = SL::DB::GLTransaction->new(
|
||
employee_id => $employee_id,
|
||
transdate => $cb_date,
|
||
reference => 'SB ' . $cb_date->year,
|
||
description => sprintf('Automatische SB-Buchung für %s %s',
|
||
$profit_loss_sum >= 0 ? 'Gewinnvortrag' : 'Verlustvortrag',
|
||
$cb_date->year,
|
||
),
|
||
ob_transaction => 0,
|
||
cb_transaction => 1,
|
||
taxincluded => 0,
|
||
transactions => [],
|
||
);
|
||
my $carry_over_cb_entry;
|
||
if ($self->defaults->yearend_method ne 'simple') {
|
||
$carry_over_cb_entry = SL::DB::GLTransaction->new(
|
||
employee_id => $employee_id,
|
||
transdate => $cb_date,
|
||
reference => 'SB ' . $cb_date->year,
|
||
description => sprintf('Automatische SB-Buchung für %s %s',
|
||
$profit_loss_sum >= 0 ? 'Gewinnvortrag' : 'Verlustvortrag',
|
||
$cb_date->year,
|
||
),
|
||
ob_transaction => 0,
|
||
cb_transaction => 1,
|
||
taxincluded => 0,
|
||
transactions => [],
|
||
);
|
||
};
|
||
my $carry_over_ob_entry = SL::DB::GLTransaction->new(
|
||
employee_id => $employee_id,
|
||
transdate => $ob_date,
|
||
... | ... | |
$amount2 = 'debit';
|
||
};
|
||
|
||
$carry_over_cb_entry->add_chart_booking(
|
||
chart => $carry_over_chart,
|
||
tax_id => 0,
|
||
$amount1 => abs($profit_loss_sum),
|
||
);
|
||
$carry_over_cb_entry->add_chart_booking(
|
||
chart => $pl_chart,
|
||
tax_id => 0,
|
||
$amount2 => abs($profit_loss_sum),
|
||
);
|
||
if ($self->defaults->yearend_method ne 'simple') {
|
||
$carry_over_cb_entry->add_chart_booking(
|
||
chart => $carry_over_chart,
|
||
tax_id => 0,
|
||
$amount1 => abs($profit_loss_sum),
|
||
);
|
||
$carry_over_cb_entry->add_chart_booking(
|
||
chart => $pl_chart,
|
||
tax_id => 0,
|
||
$amount2 => abs($profit_loss_sum),
|
||
);
|
||
};
|
||
$carry_over_ob_entry->add_chart_booking(
|
||
chart => $carry_over_chart,
|
||
tax_id => 0,
|
||
... | ... | |
# printf("debit : %s -> %s\n", $_->chart->displayable_name, $_->amount) foreach @{ $carry_over_ob_entry->transactions };
|
||
# printf("credit: %s -> %s\n", $_->chart->displayable_name, $_->amount) foreach @{ $carry_over_ob_entry->transactions };
|
||
|
||
$carry_over_cb_entry->post if scalar @{ $carry_over_cb_entry->transactions } > 1;
|
||
if ($self->defaults->yearend_method ne 'simple') {
|
||
$carry_over_cb_entry->post if scalar @{ $carry_over_cb_entry->transactions } > 1;
|
||
};
|
||
$carry_over_ob_entry->post if scalar @{ $carry_over_ob_entry->transactions } > 1;
|
||
};
|
||
|
||
... | ... | |
}
|
||
|
||
sub _report {
|
||
my (%params) = @_;
|
||
my ($self, %params) = @_;
|
||
|
||
my $start_date = delete $params{start_date};
|
||
my $cb_date = delete $params{cb_date};
|
||
|
||
my $defaults = SL::DB::Default->get;
|
||
die "no carry over account defined"
|
||
unless defined $defaults->carry_over_account_chart_id
|
||
and $defaults->carry_over_account_chart_id > 0;
|
||
unless defined $self->defaults->carry_over_account_chart_id
|
||
and $self->defaults->carry_over_account_chart_id > 0;
|
||
|
||
my $salden_query = <<SQL;
|
||
select c.id as chart_id,
|
||
... | ... | |
my $report = selectall_hashref_query($::form, $dbh, $salden_query,
|
||
$start_date,
|
||
$cb_date,
|
||
$defaults->carry_over_account_chart_id,
|
||
$self->defaults->carry_over_account_chart_id,
|
||
);
|
||
# profit_loss_sum is the actual profit/loss for the year, without cb, use "amount_without_cb")
|
||
my $profit_loss_sum = sum map { $_->{amount_without_cb} }
|
||
... | ... | |
sub init_ob_date { $::locale->parse_date_to_object($::form->{ob_date}) }
|
||
sub init_cb_startdate { $::locale->parse_date_to_object($::form->{cb_startdate}) }
|
||
sub init_cb_date { $::locale->parse_date_to_object($::form->{cb_date}) }
|
||
|
||
sub init_defaults { SL::DB::Default->get }
|
||
1;
|
SL/DB/MetaSetup/Default.pm | ||
---|---|---|
webdav_sync_extern_url => { type => 'text' },
|
||
weightunit => { type => 'varchar', length => 5 },
|
||
workflow_po_ap_chart_id => { type => 'integer' },
|
||
yearend_method => { type => 'text' },
|
||
);
|
||
|
||
__PACKAGE__->meta->primary_key_columns([ 'id' ]);
|
doc/changelog | ||
---|---|---|
verschiedenen Lagerplätzen oder mit verschiedenen Chargen, so können diese
|
||
gewählt ausgewählt werden. Das Mindeshaltbarkeitsdatum wird dabei (noch
|
||
nicht) berücksichtigt.
|
||
- Beim Jahresabschluss besteht neu die Möglichkeit, zwischen den Methoden Einfach und Standard
|
||
zu wählen. Die Methode Einfach berücksichtigt nur die Bestandskonten und verwendet das
|
||
gleiche Konto für die Verbuchung von Gewinn oder Verlust.
|
||
|
||
Kleinere neue Features und Detailverbesserungen:
|
||
|
locale/de/all | ||
---|---|---|
'Please choose for which categories the taxes should be displayed (otherwise remove the ticks):' => 'Bitte wählen Sie für welche Kontoart die Steuer angezeigt werden soll (ansonsten einfach die Häkchen entfernen)',
|
||
'Please choose the action to be processed for your target quantity:' => 'Bitte wählen Sie eine Aktion, die mit Ihrer gezählten Zielmenge durchgeführt werden soll:',
|
||
'Please configure the carry over and profit and loss accounts for year-end closing in the client configuration!' => 'Bitte konfigurieren Sie in der Mandantenkonfiguration das Saldenvortragskonto, das Gewinnvortragskonto und das Verlustvortragskonto!',
|
||
'Please configure the year-end closing and the profit or loss carried forward accounts for year-end closing in the client configuration!' => 'Bitte konfigurieren Sie in der Mandantenkonfiguration das Jahresabschluss-Konto und das Konto zum Verbuchen des Jahresgewinns oder -verlusts!',
|
||
'Please contact your administrator or a service provider.' => 'Bitte kontaktieren Sie Ihren Administrator oder einen Dienstleister.',
|
||
'Please contact your administrator.' => 'Bitte wenden Sie sich an Ihren Administrator.',
|
||
'Please correct the settings and try again or deactivate that client.' => 'Bitte korrigieren Sie die Einstellungen und versuchen Sie es erneut, oder deaktivieren Sie diesen Mandanten.',
|
||
... | ... | |
'Profit and loss accounts' => 'Erfolgskonten',
|
||
'Profit carried forward account' => 'Gewinnvortragskonto',
|
||
'Profit determination' => 'Gewinnermittlung',
|
||
'Profit or loss carried forward account' => 'Konto zum Verbuchen des Jahresgewinns oder -verlusts',
|
||
'Proforma Invoice' => 'Proformarechnung',
|
||
'Program' => 'Programm',
|
||
'Project' => 'Projekt',
|
||
... | ... | |
'Purchase Credit Notes' => 'Einkaufsgutschriften',
|
||
'Purchase Delivery Order' => 'Einkaufslieferschein',
|
||
'Purchase Delivery Orders' => 'Einkaufslieferscheine',
|
||
'Purchase Delivery Orders deleteable' => 'Einkaufslieferscheine löschbar',
|
||
'Purchase Invoice' => 'Einkaufsrechnung',
|
||
'Purchase Invoices' => 'Einkaufsrechnungen',
|
||
'Purchase Order' => 'Lieferantenauftrag',
|
||
... | ... | |
'Purchase Order Confirmations' => 'Lieferantenauftragsbestätigungen',
|
||
'Purchase Orders' => 'Lieferantenaufträge',
|
||
'Purchase Orders Services are deliverable' => 'Dienstleistungen im Einkaufsauftrag sind lieferbar',
|
||
'Purchase Orders deleteable' => 'Lieferantenaufträge löschbar',
|
||
'Purchase Price Rules' => 'Preisregeln Einkauf',
|
||
'Purchase Price Rules ' => 'Preisregeln (Einkauf)',
|
||
'Purchase Quotation Intake' => 'Angebotseingang',
|
||
'Purchase Quotation Intakes' => 'Angebotseingänge',
|
||
'Purchase Reclamation' => 'Einkaufsreklamation',
|
||
'Purchase Reclamations' => 'Einkaufsreklamationen',
|
||
'Purchase Reclamations deleteable' => 'Einkaufsreklamationen löschbar',
|
||
'Purchase basket' => 'Einkaufswarenkorb',
|
||
'Purchase basket item not existing any more for position(s): #1.' => 'Einkaufskorbartikel existiert nicht mehr für Position(en): #1.',
|
||
'Purchase delivery order' => 'Lieferschein (Einkauf)',
|
||
... | ... | |
'Sales (typeabbreviation)' => 'V',
|
||
'Sales Delivery Order' => 'Verkaufslieferschein',
|
||
'Sales Delivery Orders' => 'Verkaufslieferscheine',
|
||
'Sales Delivery Orders deleteable' => 'Verkaufslieferscheine löschbar',
|
||
'Sales Invoice' => 'Rechnung',
|
||
'Sales Invoices' => 'Kundenrechnungen',
|
||
'Sales Order' => 'Kundenauftrag',
|
||
... | ... | |
'Sales Orders' => 'Aufträge',
|
||
'Sales Orders Advance' => 'Auftragsvorlauf',
|
||
'Sales Orders Services are deliverable' => 'Dienstleistungen im Verkaufsauftrag sind lieferbar',
|
||
'Sales Orders deleteable' => 'Kundenaufträge löschbar',
|
||
'Sales Price Rules' => 'Preisregeln Verkauf',
|
||
'Sales Price Rules ' => 'Preisregeln (Verkauf)',
|
||
'Sales Price information' => 'Verkaufspreisinformation',
|
||
... | ... | |
'Sales Quotations' => 'Angebote',
|
||
'Sales Reclamation' => 'Verkaufsreklamation',
|
||
'Sales Reclamations' => 'Verkaufsreklamationen',
|
||
'Sales Reclamations deleteable' => 'Verkaufsreklamationen löschbar',
|
||
'Sales Report' => 'Verkaufsbericht',
|
||
'Sales and purchase invoices with inventory transactions with taxkeys' => 'Einkaufs- und Verkaufsrechnungen mit Warenbestandsbuchungen mit Steuerschlüsseln',
|
||
'Sales delivery order' => 'Lieferschein (Verkauf)',
|
||
... | ... | |
'Show custom variable search inputs' => 'Suchoptionen für Benutzerdefinierte Variablen verstecken',
|
||
'Show delete button in purchase delivery orders?' => 'Soll der "Löschen"-Knopf bei Einkaufslieferscheinen angezeigt werden?',
|
||
'Show delete button in purchase orders?' => 'Soll der "Löschen"-Knopf bei Lieferantenaufträgen angezeigt werden?',
|
||
'Show delete button in purchase reclamations?' => 'Soll der "Löschen"-Knopf bei Einkaufsreklamationen angezeigt werden?',
|
||
'Show delete button in sales delivery orders?' => 'Soll der "Löschen"-Knopf bei Verkaufslieferscheinen angezeigt werden?',
|
||
'Show delete button in sales orders?' => 'Soll der "Löschen"-Knopf bei Kundenaufträgen angezeigt werden?',
|
||
'Show delete button in sales reclamations?' => 'Soll der "Löschen"-Knopf bei Verkaufsreklamationen angezeigt werden?',
|
||
'Show delivery plan' => 'Lieferplan anzeigen',
|
||
'Show delivery value report' => 'Lieferwertbericht anzeigen',
|
||
'Show detail informationen' => 'Detaillierte Informationen anzeigen',
|
||
... | ... | |
'This option controls the inventory system.' => 'Dieser Parameter legt die Warenbuchungsmethode fest.',
|
||
'This option controls the method used for determining the startdate for the balance report.' => 'Diese Option bestimmt, wie das Startdatum für den Bilanzbericht ermittelt wird',
|
||
'This option controls the method used for profit determination.' => 'Dieser Parameter legt die Berechnungsmethode für die Gewinnermittlung fest.',
|
||
'This option controls the method used for the automated year-end bookings.' => 'Dieser Parameter legt die Methode für die automatischen Jahresabschluss-Buchungen fest.',
|
||
'This option controls the posting and calculation behavior for the accounting method.' => 'Dieser Parameter steuert die Buchungs- und Berechnungsmethoden für die Versteuerungsart.',
|
||
'This order has already a final invoice.' => 'Dieser Auftrag hat schon eine Schlussrechnung.',
|
||
'This part has already been added.' => 'Dieser Artikel wurde schon hinzugefügt',
|
||
... | ... | |
'Year' => 'Jahr',
|
||
'Year-end bookings were successfully completed!' => 'Die Jahresabschlußbuchungen wurden erfolgreich durchgeführt!',
|
||
'Year-end closing' => 'Jahresabschluß',
|
||
'Year-end closing account' => 'Jahresabschluss-Konto',
|
||
'Year-end date' => 'Jahresabschlußdatum',
|
||
'Year-end date missing' => 'Jahresabschlußdatum fehlt',
|
||
'Year-end method' => 'Jahresabschluss-Methode',
|
||
'Yearly' => 'jährlich',
|
||
'Yearly taxreport not yet implemented' => 'Jährlicher Steuerreport für dieses Ausgabeformat noch nicht implementiert',
|
||
'Yes' => 'Ja',
|
||
... | ... | |
'cp_greeting to cp_gender migration' => 'Datenumwandlung von Titel nach Geschlecht (cp_greeting to cp_gender)',
|
||
'customer_list' => 'kundenliste',
|
||
'dated' => 'datiert',
|
||
'default' => 'Standard',
|
||
'default exchange rate' => 'Tageskurs',
|
||
'delete' => 'Löschen',
|
||
'delete item' => 'Position löschen',
|
||
... | ... | |
'service_list' => 'dienstleistungsliste',
|
||
'shipped' => 'verschickt',
|
||
'shipped_br' => 'Verschk.',
|
||
'simple' => 'Einfach',
|
||
'singular first char' => 'S',
|
||
'sort items' => 'Positionen sortieren',
|
||
'start upload' => 'Hochladen beginnt',
|
locale/en/all | ||
---|---|---|
'Please choose for which categories the taxes should be displayed (otherwise remove the ticks):' => '',
|
||
'Please choose the action to be processed for your target quantity:' => '',
|
||
'Please configure the carry over and profit and loss accounts for year-end closing in the client configuration!' => '',
|
||
'Please configure the year-end closing and the profit or loss carried forward accounts for year-end closing in the client configuration!' => '',
|
||
'Please contact your administrator or a service provider.' => '',
|
||
'Please contact your administrator.' => '',
|
||
'Please correct the settings and try again or deactivate that client.' => '',
|
||
... | ... | |
'Profit and loss accounts' => '',
|
||
'Profit carried forward account' => '',
|
||
'Profit determination' => '',
|
||
'Profit or loss carried forward account' => '',
|
||
'Proforma Invoice' => '',
|
||
'Program' => '',
|
||
'Project' => '',
|
||
... | ... | |
'Purchase Credit Notes' => '',
|
||
'Purchase Delivery Order' => '',
|
||
'Purchase Delivery Orders' => '',
|
||
'Purchase Delivery Orders deleteable' => '',
|
||
'Purchase Invoice' => '',
|
||
'Purchase Invoices' => '',
|
||
'Purchase Order' => '',
|
||
... | ... | |
'Purchase Order Confirmations' => '',
|
||
'Purchase Orders' => '',
|
||
'Purchase Orders Services are deliverable' => '',
|
||
'Purchase Orders deleteable' => '',
|
||
'Purchase Price Rules' => '',
|
||
'Purchase Price Rules ' => '',
|
||
'Purchase Quotation Intake' => '',
|
||
'Purchase Quotation Intakes' => '',
|
||
'Purchase Reclamation' => '',
|
||
'Purchase Reclamations' => '',
|
||
'Purchase Reclamations deleteable' => '',
|
||
'Purchase basket' => '',
|
||
'Purchase basket item not existing any more for position(s): #1.' => '',
|
||
'Purchase delivery order' => '',
|
||
... | ... | |
'Sales (typeabbreviation)' => 'S',
|
||
'Sales Delivery Order' => '',
|
||
'Sales Delivery Orders' => '',
|
||
'Sales Delivery Orders deleteable' => '',
|
||
'Sales Invoice' => '',
|
||
'Sales Invoices' => '',
|
||
'Sales Order' => '',
|
||
... | ... | |
'Sales Orders' => '',
|
||
'Sales Orders Advance' => '',
|
||
'Sales Orders Services are deliverable' => '',
|
||
'Sales Orders deleteable' => '',
|
||
'Sales Price Rules' => '',
|
||
'Sales Price Rules ' => '',
|
||
'Sales Price information' => '',
|
||
... | ... | |
'Sales Quotations' => '',
|
||
'Sales Reclamation' => '',
|
||
'Sales Reclamations' => '',
|
||
'Sales Reclamations deleteable' => '',
|
||
'Sales Report' => '',
|
||
'Sales and purchase invoices with inventory transactions with taxkeys' => '',
|
||
'Sales delivery order' => '',
|
||
... | ... | |
'Show custom variable search inputs' => '',
|
||
'Show delete button in purchase delivery orders?' => '',
|
||
'Show delete button in purchase orders?' => '',
|
||
'Show delete button in purchase reclamations?' => '',
|
||
'Show delete button in sales delivery orders?' => '',
|
||
'Show delete button in sales orders?' => '',
|
||
'Show delete button in sales reclamations?' => '',
|
||
'Show delivery plan' => '',
|
||
'Show delivery value report' => '',
|
||
'Show detail informationen' => '',
|
||
... | ... | |
'This option controls the inventory system.' => '',
|
||
'This option controls the method used for determining the startdate for the balance report.' => '',
|
||
'This option controls the method used for profit determination.' => '',
|
||
'This option controls the method used for the automated year-end bookings.' => '',
|
||
'This option controls the posting and calculation behavior for the accounting method.' => '',
|
||
'This order has already a final invoice.' => '',
|
||
'This part has already been added.' => '',
|
||
... | ... | |
'Year' => '',
|
||
'Year-end bookings were successfully completed!' => '',
|
||
'Year-end closing' => '',
|
||
'Year-end closing account' => '',
|
||
'Year-end date' => '',
|
||
'Year-end date missing' => '',
|
||
'Year-end method' => '',
|
||
'Yearly' => '',
|
||
'Yearly taxreport not yet implemented' => '',
|
||
'Yes' => '',
|
||
... | ... | |
'cp_greeting to cp_gender migration' => '',
|
||
'customer_list' => '',
|
||
'dated' => '',
|
||
'default' => '',
|
||
'default exchange rate' => '',
|
||
'delete' => '',
|
||
'delete item' => '',
|
||
... | ... | |
'service_list' => '',
|
||
'shipped' => '',
|
||
'shipped_br' => 'shipped',
|
||
'simple' => '',
|
||
'singular first char' => '',
|
||
'sort items' => '',
|
||
'start upload' => '',
|
sql/Pg-upgrade2/defaults_yearend_method.sql | ||
---|---|---|
-- @tag: defaults_yearend_method
|
||
-- @description: method used for the automated year-end bookings
|
||
-- @depends: release_3_8_0
|
||
|
||
ALTER TABLE defaults ADD COLUMN yearend_method TEXT;
|
templates/design40_webpages/client_config/_default_accounts.html | ||
---|---|---|
<table class="tbl-horizontal">
|
||
<caption>[% LxERP.t8("Year-end closing") %]</caption>
|
||
<tbody>
|
||
[% IF SELF.defaults.yearend_method == 'simple' %] [% THEN %]
|
||
<tr>
|
||
<th>[% LxERP.t8("Year-end closing account") %]</th>
|
||
<td>[% P.chart.picker('defaults.carry_over_account_chart_id', SELF.defaults.carry_over_account_chart_id, choose=1, style=style) %]</td>
|
||
</tr>
|
||
<tr>
|
||
<th>[% LxERP.t8("Profit or loss carried forward account") %]</th>
|
||
<td>[% P.chart.picker('defaults.profit_carried_forward_chart_id', SELF.defaults.profit_carried_forward_chart_id, choose=1, style=style) %]</td>
|
||
</tr>
|
||
[% ELSE %]
|
||
<tr>
|
||
<th>[% LxERP.t8("Carry over account for year-end closing") %]</th>
|
||
<td>[% P.chart.picker('defaults.carry_over_account_chart_id', SELF.defaults.carry_over_account_chart_id, category='A', choose=1, style=style) %]</td>
|
||
... | ... | |
<th>[% LxERP.t8("Loss carried forward account") %]</th>
|
||
<td>[% P.chart.picker('defaults.loss_carried_forward_chart_id', SELF.defaults.loss_carried_forward_chart_id, category='A', choose=1, style=style) %]</td>
|
||
</tr>
|
||
[% END %]
|
||
<tr>
|
||
<th>[% LxERP.t8("Transit Items account") %]</th>
|
||
<td>[% P.chart.picker('defaults.transit_items_chart_id', SELF.defaults.transit_items_chart_id , category='A', choose=1, style=style) %]<td>
|
templates/design40_webpages/client_config/_posting_configuration.html | ||
---|---|---|
<td>[% L.select_tag('defaults.balance_startdate_method', SELF.balance_startdate_method_options, value_key = 'value', title_key = 'title', default = SELF.defaults.balance_startdate_method, class='wi-morewide') %]</td>
|
||
<td class="longdesc">[% LxERP.t8('This option controls the method used for determining the startdate for the balance report.') %]</td>
|
||
</tr>
|
||
<tr>
|
||
<th>[% LxERP.t8('Year-end method') %]</th>
|
||
<td>[% L.select_tag('defaults.yearend_method', SELF.yearend_options, value_key = 'value', title_key = 'title', default = SELF.defaults.yearend_method, class='wi-morewide') %]</td>
|
||
<td class="longdesc">[% LxERP.t8('This option controls the method used for the automated year-end bookings.') %]</td>
|
||
</tr>
|
||
<tr>
|
||
<th>[% LxERP.t8('Set valid until date for Sales Quotation') %]</th>
|
||
<td>[% L.yes_no_tag('defaults.reqdate_on', SELF.defaults.reqdate_on) %]</td>
|
templates/design40_webpages/yearend/form.html | ||
---|---|---|
|
||
<div class="wrapper">
|
||
|
||
[% IF carry_over_chart AND profit_chart AND loss_chart %] [% THEN %]
|
||
[% IF carry_over_chart AND profit_chart AND (loss_chart OR SELF.defaults.yearend_method == 'simple') %] [% THEN %]
|
||
<form id="filter" name="filter" method="post" action="controller.pl">
|
||
<table class="tbl-horizontal">
|
||
<tr>
|
||
... | ... | |
<td>[% 'Start date' | $T8 %]</td>
|
||
<td>[% L.date_tag('cb_startdate', '', readonly=1) %]</td>
|
||
</tr>
|
||
[% IF SELF.defaults.yearend_method == 'simple' %] [% THEN %]
|
||
<tr>
|
||
<td>[% 'Year-end closing account' | $T8 %]</td>
|
||
<td>[% carry_over_chart.displayable_name | html %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[% 'Profit or loss carried forward account' | $T8 %]</td>
|
||
<td>[% profit_chart.displayable_name | html %]</td>
|
||
</tr>
|
||
[% ELSE %]
|
||
<tr>
|
||
<td>[% 'Carry over account for year-end closing' | $T8 %]</td>
|
||
<td>[% carry_over_chart.displayable_name | html %]</td>
|
||
... | ... | |
<td>[% 'Loss carried forward account' | $T8 %]</td>
|
||
<td>[% loss_chart.displayable_name | html %]</td>
|
||
</tr>
|
||
[% END %]
|
||
</table>
|
||
</form>
|
||
[% ELSIF SELF.defaults.yearend_method == 'simple' %]
|
||
[% 'Please configure the year-end closing and the profit or loss carried forward accounts for year-end closing in the client configuration!' | $T8 %]
|
||
[% ELSE %]
|
||
[% 'Please configure the carry over and profit and loss accounts for year-end closing in the client configuration!' | $T8 %]
|
||
[% END %]
|
templates/webpages/client_config/_default_accounts.html | ||
---|---|---|
<tr>
|
||
<th align="right">[% LxERP.t8("Year-end closing") %]</th>
|
||
</tr>
|
||
[% IF SELF.defaults.yearend_method == 'simple' %] [% THEN %]
|
||
<tr>
|
||
<td>[% LxERP.t8("Year-end closing account") %]</td>
|
||
<td>[% P.chart.picker('defaults.carry_over_account_chart_id', SELF.defaults.carry_over_account_chart_id, choose=1, style=style) %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[% LxERP.t8("Profit or loss carried forward account") %]</td>
|
||
<td>[% P.chart.picker('defaults.profit_carried_forward_chart_id', SELF.defaults.profit_carried_forward_chart_id, choose=1, style=style) %]</td>
|
||
</tr>
|
||
[% ELSE %]
|
||
<tr>
|
||
<td align="right">[% LxERP.t8("Carry over account for year-end closing") %]</td>
|
||
<td>[% P.chart.picker('defaults.carry_over_account_chart_id', SELF.defaults.carry_over_account_chart_id, category='A', choose=1, style=style) %]<td>
|
||
... | ... | |
<td align="right">[% LxERP.t8("Loss carried forward account") %]</td>
|
||
<td>[% P.chart.picker('defaults.loss_carried_forward_chart_id', SELF.defaults.loss_carried_forward_chart_id, category='A', choose=1, style=style) %]<td>
|
||
</tr>
|
||
[% END %]
|
||
<tr>
|
||
<td align="right">[% LxERP.t8("Transit Items account") %]</td>
|
||
<td>[% P.chart.picker('defaults.transit_items_chart_id', SELF.defaults.transit_items_chart_id , category='A', choose=1, style=style) %]<td>
|
templates/webpages/client_config/_posting_configuration.html | ||
---|---|---|
<td>[% L.select_tag('defaults.balance_startdate_method', SELF.balance_startdate_method_options, value_key = 'value', title_key = 'title', default = SELF.defaults.balance_startdate_method) %]</td>
|
||
<td>[% LxERP.t8('This option controls the method used for determining the startdate for the balance report.') %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="right">[% LxERP.t8('Year-end method') %]</td>
|
||
<td>[% L.select_tag('defaults.yearend_method', SELF.yearend_options, value_key = 'value', title_key = 'title', default = SELF.defaults.yearend_method, class='wi-morewide') %]</td>
|
||
<td>[% LxERP.t8('This option controls the method used for the automated year-end bookings.') %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="right">[% LxERP.t8('Set valid until date for Sales Quotation') %]</td>
|
||
<td>[% L.yes_no_tag('defaults.reqdate_on', SELF.defaults.reqdate_on) %]</td>
|
templates/webpages/yearend/form.html | ||
---|---|---|
|
||
[%- INCLUDE 'common/flash.html' %]
|
||
|
||
[% IF carry_over_chart AND profit_chart AND loss_chart %] [% THEN %]
|
||
[% IF carry_over_chart AND profit_chart AND (loss_chart OR SELF.defaults.yearend_method == 'simple') %] [% THEN %]
|
||
<form id="filter" name="filter" method="post" action="controller.pl">
|
||
<table>
|
||
<tr>
|
||
... | ... | |
<td align="right">[% 'Start date' | $T8 %]</td>
|
||
<td>[% L.date_tag('cb_startdate', '', readonly=1) %]</td>
|
||
</tr>
|
||
[% IF SELF.defaults.yearend_method == 'simple' %] [% THEN %]
|
||
<tr>
|
||
<td align="right">[% 'Year-end closing account' | $T8 %]</td>
|
||
<td>[% carry_over_chart.displayable_name | html %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="right">[% 'Profit or loss carried forward account' | $T8 %]</td>
|
||
<td>[% profit_chart.displayable_name | html %]</td>
|
||
</tr>
|
||
[% ELSE %]
|
||
<tr>
|
||
<td align="right">[% 'Carry over account for year-end closing' | $T8 %]</td>
|
||
<td>[% carry_over_chart.displayable_name | html %]</td>
|
||
... | ... | |
<td align="right">[% 'Loss carried forward account' | $T8 %]</td>
|
||
<td>[% loss_chart.displayable_name | html %]</td>
|
||
</tr>
|
||
[% END %]
|
||
</table>
|
||
</form>
|
||
[% ELSIF SELF.defaults.yearend_method == 'simple' %]
|
||
[% 'Please configure the year-end closing and the profit or loss carried forward accounts for year-end closing in the client configuration!' | $T8 %]
|
||
[% ELSE %]
|
||
[% 'Please configure the carry over and profit and loss accounts for year-end closing in the client configuration!' | $T8 %]
|
||
[% END %]
|
Auch abrufbar als: Unified diff
Vereinfachte Methode beim Jahresabschluss
- Nur 2 statt 3 Konten bei den Jahresabschluss-Standardkonten:
Jahresabschluss-Konto und
Konto zum Verbuchen des Jahresgewinns oder
verlusts
Keine Abschlussbuchungen bei den Erfolgskonten- Auswahl der Methode in der Mandantenkonfiguration unter Buchungskonfiguration
- Alle Konten als Abschlusskonten auswählbar
- Verbuchen des Jahresgewinns oder -verlusts nur bei den Eröffnungsbuchungen