NAME
    Parse::PayPal::TxFinderReport - Parse PayPal transaction detail report
    into data structure

VERSION
    This document describes version 0.003 of Parse::PayPal::TxFinderReport
    (from Perl distribution Parse-PayPal-TxFinderReport), released on
    2018-11-06.

SYNOPSIS
     use Parse::PayPal::TxFinderReport qw(parse_paypal_txfinder_report);

     my $res = parse_paypal_txfinder_report(file => );

    Sample result when there is a parse error:

     [400, "Doesn't find signature in first row"]

    Sample result when parse is successful:

     [200, "OK", {
         format => "txfinder",
         transactions           => [
             {
                 "3PL Reference ID"                   => "",
                 "Auction Buyer ID"                   => "",
                 "Auction Closing Date"               => "",
                 "Auction Site"                       => "",
                 "Authorization Review Status"        => 1,
                 ...
                 "Transaction Completion Date"        => 1467273397,
                 ...
             },
             ...
         ],
     }]

DESCRIPTION
    PayPal provides various kinds reports which you can retrieve from their
    website under Reports menu. This module provides routine to parse PayPal
    transaction finder report into a Perl data structure. The CSV format is
    supported. No official documentation of the format is available, but
    it's mostly regular CSV.

    This module can recognize two variants of the report:

  Search Transaction Results (STR)
    Some characteristics of this variant:

    *   Date is MM/DD/YYYY only without hour/minute/second information

        Date will be converted to Unix epoch in the returned data structure.

    *   No transaction status field

  Transaction Finder (TF)
    Some characteristics of this variant:

    *   Dates are locale-formatted (e.g. DD/MM/YYYY)

        Date will be converted to Unix epoch in the returned data structure.
        Make sure you set the correct "date_format" parameter.

    *   Numbers are locale-formatted (e.g. 1,23 instead of 1.23 when using
        comma as decimal character)

        Formatting will be removed. Make sure you set the correct
        "thousands_sep" and "decimal_point" parameters.

FUNCTIONS
  parse_paypal_txfinder_report
    Usage:

     parse_paypal_txfinder_report(%args) -> [status, msg, payload, meta]

    Parse PayPal transaction detail report into data structure.

    The result will be a hashref. The main key is "transactions" which will
    be an arrayref of hashrefs.

    Dates will be converted into Unix timestamps.

    This function is not exported by default, but exportable.

    Arguments ('*' denotes required arguments):

    *   date_format => *str* (default: "MM/DD/YYYY")

    *   decimal_point => *str* (default: ".")

    *   file => *filename*

        File can be in tab-separated or comma-separated (CSV) format.

    *   format => *str*

        If unspecified, will be deduced from the filename's extension
        (/csv/i for CSV, or /txt|tsv|tab/i for tab-separated).

    *   string => *str*

        Instead of "files", you can alternatively provide the file contents
        in "strings".

    *   thousands_sep => *str* (default: ",")

    Returns an enveloped result (an array).

    First element (status) is an integer containing HTTP status code (200
    means OK, 4xx caller error, 5xx function error). Second element (msg) is
    a string containing error message, or 'OK' if status is 200. Third
    element (payload) is optional, the actual result. Fourth element (meta)
    is called result metadata and is optional, a hash that contains extra
    information.

    Return value: (any)

BUGS
    Please report all bug reports or feature requests to
    <mailto:stevenharyanto@gmail.com>.

SEE ALSO
    <https://www.paypal.com>

    Parse::PayPal::TxDetailReport

AUTHOR
    perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2018, 2017, 2016 by perlancar@cpan.org.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

