summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/payment.pl136
-rw-r--r--scripts/vouchers.pl15
2 files changed, 151 insertions, 0 deletions
diff --git a/scripts/payment.pl b/scripts/payment.pl
index 4f13e395..991a8f54 100644
--- a/scripts/payment.pl
+++ b/scripts/payment.pl
@@ -82,6 +82,142 @@ sub payments {
$template->render($payment);
}
+sub get_search_criteria {
+ my ($request) = @_;
+ my $payment = LedgerSMB::DBObject::Payment->new({'base' => $request});
+ $payment->get_metadata();
+ if ($payment->{batch_id} && $payment->{batch_date}){
+ $payment->{date_reversed} = $payment->{batch_date};
+ }
+ my $template = LedgerSMB::Template->new(
+ user => $request->{_user},
+ locale => $request->{_locale},
+ path => 'UI/payments',
+ template => 'search',
+ format => 'HTML',
+ );
+ $template->render($payment);
+}
+
+sub get_search_results {
+ my ($request) = @_;
+ my $rows = [];
+ my $payment = LedgerSMB::DBObject::Payment->new({'base' => $request});
+ my @search_results = $payment->search;
+ my $template = LedgerSMB::Template->new(
+ user => $request->{_user},
+ locale => $request->{_locale},
+ path => 'UI',
+ template => 'form-dynatable',
+ format => ($payment->{format}) ? $payment->{format} : 'HTML',
+ );
+
+ my $base_url = "payment.pl?";
+ my $search_url = "$base_url";
+ for my $key (keys %{$request->take_top_level}){
+ if ($base_url =~ /\?$/){
+ $base_url .= "$key=$request->{key}";
+ } else {
+ $base_url .= "&$key=$request->{key}";
+ }
+ }
+
+ my @columns = qw(selected meta_number date_paid amount source company_paid);
+ my $contact_type = ($payment->{account_class} == 1) ? 'Vendor' : 'Customer';
+
+ # CT: Locale strings for gettext:
+ # $request->{_locale}->text("Vendor Number");
+ # $request->{_locale}->text("Customer Number");
+
+ my $heading = {
+ selected => $request->{_locale}->text('Selected'),
+ company_paid => {
+ text => $request->{_locale}->text('Company Name'),
+ href => "$search_url&orderby=company_paid",
+ },
+ meta_number => {
+ text => $request->{_locale}->text(
+ "$contact_type Number"
+ ),
+ href => "$search_url&orderby=meta_number",
+ },
+ date_paid => {
+ text => $request->{_locale}->text('Date Paid'),
+ href => "$search_url&orderby=date_paid",
+ },
+ amount => {
+ text => $request->{_locale}->text('Total Paid'),
+ href => "$search_url&orderby=amount",
+ },
+ source => {
+ text => $request->{_locale}->text('Source'),
+ href => "$search_url&orderby=source",
+ },
+ };
+
+
+ my $classcount;
+ $classcount = 0;
+ my $rowcount;
+ $rowcount = 1;
+ for my $line (@search_results){
+ $classcount ||= 0;
+ $rowcount += 1;
+ push(@$rows, {
+ company_paid => $line->{company_paid},
+ amount => $request->format_amount(amount => $line->{amount}),
+ i => "$classcount",
+ date_paid => $line->{date_paid},
+ source => $line->{source},
+ meta_number => $line->{meta_number},
+ selected => {
+ input => {
+ type => "checkbox",
+ name => "payment_$rowcount",
+ value => "1",
+ },
+ }
+ });
+ $payment->{"credit_id_$rowcount"} = $line->{credit_id};
+ $payment->{"date_paid_$rowcount"} = $line->{date_paid};
+ $payment->{"source_$rowcount"} = $line->{source};
+ $classcount = ($classcount + 1) % 2;
+ ++$rowcount;
+ }
+ $payment->{rowcount} = $rowcount;
+ $payment->{script} = 'payment.pl';
+ $payment->{title} = $request->{_locale}->text("Payment Results");
+ my $hiddens = $payment->take_top_level;
+ $template->render({
+ form => $payment,
+ columns => \@columns,
+ heading => $heading,
+ hiddens => $payment->take_top_level,
+ rows => $rows,
+ buttons => [{
+ value => 'reverse_payments',
+ name => 'action',
+ class => 'submit',
+ type => 'submit',
+ text => $request->{_locale}->text('Reverse Payments'),
+ }]
+ });
+}
+
+sub get_search_results_reverse_payments {
+ my ($request) = @_;
+ my $payment = LedgerSMB::DBObject::Payment->new({base => $request});
+ for my $count (1 .. $payment->{rowcount}){
+ if ($payment->{"payment_$count"}){
+ $payment->{credit_id} = $payment->{"credit_id_$count"};
+ $payment->{date_paid} = $payment->{"date_paid_$count"};
+ $payment->{source} = $payment->{"source_$count"};
+ $payment->reverse;
+ }
+ }
+ get_search_criteria($payment);
+}
+
sub check_job {
my ($request) = @_;
my $payment = LedgerSMB::DBObject::Payment->new({'base' => $request});
diff --git a/scripts/vouchers.pl b/scripts/vouchers.pl
index 4a3c1129..c4799bdf 100644
--- a/scripts/vouchers.pl
+++ b/scripts/vouchers.pl
@@ -63,6 +63,21 @@ sub add_vouchers {
$request->{account_class} = 1;
LedgerSMB::Scripts::payment::payments($request);
}},
+ payment_reversal => {
+ script => 'scripts/payment.pl',
+ function => sub {
+ my ($request) = @_;
+ $request->{account_class} = 1;
+ LedgerSMB::Scripts::payment::get_search_criteria($request);
+ }},
+ receipt_reversal => {
+ script => 'scripts/payment.pl',
+ function => sub {
+ my ($request) = @_;
+ $request->{account_class} = 2;
+ LedgerSMB::Scripts::payment::get_search_criteria($request);
+ }},
+
};