package RPS::Sale::File::WMG;

use strict;

use base 'RPS::Sale::File';

sub new
{
    my ($self, $parent) = @_;
    return undef unless (ref($parent) eq 'HASH');

    return bless $parent;
}


sub _file_match_rules
{
    my $self = shift;

    # defined WMG match rules first
    my $rules = [
        # napster stream
        { service => Client::Service::DSP_NAPSTER,
          version => 7,
          lines => [
              ['^\d+$', '20\d\d\D\d\d\D\d\d', '20\d\d\D\d\d\D\d\d', '20\d\d\D\d\d\D\d\d'],
              ['20\d\d\D\d\d\D\d\d', undef, 'POID', '^(STR|TDL)$', '^(1047281|1046479)$']
          ]
        },
        # musicmatch streams
        { service => Client::Service::DSP_MUSICMATCH,
          version => 5,
          lines => [
            ['^\d+$', '\d+\D\d+\D\d+', '\d+\D\d+\D\d+', '\d+\D\d+\D\d+'],
            ['\d+\D\d+\D\d+','^\d+$','POID','STR','^1041779$'],
          ]
        },
        # listen stream
        { service => Client::Service::DSP_LISTEN,
          version => 1,
          lines => [
            ['^\d+$', undef, '^\d+$', undef, undef, '^\d+$', undef, '^\d*\.\d+$', '^\d+$', undef, 'stream', undef, undef, undef, '^Listen.com$']
          ]
        },
        # touchtunes stream
        { service => Client::Service::DSP_TOUCHTUNES,
          version => 3,
          lines => [
            ['^\d+$', undef, '^\d+$', undef, undef, undef, undef, '^\d*\.\d+$', '^\d+$', undef, 'PLAYS', undef, undef, undef, '^TOUCHTUNES$']
          ]
        },
        # launch stream
        { service => Client::Service::DSP_LAUNCH,
          version => 1,
          lines => [
            [undef],[undef],[undef],[undef],[undef],[undef],[undef],[undef],[undef],[undef],[undef],[undef],
            ['^\d+$', undef, undef, undef, undef, undef, undef, undef, '^\d+$', undef, 'STREAM', undef, undef, undef, '^YAHOO$']
          ]
        },
        # aol-musicnow stream
        { service => Client::Service::DSP_MUSICNOW,
          version => 6,
          lines => [
            ['^\d+$', undef, '^\d+$', undef, undef, undef, undef, undef, '^\d+$', undef, '(DL|STR(EAM|POD|PRT|FTR))', undef, undef, undef, 'MUSICNOW$' ],
          ]
        },
        # musicnow stream
        { service => Client::Service::DSP_MUSICNOW,
          version => 7,
          lines => [
              ['^\d+$', '20\d\d-\d\d-\d\d', '20\d\d-\d\d-\d\d', '20\d\d-\d\d-\d\d','^\d+$', undef, '^\d+$'],
              ['\d\d-\w+-\d\d', undef, 'POID', '^SDL$', '^1044186$']
          ]
        },
        # ruckus stream
        { service => Client::Service::DSP_RUCKUS,
          version => 2,
          lines => [
            ['^\d+$', undef, '^\d+$', undef, undef, undef, undef, undef, '^\d+$', undef, 'Plays', undef, undef, undef, '^Ruckus Network$' ],
          ]
        },
        # wireless - boost / nextel (could be any number of tabs, but only 1 with detail)
        { service => Client::Service::DSP_WARNERWIRELESS,
          sheet => 'any',
          version => 1,
          lines => [
            ['PRODUCT_INSTANCE_ID', 'Item Type', 'Display Title', 'Internal Title', 'Artist', 'UPC', 'ISRC', 'Company', 'ACCOUNT', 'PAYEE', 'OFFSET', 'CONTENT_PROVIDER_NAME', 'PRODUCT_NAME', 'CP_PRODUCT_ID', 'PRODUCT_DESCRIPTION', 'FIN_ACTIVITY_TYPE', 'TRANSACTION_COUNT', 'ACTIVITY_AMOUNT', 'REMIT_AMOUNT', 'Retail Price', 'Wholesale Price'],
          ]
        },
        # wireless - boost / nextel (similar to above but with isrc/upc swapped)
        { service => Client::Service::DSP_WARNERWIRELESS,
          sheet => 'any',
          version => 2,
          lines => [
            ['PRODUCT_INSTANCE_ID', 'Item Type', 'Display Title', 'Internal Title', 'Artist', 'ISRC', 'UPC', 'Company|Provider', 'ACCOUNT', 'PAYEE', 'OFFSET', 'CONTENT_PROVIDER_NAME', 'PRODUCT_NAME', 'CP_PRODUCT_ID', 'PRODUCT_DESCRIPTION', 'FIN_ACTIVITY_TYPE', 'TRANSACTION_COUNT', 'ACTIVITY_AMOUNT', 'REMIT_AMOUNT', 'Retail'],
          ]
        },
        # wireless - boost / nextel (similar to above but with display/internal titles swapped)
        { service => Client::Service::DSP_WARNERWIRELESS,
          sheet => 'any',
          version => 7,
          lines => [
            ['PRODUCT_INSTANCE_ID', 'Item Type', 'Internal Title', 'Display Title', 'Artist', 'ISRC', 'UPC', 'Company|Provider', 'ACCOUNT', 'PAYEE', 'OFFSET', 'CONTENT_PROVIDER_NAME', 'PRODUCT_NAME', 'CP_PRODUCT_ID', 'PRODUCT_DESCRIPTION', 'FIN_ACTIVITY_TYPE', 'TRANSACTION_COUNT', 'ACTIVITY_AMOUNT', 'REMIT_AMOUNT', 'Retail'],
          ]
        },
        # wireless - nextel
        { service => Client::Service::DSP_WARNERWIRELESS,
          sheet => 'any',
          version => 8,
          lines => [
            ['PARTNER_IDENTITY', 'ACCOUNT', 'PAYEE', 'OFFSET', 'CONTENT_PROVIDER_NAME', 'PRODUCT_NAME', 'CP_PRODUCT_ID', 'PRODUCT_INSTANCE_ID', 'PRODUCT_DESCRIPTION', 'PRICE', 'FIN_ACTIVITY_TYPE', 'RETAIL PRICE', 'TRANSACTION_COUNT', 'ACTIVITY_AMOUNT', 'REMIT_AMOUNT', 'DISPLAY TITLE', 'ARTIST', 'ISRC', 'UPC'],
          ]
        },
        # wireless - nextel
        { service => Client::Service::DSP_WARNERWIRELESS,
          sheet => 'any',
          version => 9,
          lines => [
            ['PRODUCT_INSTANCE_ID', 'Item Type', 'Internal Title', 'Display Title', 'Artist', 'ISRC', 'UPC', 'Provider', 'ACCOUNT', 'PAYEE', 'OFFSET', 'CONTENT_PROVIDER_NAME', 'PRODUCT_NAME', 'CP_PRODUCT_ID', 'PRODUCT_DESCRIPTION', 'FIN_ACTIVITY_TYPE', 'RETAIL PRICE', 'TRANSACTION_COUNT', 'ACTIVITY_AMOUNT', 'REMIT_AMOUNT', 'File Name'],
          ]
        },
        # wireless - nextel (same as v7 with 'File Name' added)
        { service => Client::Service::DSP_WARNERWIRELESS,
          sheet => 'any',
          version => 10,
          lines => [
            ['PRODUCT_INSTANCE_ID', 'Item Type', 'Internal Title', 'Display Title', 'Artist', 'ISRC', 'UPC', 'Company|Provider', 'ACCOUNT', 'PAYEE', 'OFFSET', 'CONTENT_PROVIDER_NAME', 'PRODUCT_NAME', 'CP_PRODUCT_ID', 'PRODUCT_DESCRIPTION', 'FIN_ACTIVITY_TYPE', 'File Name', 'TRANSACTION_COUNT', 'ACTIVITY_AMOUNT', 'REMIT_AMOUNT', 'Retail'],
          ],
        },
        # sprint multi-tab
        { service => Client::Service::DSP_SPRINT,
          version => 3,
          sheet => 'any',
          lines => [
            ['Partner Code', 'Partner Name', 'BP Start Date', 'Content Description', 'Content', 'ISRC Code', 'Revenue Share Code', 'Number of Events', 'Unit Price', 'Total', 'Revenue Share', 'Total Remitted'],
          ]
        },
        # sprint multi-tab (2nd version)
        { service => Client::Service::DSP_SPRINT,
          version => 5,
          sheet => 'any',
          lines => [
            ['Partner Code', 'Partner Name', 'BP Start Date', 'Content Description', 'Content', 'Revenue Share Code', 'ISRC Code', 'Number of Events', 'Unit Price', 'Total', 'Revenue Share', 'Total Remitted'],
          ]
        },
        # sprint multi-tab - demos (returns)
        { service => Client::Service::DSP_SPRINT,
          version => 4,
          sheet => 'any',
          lines => [
            ['Content Partner', 'Content Partner ID', 'Revenue Share Code', 'Content ID', 'Download Date', 'Month', 'Year', 'Content Name', 'Total Usage', 'Cost', 'Rate Method', 'Calculation Method', 'Revenue Share Per Event', 'DAILY_EVENT_CALCULATION'],
          ]
        },
        # sprint demos
        { service => Client::Service::DSP_SPRINT,
          version => 13,
          match_on_any_row => 1,
          lines => [
            ['MONTH', 'YEAR', 'CONTENT PARTNER NAME', 'CONTENT PARTNER ID', 'CONTENT ID', 'CONTENT NAME', 'REVENUE SHARE CODE', 'DOWNLOAD DATE', 'TOTAL USAGE', 'TOTAL COST', 'REVENUE SHARE', 'ADJUSTMENT', 'ISRC']
          ]
        },
        # sprint multi-tab - demos (returns - 2nd version)
        { service => Client::Service::DSP_SPRINT,
          version => 6,
          sheet => 'any',
          match_on_any_row => 1,
          lines => [
            ['MONTH', 'YEAR', 'CONTENT PARTNER NAME', 'CONTENT PARTNER ID', 'CONTENT ID', 'CONTENT NAME', 'REVENUE SHARE CODE', 'DOWNLOAD DATE', 'TOTAL USAGE', 'TOTAL COST', 'REVENUE SHARE CODE', 'ADJUSTMENT'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 7,
          lines => [
            ['Content Partner', 'Content Partner ID', 'Revenue Share Code', 'Content ID', 'Download Date', 'Month', 'Year', 'Content Name', 'Total Usage', undef, 'Cost', 'Rate Method', 'Calculation Method', 'Revenue Share Per Event', 'DAILY_EVENT_CALCULATION'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 8,
          lines => [
            ['MONTH', 'YEAR', 'CONTENT PARTNER NAME', 'CONTENT PARTNER ID', 'CONTENT NAME', 'CONTENT ID', 'REVENUE SHARE CODE', 'DOWNLOAD DATE', 'TOTAL USAGE', 'TOTAL COST', 'REVENUE SHARE VALUE', 'ADJUSTMENT AMOUNT'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 9,
          lines => [
            ['Content Name', 'Content ID', 'Of Purchases', 'ISRC Code', 'Unit Price', 'Total Charge', 'Revenue Share Code', 'Mininum', 'Min Total'],
          ]
        },
        # sprint full-track downloads - same as above with slightly different column names
        { service => Client::Service::DSP_SPRINT,
          version => 9,
          lines => [
            ['Content Name', 'Content ID', 'Number of purchase made of each piece of content', 'ISRC Code', 'Unit Price', 'Total Charge', 'Revenue Share Code', 'Revenue Share', 'Total Remitted'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 10,
          lines => [
            ['Content Name', 'Content ID', 'Number of purchase made of each piece of content', 'ISRC Code', 'Total Charge', 'Revenue Share Code', 'Unit Price', 'Total', 'Revenue Share', 'Total Remitted'],
          ]
        },
        # sprint full-track downloads - same as v9 above minus last 2 columns
        { service => Client::Service::DSP_SPRINT,
          version => 11,
          lines => [
            ['Content Name', 'Content ID', 'Number of purchase made of each piece of content', 'ISRC Code', 'Unit Price', 'Total Charge', 'Revenue Share Code'],
          ]
        },
        # sprint
        { service => Client::Service::DSP_SPRINT,
          version => 12,
          match_on_any_row => 1,
          lines => [
            ['PARTNER CODE', 'PARTNER NAME', 'BP START DATE', 'EVENT DATE', 'CONTENT', 'Artist/Title', 'ISRC', 'REVENUE SHARE CODE', 'NUMBER OF EVENTS', 'TOTAL', 'REVENUE SHARE', 'TOTAL REMITTED'],
          ]
        },
        # sprint
        { service => Client::Service::DSP_SPRINT,
          version => 14,
          match_on_any_row => 1,
          lines => [
            ['Partner Code', 'Partner Name', 'BP Start Date', 'Content Description', 'Revenue Share Code', 'Content', 'Event Date', 'ISRC Code', 'Number of Events', 'Unit Price', 'Total', 'Revenue Share', 'Total Remitted'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 15,
          lines => [
            ['MONTH', 'YEAR', 'CONTENT PARTNER NAME', 'CONTENT PARTNER ID', 'CONTENT ID', 'CONTENT NAME', undef, 'REVENUE SHARE CODE', 'DOWNLOAD DATE', 'TOTAL USAGE', 'TOTAL COST', 'Retail Price', 'REVENUE SHARE CODE', 'ADJUSTMENT', 'Pricing Grade', 'Distribution Medium'],
          ]
        },
        # sprint
        { service => Client::Service::DSP_SPRINT,
          version => 16,
          lines => [
            ['Content Partner', 'Content Partner ID', 'Revenue Share Code', 'Content ID', 'Download Date', 'Month', 'Year', 'Content Name', undef, 'Total Usage', undef, 'Cost', 'Retail Price', 'Rate Method', 'Calculation Method', 'Revenue Share Per Event', 'Remitted', 'Price Range Type', 'Distribution Medium'],
          ]
        },
        # sprint
        { service => Client::Service::DSP_SPRINT,
          version => 17,
          lines => [
            ['Content Partner', 'Content Partner ID', 'Revenue Share Code', 'Content ID', 'Download Date', 'Month', 'Year', 'Content Name', undef, 'Total Usage', 'Cost', 'Retail Price', 'Rate Method', 'Calculation Method', 'Revenue Share Per Event', undef, '(Price|Pricing)', 'Distribution Medium'],
          ]
        },
        # sprint
        { service => Client::Service::DSP_SPRINT,
          version => 18,
          lines => [
            ['Content Partner', 'Content Partner ID', 'Revenue Share Code', 'Content ID', 'Download Date', 'Month', 'Year', 'Content Name', undef, 'Total Usage', 'Cost', 'Retail price', 'Revenue Share Per Event', 'Remit Amount', 'Price Range Type', 'Distribution Medium'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 19,
          lines => [
            ['MONTH', 'YEAR', 'CONTENT PARTNER NAME', 'CONTENT PARTNER ID', 'CONTENT NAME', undef, 'CONTENT ID', 'REVENUE SHARE CODE', 'DOWNLOAD DATE', 'TOTAL USAGE', 'TOTAL COST', 'Retail price', 'REVENUE SHARE VALUE', 'Remit Amount', 'Price Range Type', 'Distribution Medium'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 20,
          lines => [
            ['Content Name', 'Content ID', 'Units', 'ISRC', 'Unit Price', 'Retail Price', 'Total', 'Revenue Share Code', ' Share', 'Remitted', 'Price Range Type', 'Distribution Medium'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 21,
          lines => [
            ['Content Name', undef, 'Content ID', 'Number of purchase made of each piece of content', 'ISRC Code', 'Unit Price', 'Retail Price', 'Total Charge', 'Revenue Share Code', 'Revenue Share', 'Total should be Remitted', 'Price Range Type', 'Distribution Medium'],
          ]
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
            version => 21,
            lines => [
                ['CONTENT NAME','EVENT DATE','CONTENT ID','NUMBER OF SALES','FIXED ISRC CODE','PRICE','RETAIL PRICE','TOTAL CHARGE','REVENUE SHARE CODE','REVENUE SHARE','TOTAL REMITTED','PRICE RANGE TYPE','DISTRIBUTION MEDIUM'],
            ],
        },
        # sprint full-track downloads
        { service => Client::Service::DSP_SPRINT,
          version => 22,
          lines => [
            ([undef]) x 3,
            ['Month','Year','Content ID','Content Partner','Content Partner ID','Content Name','Revenue Share Code','Download Date','Total Usage','Cost','Revenue Share','Adjustment','ISRC\/GRID',undef,undef],
          ]
        },
        # more sprint
        { service => Client::Service::DSP_SPRINT,
          version => 23,
          lines => [
            ['MONTH', 'YEAR', 'CONTENT PARTNER NAME', 'CONTENT PARTNER ID', 'CONTENT ID', 'CONTENT NAME', 'REVENUE SHARE CODE', 'Event Date', 'Units', 'TOTAL COST', 'REVENUE SHARE CODE', 'Total should be Remitted', 'ISRC', 'Retail Price', 'Price Range Type', 'Distribution Medium'],
          ]
        },
        # more sprint
        { service => Client::Service::DSP_SPRINT,
          version => 24,
          lines => [
            ([undef]) x 4,
            ['MONTH', 'YEAR', 'CONTENT ID', 'CONTENT PARTNER ID', 'CONTENT PARTNER NAME', 'CONTENT NAME', 'REVENUE SHARE CODE', 'EVENT DATE', 'TOTAL USAGE', 'Retail Price', 'TOTAL COST', 'REVENUE SHARE', 'TOTAL REMITTED', 'ISRC\/GRID'],
          ]
        },
        # ampd bundles, wmg specific
        { service => Client::Service::DSP_AMPD,
          sheet => 1,
          version => 5,
          lines => [
            ([undef]) x 8,
            ['Artist', 'Title', 'Asset', 'ISRC', 'UnitPrice', 'Unit Ratio', 'WMGPrice', 'Retail', 'WMGShare', 'Units'],
          ]
        },
        # ampd bundles 2, wmg specific
        { service => Client::Service::DSP_AMPD,
          sheet => 1,
          version => 6,
          lines => [
            ([undef]) x 7,
            ['Artist', 'Title', 'Asset', 'ISRC', 'UPC', 'UnitPrice', 'Unit Ratio', 'WMGPrice', 'Retail', 'WMGShare', 'Units'],
          ]
        },
        # ampd video, wmg specific
        { service => Client::Service::DSP_AMPD,
          sheet => 1,
          version => 7,
          lines => [
            ([undef]) x 8,
            ['ContentOwner', 'ContentType', 'PurchaseType', 'DeliveryType', 'ContentSku', 'Title', 'Price', 'WMGPrice', 'Units', 'AmountDue'],
          ]
        },
        # 9 squared - bounty
        { service => Client::Service::DSP_NINESQUARED,
          version => 99,
          #sheet => 0,
          lines => [
            ([undef]) x 7,
            ['Subscriber Bounties'],
            ['CampaignId', 'Name'],
          ]
        },
        # 9 squared - bounty
        { service => Client::Service::DSP_NINESQUARED,
          version => 99,
          lines => [
            ([undef]) x 7,
            [undef, 'Subscriber Bounties'],
            [undef, 'CampaignId', 'Name'],
          ]
        },
        # music choice wireless
        { service => Client::Service::DSP_MUSICCHOICE,
          version => 11,
          lines => [
            ['Carrier', 'Usage Type', 'Order', 'Artist', 'Title', 'Label Name'],
          ]
        },
        # music choice                                                                
        { service => Client::Service::DSP_MUSICCHOICE,                                
          version => 12,                                                            
          lines => [                                                                
            ['Source','Title','Artist','Orders','LABEL_NAME'],                    
          ],                                                                       
        },
        # music choice wireless (historical)
        { service => Client::Service::DSP_MUSICCHOICE,
          version => 99,
          lines => [
            [undef],
            ['Carrier', 'Month', 'Usage Type', 'Label Name', 'Artist', 'Title', 'Total'],
          ]
        },
        # verizon
        { service => Client::Service::DSP_VERIZON,
          version => 6,
          lines => [
            ([undef]) x 4,
            ['Label', 'Title', 'Artist', 'ISRC', 'Retail', 'Bundle', 'Price Range Type', 'Royalty'],
          ]
        },
        # verizon
        { service => Client::Service::DSP_VERIZON,
          version => 7,
          lines => [
            ([undef]) x 3,
            [undef, 'LBL', 'TITLE', 'ARTIST', 'ISRC', 'Retail', 'A La Carte Units', 'Price Range Type', 'Royalty'],
          ]
        },
        # verizon
        { service => Client::Service::DSP_VERIZON,
          version => 8,
          sheet => 'any',
          lines => [
            ([undef]) x 4,
            ['Label', 'Title', 'Artist', 'ISRC', undef, 'Retail', 'Price Range Type', 'Royalty'],
          ]
        },
        # integra
        { service => Client::Service::DSP_INTEGRA,
          version => 1,
          sheet => 'any',
          lines => [
            ['Distributor', 'Label', 'Media', 'AlbumTitle', 'UPC|LookUP', 'Burns', 'Defect', 'Net Units', 'Bundle Code', 'Bundle Price', undef, 'Selling Price', undef, 'Best of price', 'Royalty', 'Price Range Type', 'Distribution Medium', 'Defect Credit', 'Total Qty', 'Cost', 'Price'],
          ]
        },
        # integra
        { service => Client::Service::DSP_INTEGRA,
          version => 2,
          sheet => 'any',
          lines => [
            ['Distributor', 'Label', 'Media', 'AlbumTitle', 'LookUP', 'Burns', 'Defect', 'Net Units', 'Bundle Code', 'Bundle Price', undef, 'Selling Price', undef, 'Best of price', 'Royalty', 'Price Range Type', 'Distribution Medium', 'Total Cost', 'Defect Credit', 'Price'],
          ]
        },
        # integra
        { service => Client::Service::DSP_INTEGRA,
          version => 3,
          sheet => 'any',
          lines => [
            ['Distributor', undef, 'Media', 'Store_Name', 'AlbumTitle', 'LookUP', 'Burns', 'Defects', 'Net Units', 'Bundle Code', 'Bundle Price', undef, 'Selling Price', undef, 'Best of price', 'Royalty', undef, 'Distribution Medium', undef, 'Acct #'],
          ]
        },
        # integra
        { service => Client::Service::DSP_INTEGRA,
          version => 4,
          sheet => 'any',
          lines => [
            ['Distributor', 'Label', 'Media', 'AlbumTitle', 'BurnPrice', 'LookUP', 'Burns', 'Defects', 'Net Units', 'Bundle Code', 'Bundle Price', undef, 'Selling Price', undef, 'Best of price', 'Royalty', 'Price Range Type', 'Distribution Medium', 'Defect Credit', 'Total Due'],
          ]
        },
        # integra
        { service => Client::Service::DSP_INTEGRA,
          version => 5,
          sheet => 0,
          lines => [
            ['Distributor',undef,'Media Type','AlbumTitle','LookUP','Burns','Defects','Net Units','Bundle Code','Bundle Price',undef,'Selling Price',undef,'Best of price','Royalty','Price Range Type','Distribution Medium','Defect Credit','Total Due',undef,'BurnPrice'],
          ]
        },
        { service => Client::Service::DSP_INTEGRA,
          version => 5,
          sheet => 0,
          lines => [
            ['Distributor',undef,'Media Type','AlbumTitle','LookUP','Burns','Defects','Net Units','Bundle Code','Bundle Price',undef,'Selling Price',undef,'Best of price','Royalty',undef,'Distribution Medium',undef,undef,undef],
          ]
        },
        # WMG -> Batanga V 1
        { service => Client::Service::DSP_BATANGA,
            version => 1,
            sheet => 0,
            lines => [
                [undef,undef,undef,undef,undef,undef,undef,undef,undef,undef,'STREAM',undef,undef,undef,'BATANGA'],
            ],
        },
         # WMG -> Mobitv
        { service => Client::Service::DSP_MOBITV,
            version => 1,
            sheet => 0,
            lines => [
                ['Artist \(T\)','Title \(T\)','ISRC','Usage Type','Plays','Month'],
            ],
        },
         # WMG -> Mobitv
        { service => Client::Service::DSP_MOBITV,
            version => 1,
            sheet => 0,
            lines => [
                ['Artist','Title','ISRC','Usage Type', 'Plays','Month'],
            ],
        },

    ];

    # then append the default rules
    my $defaultRules = $self->SUPER::_file_match_rules();

    push(@$rules, @$defaultRules);

    return $rules;
}

1;
