[DEPRECATED] Twinfield
This library is moved to https://github.com/php-twinfield/twinfield., (*1)
A PHP library for Twinfield Integration. Developed by Remco Tolsma and Leon Rowland from Pronamic.
Use the Twinfield SOAP Service to have your PHP application communicate directly with your Twinfield account., (*2)
Autoloading
The classes follow the PSR2 naming convention., (*3)
Usage
Components will have Factories to simplify the request and send process of Twinfield.
Each factory will require just the \Pronamic\Twinfield\Secure\Config() class with
the filled in details., (*4)
An example of the usage of the Configuration class., (*5)
$config = new \Pronamic\Twinfield\Secure\Config();
$config->setCredentials('Username', 'Password', 'Organization', 'Office');
$config = new \Pronamic\Twinfield\Secure\Config();
$config->setOAuthParameters('clientID', 'clientSecret', 'returnURL', 'Organization', 'Office', true);
//the true parameter at the end tells the system to automatically redirect to twinfield to login
Now, to the current modules, (*6)
In the following example, we will use the Customer component as showcase. Although
this will be the method for all components ( including Invoice currently ), (*7)
Typically it is as follows, if using the Factories, (*8)
- Add/Edit: Make Object, Make Factory, Give object in Submit method of related factory.
- Retrieve: Make Factory, Supply all required params to respective listAll() and get() methods
Add/Edit
Make your Customer object, (*9)
$customer = new \Pronamic\Twinfield\Customer\Customer();
$customer
->setID(10666)
->setName('Leon Rowland')
->setType('DEB')
->setWebsite('http://leon.rowland.nl')
->setEBilling(true)
->setEBillMail('leon@rowland.nl')
->setVatCode('VL')
->setDueDays(10)
->setCocNumber('12341234');
Customers can have addresses associated with them, (*10)
$customerAddress = new \Pronamic\Twinfield\Customer\CustomerAddress();
$customerAddress
->setDefault(false)
->setType('invoice')
->setField1('Testing field 1')
->setField2('Testing field 2')
->setField3('Testing field 3')
->setPostcode('1212 AB')
->setCity('TestCity')
->setCountry('NL')
->setTelephone('010-12345')
->setFax('010-1234')
->setEmail('test@email.com');
Assign that address to the customer, (*11)
$customer->addAddress($customerAddress);
Now lets submit it!, (*12)
use \Pronamic\Twinfield\Customer as TwinfieldCustomer;
// Config object prepared and passed to the CustomerFactory
$customerFactory = new TwinfieldCustomer\CustomerFactory($config);
//$customer = new TwinfieldCustomer\Customer();
// Attempt to send the Customer document
if($customerFactory->send($customer)){
// Use the Mapper to turn the response back into a TwinfieldCustomer\Customer
$successfulCustomer = TwinfieldCustomer\Mapper\CustomerMapper::map($customerFactory->getResponse());
}
Retrieve/Request
You can get all customers or get a single one currently., (*13)
use \Pronamic\Twinfield\Customer as TwinfieldCustomer;
// Config object prepared and passed into the CustomerFactory
$customerFactory = new TwinfieldCustomer\CustomerFactory($config);
$customers = $customerFactory->listAll();
At the moment, listAll will return an array of just name and short name., (*14)
$customer = $customerFactory->get('customerCode', 'office[optional]');
The response from get() will be a \Pronamic\Twinfield\Customer\Customer object., (*15)
Notes
Advanced documentation coming soon. Detailing usage without the Factory class. Giving you more control
with the response and data as well as more in-depth examples and usage recommendations., (*16)
Contribute
You can contribute to the development of this project. Try and keep to the way of doing things as
the other 2 components have implemented., (*17)
A large requirement is to maintain backwards compatibility so if you have any plans for large
restructure or alteration please bring up in an issue first., (*18)
Build
- npm install
- composer install
Links
Authors
License
Copyright 2009-2013 Pronamic., (*19)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version., (*20)
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details., (*21)
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA, (*22)