summaryrefslogtreecommitdiff
path: root/FS/FS/pay_batch/ach_spiritone.pm
blob: bd3bb14c3fc4634d49d101f4dab68c998abe4f20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package FS::pay_batch::ach_spiritone;

use strict;
use vars qw(@ISA %import_info %export_info $name);
use Time::Local 'timelocal';
use FS::Conf;
use File::Temp;

my $conf;
my ($origid, $datacenter, $typecode, $shortname, $longname, $mybank, $myacct);

$name = 'ach-spiritone'; # note spelling

%import_info = (
  'filetype'    => 'CSV',
  'fields'      => [
    '', #name
    'paybatchnum',  
    'aba',
    'payinfo', 
    '', #transaction type
    'paid',
    '', #default transaction type
    '', #default amount
  ],
  'hook'        => sub {
      my $hash = shift;
      $hash->{'_date'} = time;
      $hash->{'payinfo'} = $hash->{'payinfo'} . '@' . $hash->{'aba'};
  },
  'approved'    => sub { 1 },
  'declined'    => sub { 0 },
);

%export_info = (
# This is the simplest case.
  row => sub {
    my ($cust_pay_batch, $pay_batch) = @_;
    my ($account, $aba) = split('@', $cust_pay_batch->payinfo);
    my $payname = $cust_pay_batch->first . ' ' . $cust_pay_batch->last;
    $payname =~ tr/",/  /; 
    qq!"$payname","!.$cust_pay_batch->paybatchnum.
    qq!","$aba","$account","27","!.$cust_pay_batch->amount.
    qq!","27","0.00"!; #"
  },
  autopost => sub {
    my ($pay_batch, $batch) = @_;
    my $dir = $FS::UID::conf_dir. "/cache.". $FS::UID::datasrc;
    my $fh = new File::Temp(
      TEMPLATE => 'paybatch.'. $pay_batch->batchnum .'.XXXXXXXX',
      DIR      => $dir,
    ) or return "can't open temp file: $!\n";

    print $fh $batch;
    seek $fh, 0, 0;

    my $error = $pay_batch->import_results( 'filehandle' => $fh,
                                         'format'     => $name,
                                       );
    return $error if $error;
  },
);

1;