Making WordPress.org


Ignore:
Timestamp:
03/08/2016 05:22:20 PM (9 years ago)
Author:
kovshenin
Message:

WordCamp Budgets: Move wire exports to vendor/reimbursement files. (part 2)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-payments/includes/payment-request.php

    r2711 r2714  
    13421342        return ob_get_clean();
    13431343    }
     1344
     1345    /**
     1346     * Wires via JP Morgan
     1347     *
     1348     * @param array $args
     1349     *
     1350     * @return string
     1351     */
     1352    public static function _generate_payment_report_jpm_wires( $args ) {
     1353        $args = wp_parse_args( $args, array(
     1354            'data' => array(),
     1355            'status' => '',
     1356            'post_type' => '',
     1357        ) );
     1358
     1359        ob_start();
     1360        $report = fopen( 'php://output', 'w' );
     1361
     1362        // JPM Header
     1363        fputcsv( $report, array( 'HEADER', gmdate( 'YmdHis' ), '1' ) );
     1364
     1365        $total = 0;
     1366        $count = 0;
     1367
     1368        foreach ( $args['data'] as $entry ) {
     1369            switch_to_blog( $entry->blog_id );
     1370            $post = get_post( $entry->post_id );
     1371
     1372            if ( $args['status'] && $post->post_status != $args['status'] ) {
     1373                restore_current_blog();
     1374                continue;
     1375            } elseif ( $post->post_type != self::POST_TYPE ) {
     1376                restore_current_blog();
     1377                continue;
     1378            } elseif ( get_post_meta( $post->ID, '_camppayments_payment_method', true ) != 'Wire' ) {
     1379                restore_current_blog();
     1380                continue;
     1381            }
     1382
     1383            $amount = round( floatval( get_post_meta( $post->ID, '_camppayments_payment_amount', true ) ), 2);
     1384            $total += $amount;
     1385            $count += 1;
     1386
     1387            // If account starts with two letters, it's most likely an IBAN
     1388            $account = get_post_meta( $post->ID, '_camppayments_beneficiary_account_number', true );
     1389            $account = WCP_Encryption::maybe_decrypt( $account );
     1390            $account = preg_replace( '#\s#','', $account );
     1391            $account_type = preg_match( '#^[a-z]{2}#i', $account ) ? 'IBAN' : 'ACCT';
     1392
     1393            $row = array(
     1394                '1-input-type' => 'P',
     1395                '2-payment-method' => 'WIRES',
     1396                '3-debit-bank-id' => apply_filters( 'wcb_payment_req_bank_id', '' ), // external file
     1397                '4-account-number' => apply_filters( 'wcb_payment_req_bank_number', '' ), // external file
     1398                '5-bank-to-bank' => 'N',
     1399                '6-txn-currency' => get_post_meta( $post->ID, '_camppayments_currency', true ),
     1400                '7-txn-amount' => number_format( $amount, 2, '.', '' ),
     1401                '8-equiv-amount' => '',
     1402                '9-clearing' => '',
     1403                '10-ben-residence' => '',
     1404                '11-rate-type' => '',
     1405                '12-blank' => '',
     1406                '13-value-date' => '',
     1407
     1408                '14-id-type' => $account_type,
     1409                '15-id-value' => $account,
     1410                '16-ben-name' => substr( WCP_Encryption::maybe_decrypt(
     1411                    get_post_meta( $post->ID, '_camppayments_beneficiary_name', true ) ), 0, 35 ),
     1412                '17-address-1' => substr( WCP_Encryption::maybe_decrypt(
     1413                    get_post_meta( $post->ID, '_camppayments_beneficiary_street_address', true ) ), 0, 35 ),
     1414                '18-address-2' => '',
     1415                '19-city-state-zip' => substr( sprintf( '%s %s %s',
     1416                        WCP_Encryption::maybe_decrypt( get_post_meta( $post->ID, '_camppayments_beneficiary_city', true ) ),
     1417                        WCP_Encryption::maybe_decrypt( get_post_meta( $post->ID, '_camppayments_beneficiary_state', true ) ),
     1418                        WCP_Encryption::maybe_decrypt( get_post_meta( $post->ID, '_camppayments_beneficiary_zip_code', true ) )
     1419                    ), 0, 32 ),
     1420                '20-blank' => '',
     1421                '21-country' => WCP_Encryption::maybe_decrypt(
     1422                    get_post_meta( $post->ID, '_camppayments_beneficiary_country_iso3166', true ) ),
     1423                '22-blank' => '',
     1424                '23-blank' => '',
     1425
     1426                '24-id-type' => 'SWIFT',
     1427                '25-id-value' => get_post_meta( $post->ID, '_camppayments_bank_bic', true ),
     1428                '26-ben-bank-name' => substr( get_post_meta( $post->ID, '_camppayments_bank_name', true ), 0, 35 ),
     1429                '27-ben-bank-address-1' => substr( get_post_meta( $post->ID, '_camppayments_bank_street_address', true ), 0, 35 ),
     1430                '28-ben-bank-address-2' => '',
     1431                '29-ben-bank-address-3' => substr( sprintf( '%s %s %s',
     1432                        get_post_meta( $post->ID, '_camppayments_bank_city', true ),
     1433                        get_post_meta( $post->ID, '_camppayments_bank_state', true ),
     1434                        get_post_meta( $post->ID, '_camppayments_bank_zip_code', true )
     1435                     ), 0, 35 ),
     1436                '30-ben-bank-country' => get_post_meta( $post->ID, '_camppayments_bank_country_iso3166', true ),
     1437                '31-supl-id-type' => '',
     1438                '32-supl-id-value' => '',
     1439
     1440                '33-blank' => '',
     1441                '34-blank' => '',
     1442                '35-blank' => '',
     1443                '36-blank' => '',
     1444                '37-blank' => '',
     1445                '38-blank' => '',
     1446                '39-blank' => '',
     1447
     1448                // Filled out later if not empty.
     1449                '40-id-type' => '',
     1450                '41-id-value' => '',
     1451                '42-interm-bank-name' => '',
     1452                '43-interm-bank-address-1' => '',
     1453                '44-interm-bank-address-2' => '',
     1454                '45-interm-bank-address-3' => '',
     1455                '46-interm-bank-country' => '',
     1456                '47-supl-id-type' => '',
     1457                '48-supl-id-value' => '',
     1458
     1459                '49-id-type' => '',
     1460                '50-id-value' => '',
     1461                '51-party-name' => '',
     1462                '52-party-address-1' => '',
     1463                '53-party-address-2' => '',
     1464                '54-party-address-3' => '',
     1465                '55-party-country' => '',
     1466
     1467                '56-blank' => '',
     1468                '57-blank' => '',
     1469                '58-blank' => '',
     1470                '59-blank' => '',
     1471                '60-blank' => '',
     1472                '61-blank' => '',
     1473                '62-blank' => '',
     1474                '63-blank' => '',
     1475                '64-blank' => '',
     1476                '65-blank' => '',
     1477                '66-blank' => '',
     1478                '67-blank' => '',
     1479                '68-blank' => '',
     1480                '69-blank' => '',
     1481                '70-blank' => '',
     1482                '71-blank' => '',
     1483                '72-blank' => '',
     1484                '73-blank' => '',
     1485
     1486                '74-ref-text' => substr( get_post_meta( $post->ID, '_camppayments_invoice_number', true ), 0, 16 ),
     1487                '75-internal-ref' => '',
     1488                '76-on-behalf-of' => '',
     1489
     1490                '77-detial-1' => '',
     1491                '78-detial-2' => '',
     1492                '79-detial-3' => '',
     1493                '80-detail-4' => '',
     1494
     1495                '81-blank' => '',
     1496                '82-blank' => '',
     1497                '83-blank' => '',
     1498                '84-blank' => '',
     1499                '85-blank' => '',
     1500                '86-blank' => '',
     1501                '87-blank' => '',
     1502                '88-blank' => '',
     1503
     1504                '89-reporting-code' => '',
     1505                '90-country' => '',
     1506                '91-inst-1' => '',
     1507                '92-inst-2' => '',
     1508                '93-inst-3' => '',
     1509                '94-inst-code-1' => '',
     1510                '95-inst-text-1' => '',
     1511                '96-inst-code-2' => '',
     1512                '97-inst-text-2' => '',
     1513                '98-inst-code-3' => '',
     1514                '99-inst-text-3' => '',
     1515
     1516                '100-stor-code-1' => '',
     1517                '101-stor-line-2' => '', // Hmm?
     1518                '102-stor-code-2' => '',
     1519                '103-stor-line-2' => '',
     1520                '104-stor-code-3' => '',
     1521                '105-stor-line-3' => '',
     1522                '106-stor-code-4' => '',
     1523                '107-stor-line-4' => '',
     1524                '108-stor-code-5' => '',
     1525                '109-stor-line-5' => '',
     1526                '110-stor-code-6' => '',
     1527                '111-stor-line-6' => '',
     1528
     1529                '112-priority' => '',
     1530                '113-blank' => '',
     1531                '114-charges' => '',
     1532                '115-blank' => '',
     1533                '116-details' => '',
     1534                '117-note' => substr( sprintf( 'wcb-%d-%d', $entry->blog_id, $entry->post_id ), 0, 70 ),
     1535            );
     1536
     1537            // If an intermediary bank is given.
     1538            $interm_swift = get_post_meta( $post->ID, '_camppayments_interm_bank_swift', true );
     1539            if ( ! empty( $iterm_swift ) ) {
     1540                $row['40-id-type'] = 'SWIFT';
     1541                $row['41-id-value'] = $interm_swift;
     1542
     1543                $row['42-interm-bank-name'] = substr( get_post_meta( $post->ID, '_camppayments_interm_bank_name', true ), 0, 35 );
     1544                $row['43-interm-bank-address-1'] = substr( get_post_meta( $post->ID, '_camppayments_interm_bank_street_address', true ), 0, 35 );
     1545
     1546                $row['44-interm-bank-address-2'] = '';
     1547                $row['45-interm-bank-address-3'] = substr( sprintf( '%s %s %s',
     1548                    get_post_meta( $post->ID, '_camppayments_interm_bank_city', true ),
     1549                    get_post_meta( $post->ID, '_camppayments_interm_bank_state', true ),
     1550                    get_post_meta( $post->ID, '_camppayments_interm_bank_zip_code', true )
     1551                ), 0, 32 );
     1552
     1553                $row['46-interm-bank-country'] = get_post_meta( $post->ID, '_camppayments_interm_bank_country_iso3166', true );
     1554
     1555                $row['47-supl-id-type'] = 'ACCT';
     1556                $row['48-supl-id-value'] = get_post_meta( $post->ID, '_camppayments_interm_bank_account', true );
     1557            }
     1558
     1559            // Use for debugging.
     1560            // print_r( $row );
     1561
     1562            fputcsv( $report, array_values( $row ) );
     1563            restore_current_blog();
     1564        }
     1565
     1566        // JPM Trailer
     1567        fputcsv( $report, array( 'TRAILER', $count, $total ) );
     1568
     1569        fclose( $report );
     1570        $results = ob_get_clean();
     1571
     1572        // JPM chokes on accents and non-latin characters.
     1573        $results = remove_accents( $results );
     1574        return $results;
     1575    }
    13441576}
Note: See TracChangeset for help on using the changeset viewer.