This commit was generated by cvs2svn to compensate for changes in r11022,
[freeside.git] / FS / FS / pay_batch / BoM.pm
1 package FS::pay_batch::BoM;
2
3 use strict;
4 use vars qw(@ISA %import_info %export_info $name);
5 use Time::Local 'timelocal';
6 use FS::Conf;
7
8 my $conf;
9 my ($origid, $datacenter, $typecode, $shortname, $longname, $mybank, $myacct);
10
11 $name = 'BoM';
12
13 %import_info = (
14   'filetype'    => 'CSV',
15   'fields'      => [],
16   'hook'        => sub { die "Can't import BoM" },
17   'approved'    => sub { 1 },
18   'declined'    => sub { 0 },
19 );
20
21 %export_info = (
22   init => sub {
23     $conf = shift;
24     ($origid,
25      $datacenter,
26      $typecode, 
27      $shortname, 
28      $longname, 
29      $mybank, 
30      $myacct) = $conf->config("batchconfig-BoM");
31   },
32   header => sub { 
33     my $pay_batch = shift;
34     sprintf( "A%10s%04u%06u%05u%54s\n", 
35       $origid,
36       $pay_batch->batchnum,
37       jdate($pay_batch->download),
38       $datacenter,
39       "") .
40     sprintf( "XD%03u%06u%-15s%-30s%09u%-12s   \n",
41       $typecode,
42       jdate($pay_batch->download),
43       $shortname,
44       $longname,
45       $mybank,
46       $myacct);
47   },
48   row => sub {
49     my ($cust_pay_batch, $pay_batch) = @_;
50     my ($account, $aba) = split('@', $cust_pay_batch->payinfo);
51     sprintf( "D%010.0f%09u%-12s%-29s%-19s\n",
52       $cust_pay_batch->amount * 100,
53       $aba,
54       $account,
55       $cust_pay_batch->payname,
56       $cust_pay_batch->paybatchnum
57       );
58   },
59   footer => sub {
60     my ($pay_batch, $batchcount, $batchtotal) = @_;
61     sprintf( "YD%08u%014.0f%56s\n", $batchcount, $batchtotal*100, "").
62     sprintf( "Z%014u%04u%014u%05u%41s\n", 
63       $batchtotal*100, $batchcount, "0", "0", "");
64   },
65 );
66
67 sub jdate {
68   my (@date) = localtime(shift);
69   sprintf("%03d%03d", $date[5] % 100, $date[7] + 1);
70 }
71
72 1;
73