file1 (days from previous month)
BIGCO-C CMO 15153 L 6/30/13 2
BIGCO-C MKT 575 L 6/30/13 2
BIGCO-C MP 706776 L 6/30/13 2
BIGCO-C MP 718037 L 6/30/13 2
BIGCO-C MP 718071 L 6/30/13 2
MEDCO-C UP 89269 L 6/30/13 2
MEDCO-C UP 89800 L 6/30/13 2
MEDCO-C UP 93068 L 6/30/13 2
PURRCO-C UP 89778 L 6/30/13 2
WILYCO-C CMO 15034 L 6/30/13 2
WILYCO-C MKT 546 L 6/30/13 2
WILYCO-C MP 705339 L 6/30/13 1
WILYCO-C MP 705693 L 6/30/13 2
####
file2 (current month - small sample)
BIGCO CNW 180304 L 2013,07,16 2013,07,22
BIGCO UP 218226 L 2013,07,20 2013,07,22
BIGCO UP 219144 L 2013,07,23 2013,07,25
BIGCO-C CMO 15032 L 2013,07,01 2013,07,06
BIGCO-C CMO 15076 L 2013,07,01 2013,07,12
BIGCO-C CMO 15128 L 2013,07,01 2013,07,09
BIGCO-C CMO 15153 L 2013,07,01 2013,07,02
BIGCO-C MKT 575 L 2013,07,01 2013,07,02
BIGCO-C MP 705622 L 2013,07,01 2013,07,04
BIGCO-C MP 718037 L 2013,07,01 2013,07,22
BIGCO-C MP 718071 L 2013,07,01 2013,07,17
BIGCO-C UP 95233 L 2013,07,01 2013,07,20
MEDCO CHTT 721530 L 2013,07,16 2013,07,17
MEDCO CHTT 721679 L 2013,07,17 2013,07,18
MEDCO-C UP 88876 E 2013,07,01 2013,07,01
MEDCO-C UP 89269 L 2013,07,01 2013,07,02
MEDCO-C UP 89800 L 2013,07,01 2013,07,02
MEDCO-C UP 93068 L 2013,07,01 2013,07,02
PURRCO UP 95544 L 2013,07,12 2013,07,20
PURRCO-C CTRN 100318 L 2013,07,01 2013,07,15
PURRCO-C UP 89778 L 2013,07,01 2013,07,03
BIGGYCO UP 95664 L 2013,07,05 2013,07,09
BIGGYCO UP 221706 L 2013,07,05 2013,07,09
BIGGYCO-C CMO 20814 L 2013,07,01 2013,07,02
WILYCO CNW 437100 L 2013,07,26 2013,07,30
WILYCO CNW 437106 L 2013,07,08
WILYCO MKT 4399 L 2013,07,03
WILYCO MKT 4559 L 2013,07,23 2013,07,26
WILYCO MP 705320 L 2013,07,23 2013,07,25
WILYCO MP 705860 L 2013,07,26
WILYCO MP 706800 L 2013,07,26 2013,07,31
WILYCO MP 706827 L 2013,07,26
WILYCO MP 706974 L 2013,07,16 2013,07,18
WILYCO UP 94038 L 2013,07,26
WILYCO UP 95048 L 2013,07,23 2013,07,26
WILYCO UP 95050 L 2013,07,08
WILYCO-C CMO 15034 L 2013,07,01 2013,07,11
WILYCO-C MKT 514 L 2013,07,01 2013,07,02
WILYCO-C MKT 546 L 2013,07,01 2013,07,11
WILYCO-C MP 705339 L 2013,07,01 2013,07,12
WILYCO-C MP 705693 L 2013,07,01 2013,07,12
####
#!/usr/bin/perl
#
use strict;
use warnings;
use Locale::Currency::Format;
#use Date::Calc qw( Delta_Days Today Days_in_Month );
use Date::Calc qw( Delta_Days Today Days_in_Month Add_Delta_Days);
my $cnt = 0;
my $amt;
my $mainDir = '/Users/xxx/Scripts/BigRR/RRMarks';
my $filename = '$mainDir\test.txt';
open (my $file, '<', (@ARGV)) or die $!;
open OUT, ">", $filename or die "$filename : $!\n";
# work out end of current month
my ($y,$m,$d) = Today();
my $mth_end = sprintf "%04d,%02d,%02d",$y,$m,Days_in_Month($y,$m);
# ($year,$month,$day) = Add_Delta_Days($year,$month,$day,$Dd);
my $prev_mth_end = sprintf "%04d,%02d,%02d",
Add_Delta_Days($y,$m,1,-1);
printf OUT " Placement Release Tot Chg\n";
printf OUT " Date Date Days Days Cost\n";
while (<$file>) {
my @dates = split '\s+', $_;
$cnt++;
# fill empty dates with month end
my @ymd1 = split ',',$dates[4] //= $prev_mth_end;
my @ymd2 = split ',',$dates[5] //= $prev_mth_end;
my $diff = Delta_Days(@ymd1, @ymd2);
my $free = ($diff - 3);
if ($free >= 0) {
my $amt = $free;
my $cost = ($amt * 100);
my $pfmt = "%-14s %-5s %-8s %-3s %-12s %-12s %-6s %-6s %-6s\n";
printf OUT $pfmt, $dates[0], $dates[1], $dates[2], $dates[3], fmt_mdy($dates[4]), fmt_mdy($dates[5]), $diff, $amt, fmt_curr($cost);
}
elsif ($free < 0) {
my $amt = 0;
my $cost = ($amt * 100);
my $pfmt = "%-14s %-5s %-8s %-3s %-12s %-12s %-6s %-6s %-6s\n";
printf OUT $pfmt, $dates[0], $dates[1], $dates[2], $dates[3], fmt_mdy($dates[4]), fmt_mdy($dates[5]), $diff, $amt, fmt_curr($cost);
}
# format currency
sub fmt_curr {
my $num = shift;
my $rounded = $num;
if ($num =~ m|\.|) {
$rounded = sprintf("%.2f", $num); #round to 2 decimal places
}
# add comma's
while ($rounded =~ s/^(-?\d+)(\d\d\d)/$1,$2/) {}
return ('$' .$rounded);
}
# change yyyy,mm,dd to mm-dd-yy
sub fmt_mdy {
my $ymd = shift;
$ymd =~ s/ //g;
# return ' 'x10 if $ymd eq $NULL_DATE;
my ($y,$m,$d) = split /\D/,$ymd;
if ($y < 99){ $y += 2000 };
return sprintf "%04d-%02d-%02d",$y,$m,$d;
}
}
print $cnt, "\n";
####
Placement Release Tot Chg
Date Date Days Days Cost
WILYCO-C BNSF 408033 L 2013-07-01 2013-07-03 2 0 $0
MEDCO CHTT 720576 L 2013-07-05 2013-07-09 4 1 $100
MEDCO CHTT 721283 L 2013-07-05 2013-07-09 4 1 $100
MEDCO CHTT 721307 L 2013-07-16 2013-07-17 1 0 $0
BIGGCO CHTT 721366 L 2013-07-22 2013-07-30 8 5 $500
BIGGCO CHTT 721369 L 2013-07-12 2013-07-15 3 0 $0
BIGGCO CHTT 721398 L 2013-07-17 2013-07-18 1 0 $0
BIGGCO CHTT 721469 L 2013-07-12 2013-07-15 3 0 $0
MEDCO CHTT 721530 L 2013-07-16 2013-07-17 1 0 $0
MEDCO CHTT 721679 L 2013-07-17 2013-07-18 1 0 $0
BIGGCO CHTT 721743 L 2013-07-05 2013-07-08 3 0 $0
PURRCO CMO 13611 L 2013-07-16 2013-07-27 1 8 $800