# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1335, USA.
#======================================================================
#
# Accounts Payables
use SL::FU;
use SL::IR;
use SL::IS;
-use SL::PE;
use SL::ReportGenerator;
use SL::DB::Default;
use SL::DB::PurchaseInvoice;
+use SL::Webdav;
+use SL::Locale::String qw(t8);
require "bin/mozilla/arap.pl";
require "bin/mozilla/common.pl";
-require "bin/mozilla/drafts.pl";
require "bin/mozilla/reportgenerator.pl";
use strict;
my $form = $main::form;
my %myconfig = %main::myconfig;
- $main::auth->assert('general_ledger');
-
- return $main::lxdebug->leave_sub() if (load_draft_maybe());
+ $main::auth->assert('ap_transactions');
$form->{title} = "Add";
- $form->{callback} = "ap.pl?action=add&DONT_LOAD_DRAFT=1" unless $form->{callback};
+ $form->{callback} = "ap.pl?action=add" unless $form->{callback};
AP->get_transdate(\%myconfig, $form);
$form->{initial_transdate} = $form->{transdate};
my $form = $main::form;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
$form->{title} = "Edit";
my $form = $main::form;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
+ # get all files stored in the webdav folder
+ if ($form->{invnumber} && $::instance_conf->get_webdav) {
+ my $webdav = SL::Webdav->new(
+ type => 'accounts_payable',
+ number => $form->{invnumber},
+ );
+ my $webdav_path = $webdav->webdav_path;
+ my @all_objects = $webdav->get_all_objects;
+ @{ $form->{WEBDAV} } = map { { name => $_->filename,
+ type => t8('File'),
+ link => File::Spec->catfile($_->full_filedescriptor),
+ } } @all_objects;
+ }
&form_header;
&form_footer;
my $form = $main::form;
my %myconfig = %main::myconfig;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
$form->create_links("AP", \%myconfig, "vendor");
my %saved;
if (!$params{dont_save}) {
%saved = map { ($_ => $form->{$_}) } qw(direct_debit taxincluded);
$saved{duedate} = $form->{duedate} if $form->{duedate};
+ $saved{currency} = $form->{currency} if $form->{currency};
+ $saved{taxincluded} = $form->{taxincluded} if $form->{taxincluded};
}
IR->get_vendor(\%myconfig, \%$form);
# currencies
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
+ $form->{selectcurrency} = "";
map { my $quoted = H($_); $form->{selectcurrency} .= "<option value=\"${quoted}\">${quoted}\n" } $form->get_all_currencies(\%myconfig);
# vendors
my $locale = $main::locale;
my $cgi = $::request->{cgi};
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
$::form->{invoice_obj} = SL::DB::PurchaseInvoice->new(id => $::form->{id})->load if $::form->{id};
$form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
$form->{javascript} .= qq|<script type="text/javascript" src="js/show_vc_details.js"></script>|;
$form->{javascript} .= qq|<script type="text/javascript" src="js/follow_up.js"></script>|;
+ $form->{javascript} .= qq|<script type="text/javascript" src="js/kivi.Draft.js"></script>|;
$form->header();
$changeable = (($form->{"gldate_$i"} eq '') || $form->current_date(\%myconfig) eq $form->{"gldate_$i"});
}
+ #deaktivieren von gebuchten Zahlungen ausserhalb der Bücherkontrolle, vorher prüfen ob heute eingegeben
+ if ($form->date_closed($form->{"gldate_$i"})) {
+ $changeable = 0;
+ }
+
$form->{'paidaccount_changeable_'. $i} = $changeable;
$form->{'labelpaid_project_id_'. $i} = $project_labels{$form->{'paid_project_id_'. $i}};
sub form_footer {
$::lxdebug->enter_sub;
- $::auth->assert('general_ledger');
+ $::auth->assert('ap_transactions');
my $num_due;
my $num_follow_ups;
if ($::form->{id}) {
- my $follow_ups = FU->follow_ups('trans_id' => $::form->{id});
+ my $follow_ups = FU->follow_ups('trans_id' => $::form->{id}, 'not_done' => 1);
if (@{ $follow_ups }) {
$num_due = sum map { $_->{due} * 1 } @{ $follow_ups };
my $form = $main::form;
my %myconfig = %main::myconfig;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
&mark_as_paid_common(\%myconfig,"ap");
$main::lxdebug->leave_sub();
}
+sub show_draft {
+ $::form->{transdate} = DateTime->today_local->to_kivitendo if !$::form->{transdate};
+ $::form->{gldate} = $::form->{transdate} if !$::form->{gldate};
+ update();
+}
+
sub update {
$main::lxdebug->enter_sub();
my $form = $main::form;
my %myconfig = %main::myconfig;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
my $display = shift;
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
$form->mtime_ischanged('ap');
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
+ $form->error($locale->text('Cannot post transaction above the maximum future booking date!'))
+ if ($form->date_max_future($form->{"datepaid_$i"}, \%myconfig));
+
+ #Zusätzlich noch das Buchungsdatum in die Bücherkontrolle einbeziehen
+ # (Dient zur Prüfung ob ZE oder ZA geprüft werden soll)
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
+ if ($form->date_closed($form->{"datepaid_$i"}) && !$form->date_closed($form->{"gldate_$i"}, \%myconfig));
if ($form->{defaultcurrency} && ($form->{currency} ne $form->{defaultcurrency})) {
$form->{"exchangerate_$i"} = $form->{exchangerate}
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
$form->mtime_ischanged('ap');
my ($inline) = @_;
$form->isblank("datepaid_$i", $locale->text('Payment date missing!'));
+ $form->error($locale->text('Cannot post transaction above the maximum future booking date!'))
+ if ($form->date_max_future($form->{"datepaid_$i"}, \%myconfig));
+
+ #Zusätzlich noch das Buchungsdatum in die Bücherkontrolle einbeziehen
+ # (Dient zur Prüfung ob ZE oder ZA geprüft werden soll)
$form->error($locale->text('Cannot post payment for a closed period!'))
- if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig));
+ if ($form->date_closed($form->{"datepaid_$i"}) && !$form->date_closed($form->{"gldate_$i"}, \%myconfig));
if ($form->{defaultcurrency} && ($form->{currency} ne $form->{defaultcurrency})) {
$form->{"exchangerate_$i"} = $form->{exchangerate}
my ($vendor) = split /--/, $form->{vendor};
if ($form->{oldvendor} ne "$vendor--$form->{vendor_id}") {
&update;
- ::end_of_request();
+ $::dispatcher->end_request;
}
my ($debitaccno, $debittaxkey) = split /--/, $form->{AP_amountselected};
my ($taxkey, $NULL) = split /--/, $form->{taxchartselected};
$form->{id} = 0 if $form->{postasnew};
if (AP->post_transaction(\%myconfig, \%$form)) {
+ # create webdav folder
+ if ($::instance_conf->get_webdav) {
+ SL::Webdav->new(type => 'accounts_payable',
+ number => $form->{invnumber},
+ )->webdav_path;
+ }
# saving the history
if(!exists $form->{addition} && $form->{id} ne "") {
$form->{snumbers} = qq|invnumber_| . $form->{invnumber};
$form->save_history;
}
# /saving the history
- remove_draft() if $form->{remove_draft};
# Dieser Text wird niemals ausgegeben: Probleme beim redirect?
$form->redirect($locale->text('Transaction posted!')) unless $inline;
} else {
my $form = $main::form;
my %myconfig = %main::myconfig;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
$form->{postasnew} = 1;
# saving the history
my $form = $main::form;
my %myconfig = %main::myconfig;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
map { delete $form->{$_} } qw(printed emailed queued invnumber invdate deliverydate id datepaid_1 gldate_1 acc_trans_id_1 source_1 memo_1 paid_1 exchangerate_1 AP_paid_1 storno);
$form->{paidaccounts} = 1;
my $form = $main::form;
my $locale = $main::locale;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
$form->{title} = $locale->text('Confirm!');
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
if (AP->delete_transaction(\%myconfig, \%$form)) {
# saving the history
'vendornumber' => { 'text' => $locale->text('Vendor Number'), },
'country' => { 'text' => $locale->text('Country'), },
'ustid' => { 'text' => $locale->text('USt-IdNr.'), },
- 'taxzone' => { 'text' => $locale->text('Steuersatz'), },
+ 'taxzone' => { 'text' => $locale->text('Tax rate'), },
'payment_terms' => { 'text' => $locale->text('Payment Terms'), },
'charts' => { 'text' => $locale->text('Buchungskonto'), },
'direct_debit' => { 'text' => $locale->text('direct debit'), },
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- $main::auth->assert('general_ledger');
+ $main::auth->assert('ap_transactions');
if (IS->has_storno(\%myconfig, $form, 'ap')) {
$form->{title} = $locale->text("Cancel Accounts Payables Transaction");