use DateTime;
use List::MoreUtils qw(uniq);
use List::Util qw(max sum);
+use List::UtilsBy qw(sort_by);
use English qw(-no_match_vars);
use SL::DB::Default;
use SL::DB::PaymentTerm;
require "bin/mozilla/io.pl";
-require "bin/mozilla/invoice_io.pl";
require "bin/mozilla/arap.pl";
require "bin/mozilla/drafts.pl";
$form->{vc} = 'customer';
# create links
- $form->{webdav} = $::instance_conf->get_webdav;
-
$form->create_links("AR", \%myconfig, "customer");
if ($form->{all_customer}) {
my %TMPL_VAR = ();
my @custom_hiddens;
+ if ($form->{id}) {
+ require SL::DB::Invoice;
+ $TMPL_VAR{invoice_obj} = SL::DB::Invoice->new(id => $form->{id})->load;
+ }
$form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id};
$form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id};
$TMPL_VAR{HIDDENS} = [qw(
id action type media format queued printed emailed title vc discount
title creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id
- max_dunning_level dunning_amount
+ max_dunning_level dunning_amount dunning_description
shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact shiptophone shiptofax
shiptoemail shiptodepartment_1 shiptodepartment_2 shiptocp_gender message email subject cc bcc taxaccounts cursor_fokus
convert_from_do_ids convert_from_oe_ids convert_from_ar_ids useasnew
$main::lxdebug->leave_sub();
}
+sub _sort_payments {
+ my @fields = qw(acc_trans_id gldate datepaid source memo paid AR_paid);
+ my @payments =
+ grep { $_->{paid} != 0 }
+ map {
+ my $idx = $_;
+ +{ map { ($_ => delete($::form->{"${_}_${idx}"})) } @fields }
+ } (1..$::form->{paidaccounts});
+
+ @payments = sort_by { DateTime->from_kivitendo($_->{datepaid}) } @payments;
+
+ $::form->{paidaccounts} = max scalar(@payments), 1;
+
+ foreach my $idx (1 .. scalar(@payments)) {
+ my $payment = $payments[$idx - 1];
+ $::form->{"${_}_${idx}"} = $payment->{$_} for @fields;
+ }
+}
+
sub form_footer {
$main::lxdebug->enter_sub();
}
# payments
+ _sort_payments();
+
my $totalpaid = 0;
$form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"});
$form->{paid_indices} = [ 1 .. $form->{paidaccounts} ];
show_delete => ($::instance_conf->get_is_changeable == 2)
? ($form->current_date(\%myconfig) eq $form->{gldate})
: ($::instance_conf->get_is_changeable == 1),
+ today => DateTime->today,
});
##print $form->parse_html_template('is/_payments'); # parser
##print $form->parse_html_template('webdav/_list'); # parser
$main::auth->assert('invoice_edit');
+ $form->mtime_ischanged('ar') ;
my $invdate = $form->datetonum($form->{invdate}, \%myconfig);
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
my $locale = $main::locale;
$main::auth->assert('invoice_edit');
+ $form->mtime_ischanged('ar');
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
$form->isblank("invdate", $locale->text('Invoice Date missing!'));
$main::lxdebug->leave_sub();
}
+sub display_form {
+ $::lxdebug->enter_sub;
+
+ $::auth->assert('invoice_edit');
+
+ relink_accounts();
+
+ my $new_rowcount = $::form->{"rowcount"} * 1 + 1;
+ $::form->{"project_id_${new_rowcount}"} = $::form->{"globalproject_id"};
+
+ $::form->language_payment(\%::myconfig);
+
+ Common::webdav_folder($::form);
+
+ form_header();
+ display_row(++$::form->{rowcount});
+ form_footer();
+
+ $::lxdebug->leave_sub;
+}
+
sub yes {
$main::lxdebug->enter_sub();