2017 © Pedro Peláez
 

library parcelforce

Parcelforce expressTransfer API for Laravel to generate pre-advice electronic file that required by solution.

image

alexpechkarev/parcelforce

Parcelforce expressTransfer API for Laravel to generate pre-advice electronic file that required by solution.

  • Tuesday, August 12, 2014
  • by alexpechkarev
  • Repository
  • 1 Watchers
  • 1 Stars
  • 15 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Parcelforce expressTransfer API for Laravel 4

Parcelforce exrpessTransferAPI for Laravel to generate pre-advice electronic file that required by solution., (*1)

Build Status, (*2)

Features

  • Generating electronic file on the server
  • Submitting electronic file to Parcelforce
  • Single or multiply consignment's per file
  • UK Domestic collection request (Label and receipt provided by PFW driver)
  • UK Domestic services dispatches only (Label printed by customer)
  • Can be used as Laravel package or PHP standalone class

Requirements

Must be Parcelforce customer
PHP >= 5.3
MySQL
Laravel >= 4.1 if used as Laravel package, (*3)

Installation

composer require alexpechkarev/parcelforce  dev-master

Configuration

Once installed, register Laravel service provider, in app/config/app.php:, (*4)

'providers' => array(
    ...
    'Parcelforce\ExpressTransfer\ParcelforceServiceProvider',
)

Publish configuration file:, (*5)

php artisan config:publish parcelforce/expresstransfer --path vendor/alexpechkarev/parcelforce/src/config/

All generated file will be stored in app/config/packages/parcelforce/expresstransfer/files folder by default. Ensure this folder writable by the web server:, (*6)

chmod o+w app/config/packages/parcelforce/expresstransfer/files

Name and location of this folder can be specified in the configuration file by editing filePath value, if changed ensure it's writable by we server., (*7)

    /**
     * Location consignment files
     */        
    'filePath'                        => __DIR__.'/files/',

In the configuration file app/config/packages/parcelforce/expresstransfer/config.php please ensure that following parameters are set. For more details on configuration options and required values please contact Parcelforce. By default these parameters preset with dummy values., (*8)

 'header_customer_account' 
 'header_generic_contract'
 'senderName'
 'senderAddress1'
 'senderPostTown'
 'senderPostcode'
 'dr_consignment_number' 
 'fileName' 
 'ftpUser' 
 'ftpPass'
 'ftpUploadPath'
 'ftpLocationPath'

Laravel Usage

Simply pass you data as array to Parcelforce::process() method. Electronic file will be generated for given data, stored at filePath location and submitted to Parcelforce., (*9)

        $senderData = array(
            array(
                "deliveryDetails"=>array(
                    'receiverName'      =>"MR CUSTOMER",
                    'receiverAddress1'  =>'100 CUSTOMER SOLUTIONS STREET',
                    'receiverPostTown'  =>'MILTON KEYNES',
                    'receiverPostcode'  =>'MK9 9AB'
                    )
            )           
        );

        Parcelforce::process($senderData);

        // generate file locally without submitting to Parcelforce
        Parcelforce::process($senderData, FALSE);

Multiply consignment data can be submitted in single request., (*10)

        $senderData = array(
            array(
                "deliveryDetails"=>array(
                    'receiverName'      =>"MR CUSTOMER",
                    'receiverAddress1'  =>'100 CUSTOMER SOLUTIONS STREET',
                    'receiverPostTown'  =>'MILTON KEYNES',
                    'receiverPostcode'  =>'MK9 9AB'
                    )
            ),
            array(
                "deliveryDetails"=>array(
                    'receiverName'      =>"MR CUSTOMER",
                    'receiverAddress1'  =>'202 CUSTOMER SOLUTIONS STREET',
                    'receiverPostTown'  =>'MILTON KEYNES',
                    'receiverPostcode'  =>'MK9 9AB'
                    )
            )
        );

        Parcelforce::process($senderData);

By default collection date is set for tomorrow's date and can be amended in the configuration file, see collectionDate. This value can also be specified at runtime using Parcelforce::setDate() method., (*11)

    Parcelforce::setDate("next Monday");
    Parcelforce::process($senderData);

Dates handled by:, (*12)

Following formats accepted by setDate() method:, (*13)

Relative Formats, (*14)

  • tomorrow
  • next wednesday
  • this thursday
  • ....

Date Formats, (*15)

  • 2014-08-11
  • 08/11/2014
  • 20140811
  • ....

PHP standalone class Usage

Location: 'Parcelforce\ExpressTransfer\PHP\', (*16)

Standalone class have same methods as Laravel package and accepts consignment data in the same way. Before use please ensure that required parameters are set in configuration file 'Parcelforce/ExpressTransfer/PHP/config.php' and Parcelforce/ExpressTransfer/PHP/files folder is writable by web server., (*17)

       $pf = new \Parcelforce\ExpressTransfer\PHP\Parcelforce();
       $pf->process($senderData));

       // generate file locally without submitting to Parcelforce
       $pf->process($senderData));

setDate() method is also available in standalone version., (*18)

    ...
    $pf->setDate("next Monday");
    $pf->process($senderData);

Configuration testing

For testing and configuration purposes file can be generated without being submitted to Parcelforce. To generate file locally simply pass FALSE as second parameter to process() method., (*19)

    // In Laravel package
    Parcelforce::process($senderData, FALSE);

    // In PHP standalone class
    $pf->process($senderData, FALSE);

Once testing and configuration completed file and consignment numbers have to be reset to initial values. To initiate process call reset() method. Please note: reset() will reload database tables and all the data will be lost. See config.php for table details., (*20)

    // In Laravel package
    Parcelforce::reset();

    // In PHP standalone class
    $pf->reset();

PHPUnit Testing

PHPUnit testing require Mockery flexible PHP mock object framework. Run following command to install Mockery:, (*21)

composer require mockery/mockery:dev-master@dev

In Laravel package test file needs copying from package folder into app/tests/ folder, use following to do so:, (*22)

cp vendor/alexpechkarev/parcelforce/tests/ParcelforceLaravelTest.txt app/tests/ParcelforceTest.php

And then run test:, (*23)

phpunit app/tests/ParcelforceTest.php

To test PHP standalone file ensure database credentials are set in the config file., (*24)

    phpunit vendor/alexpechkarev/parcelforce/tests/ParcelforcePHPTest.php

Main Methods

     /** 
     * @param array $data - array of data
     * @return string File content
     */
     public function process($data, $upload = TRUE)


    /**
     * Drop database tables
     */
    public function reset()



    /**
     * Get file content
     * @return string
     */
     public function getFileContent()


    /**
     * Get current instance config file
     * @return array
     */
    public function getConfig()

Support

Please open an issue on GitHub, (*25)

License

Parcelforce expressTransfer API for Laravel 4 is released under the MIT License. See the bundled LICENSE file for details., (*26)

The Versions

12/08 2014

dev-master

9999999-dev https://github.com/alexpechkarev/parcelforce

Parcelforce expressTransfer API for Laravel to generate pre-advice electronic file that required by solution.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Alexander Pechkarev

parcelforce expresstransfer parcelforce api parcelforce expresstransfer api for laravel