Open Source Billing
This commit is contained in:
59
modules/export/classes/Controller/Admin/Export.php
Normal file
59
modules/export/classes/Controller/Admin/Export.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides OSB exporting capabilities.
|
||||
*
|
||||
* @package Export
|
||||
* @category Controllers/Admin
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Controller_Admin_Export extends Controller_TemplateDefault_Admin {
|
||||
protected $control_title = 'Export';
|
||||
protected $secure_actions = array(
|
||||
'add'=>TRUE,
|
||||
'edit'=>TRUE,
|
||||
);
|
||||
|
||||
/**
|
||||
* Add Export Maping items
|
||||
*/
|
||||
public function action_add() {
|
||||
$eo = ORM::factory('Export');
|
||||
$output = '';
|
||||
|
||||
if ($_POST AND $eo->values($_POST)->check()) {
|
||||
$eo->module_id = ORM::factory('Module',array('name'=>'product'))->id; // @todo This probably should be in the form.
|
||||
$eo->plugin_name = 'quicken'; // @todo This should be in the form.
|
||||
// Entry updated
|
||||
if (! $eo->save())
|
||||
throw new Kohana_Exception('Unable to save data :post',array(':post'=>serialize($_POST)));
|
||||
|
||||
SystemMessage::add(array(
|
||||
'title'=>_('Record add'),
|
||||
'type'=>'info',
|
||||
'body'=>_('Export Map entry added.')
|
||||
));
|
||||
}
|
||||
|
||||
$output .= Form::open();
|
||||
$output .= View::factory($this->viewpath())
|
||||
->set('eo',$eo);
|
||||
|
||||
$output .= '<div>'.Form::submit('submit',_('Add'),array('class'=>'form_button')).'</div>';
|
||||
$output .= Form::close();
|
||||
|
||||
Block::add(array(
|
||||
'title'=>_('Add Export Map'),
|
||||
'body'=>$output,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit Export Maping items
|
||||
*/
|
||||
public function action_edit() {
|
||||
}
|
||||
}
|
||||
?>
|
87
modules/export/classes/Controller/Affiliate/Export.php
Normal file
87
modules/export/classes/Controller/Affiliate/Export.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides OSB exporting capabilities.
|
||||
*
|
||||
* @package Export
|
||||
* @category Controllers/Affiliate
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Controller_Affiliate_Export extends Controller_TemplateDefault_Affiliate {
|
||||
protected $control_title = 'Export';
|
||||
protected $secure_actions = array(
|
||||
'index'=>TRUE,
|
||||
'export'=>TRUE,
|
||||
);
|
||||
|
||||
/**
|
||||
* Export plugins must define an export action.
|
||||
*/
|
||||
public function action_export() {
|
||||
if (empty($_POST['plugin']))
|
||||
$this->request->redirect('affiliate/export/index');
|
||||
|
||||
$sc = Kohana::classname('Export_'.$_POST['plugin']);
|
||||
if (! class_exists($sc))
|
||||
throw new Kohana_Exception('Export Class doesnt exist for :plugin',array(':plugin'=>$_POST['plugin']));
|
||||
else
|
||||
$export = new $sc;
|
||||
|
||||
// @todo: Need to limit this to affiliate acounts
|
||||
$export->export();
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the main call to export, providing a list of items to export and
|
||||
* setting up the page to call the export plugin when submitted.
|
||||
*/
|
||||
public function action_index() {
|
||||
// @todo this should come from a file list
|
||||
$TBRexportplugins = array('quicken'=>'Export to Quicken');
|
||||
|
||||
// @todo: Need to limit this to affiliate acounts
|
||||
$p = ORM::factory('Payment');
|
||||
|
||||
if ($p->find_all()->count()) {
|
||||
Block::add(array(
|
||||
'title'=>_('Payments to Export'),
|
||||
'body'=>Table::display(
|
||||
$p->find_all(),
|
||||
25,
|
||||
array(
|
||||
'id'=>array('label'=>'ID'),
|
||||
'date_payment'=>array('label'=>'Date'),
|
||||
'checkout->display("name")'=>array('label'=>'Method'),
|
||||
'account->accnum()'=>array('label'=>'Acc Num'),
|
||||
'account->name()'=>array('label'=>'Account'),
|
||||
'total_amt'=>array('label'=>'Total','class'=>'right'),
|
||||
'balance(TRUE)'=>array('label'=>'Balance','class'=>'right'),
|
||||
'invoicelist()'=>array('label'=>'Invoices'),
|
||||
),
|
||||
array(
|
||||
'page'=>TRUE,
|
||||
'type'=>'select',
|
||||
'form'=>'affiliate/export/export',
|
||||
'hidden'=>array(
|
||||
Form::hidden('plugin','quicken'),
|
||||
),
|
||||
'button'=>array(
|
||||
Form::submit('submit',_('Export'),array('class'=>'form_button')),
|
||||
),
|
||||
)),
|
||||
));
|
||||
|
||||
# Nothing to export
|
||||
} else {
|
||||
SystemMessage::add(array(
|
||||
'title'=>_('No payments to export'),
|
||||
'type'=>'info',
|
||||
'body'=>sprintf(_('There are no payments within the last %s days (since %s) to show.'),
|
||||
$daysago,date(Kohana::$config->load('osb')->date_format,$daysago*86400+time())),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
14
modules/export/classes/Controller/Export.php
Normal file
14
modules/export/classes/Controller/Export.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides service management
|
||||
*
|
||||
* @package Export
|
||||
* @category Controllers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Controller_Export extends Controller_TemplateDefault {
|
||||
}
|
||||
?>
|
21
modules/export/classes/Export.php
Normal file
21
modules/export/classes/Export.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides OSB exporting capabilities for OSB.
|
||||
*
|
||||
* @package Export
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Export {
|
||||
// Name of export plugin.
|
||||
protected $plugin;
|
||||
|
||||
public function __construct() {
|
||||
$this->plugin = preg_replace('/^'.get_parent_class($this).'_/','',get_class($this));
|
||||
$this->response = Response::factory();
|
||||
}
|
||||
}
|
||||
?>
|
217
modules/export/classes/Export/Quicken.php
Normal file
217
modules/export/classes/Export/Quicken.php
Normal file
@@ -0,0 +1,217 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides OSB exporting capabilities for Quickbooks.
|
||||
*
|
||||
* @package Export
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Export_Quicken extends Export {
|
||||
public function export() {
|
||||
if (! empty($_POST['id']) AND count($_POST['id'])) {
|
||||
$qo = new Quicken;
|
||||
|
||||
foreach ($_POST['id'] as $pid) {
|
||||
$po = ORM::factory('Payment',$pid);
|
||||
|
||||
if ($po->loaded()) {
|
||||
$invoice_ids = array();
|
||||
|
||||
foreach ($po->payment_item->find_all() as $pio) {
|
||||
// If our invoice ID is not blank, then the payment was applied to an invoice
|
||||
if ($pio->invoice->id) {
|
||||
// Record our invoice IDs for the summary
|
||||
array_push($invoice_ids,$pio->invoice->id);
|
||||
|
||||
$qio = new Quicken_Invoice;
|
||||
$qio->TRNSID = sprintf('%06s',$pio->invoice->id);
|
||||
$qio->DATE = date('m/d/Y',$pio->invoice->date_orig);
|
||||
$qio->MEMO = 'Import from OSB';
|
||||
$qio->CLEAR = 'N';
|
||||
$qio->TOPRINT = 'N';
|
||||
$qio->PAID = 'N';
|
||||
$qio->ADDR1 = $po->account->address1;
|
||||
$qio->ADDR2 = $po->account->address2;
|
||||
$qio->ADDR3 = sprintf('%s, %s %s',$po->account->city,$po->account->state,$po->account->zip);
|
||||
// @todo - should be configurable
|
||||
$qio->TERMS = '7 Days';
|
||||
// @todo - should be configurable
|
||||
$qio->INVTITLE = Company::instance()->name().' Invoice';
|
||||
// @todo - should be configurable
|
||||
$qio->INVMEMO = 'Thank you for using '.Company::instance()->name();
|
||||
$qio->DOCNUM = sprintf('%06s',$pio->invoice->id);
|
||||
$qio->DUEDATE = date('m/d/Y',$pio->invoice->due_date);
|
||||
$qio->AMOUNT = sprintf('%3.2f',$pio->invoice->total());
|
||||
|
||||
if ($po->account->company)
|
||||
$qio->NAME = $po->account->company;
|
||||
else
|
||||
$qio->NAME = sprintf('%s %s',$po->account->last_name,$po->account->first_name);
|
||||
|
||||
// Other Quicken fields not used.
|
||||
#$qio->CLASS = '';
|
||||
#$qio->SHIPVIA = '';
|
||||
#$qio->SHIPDATE = '';
|
||||
#$qio->OTHER1 = '';
|
||||
#$qio->REP = '';
|
||||
#$qio->FOB = '';
|
||||
#$qio->PONUM = '';
|
||||
#$qio->SADDR1 = '';
|
||||
#$qio->SADDR2 = '';
|
||||
#$qio->SADDR3 = '';
|
||||
#$qio->SADDR4 = '';
|
||||
#$qio->SADDR5 = '';
|
||||
|
||||
// Add the items to the invoice
|
||||
foreach ($pio->invoice->invoice_item->find_all() as $iio) {
|
||||
$qto = new Quicken_InvoiceItem;
|
||||
|
||||
if ($iio->period())
|
||||
$daterange = $iio->period();
|
||||
|
||||
// @todo This should go.
|
||||
elseif ($iio->product_attr && preg_match('/^a/',$iio->product_attr)) {
|
||||
echo 'Uncaptured';die();
|
||||
|
||||
// @todo This should go.
|
||||
} elseif ($iio->product_attr && preg_match('/^s/',$iio->product_attr))
|
||||
$daterange = preg_replace("/\r?\n/",' ',unserialize($iio->product_attr));
|
||||
|
||||
else
|
||||
$daterange = '';
|
||||
|
||||
if ($iio->product_id) {
|
||||
$mo = ORM::factory('Module',array('name'=>'product'));
|
||||
$eo = ORM::factory('Export')
|
||||
->where('plugin_name','=',strtolower($this->plugin))
|
||||
->and_where('module_id','=',$mo->id)
|
||||
->and_where('item_id','=',$iio->product_id)
|
||||
->find();
|
||||
|
||||
if ($eo->loaded()) {
|
||||
$qto->ACCNT = $eo->map_data['account'];
|
||||
$qto->INVITEM = $eo->map_data['item'];
|
||||
|
||||
} else {
|
||||
throw new Kohana_Exception('Missing product map data for :product (:id)',
|
||||
array(':product'=>$iio->product->name(),':id'=>$iio->product_id));
|
||||
|
||||
$qto->ACCNT = 'Other Income';
|
||||
$qto->INVITEM = 'Product:Unknown';
|
||||
}
|
||||
|
||||
$qto->MEMO = sprintf('%s (%s)',
|
||||
$iio->product->product_translate->find()->name,$daterange);
|
||||
|
||||
} else {
|
||||
$qto->ACCNT = 'Other Income';
|
||||
$qto->INVITEM = 'Unknown';
|
||||
$qto->MEMO = sprintf('%s (%s)',
|
||||
$iio->product->product_translate->find()->name,$daterange);
|
||||
}
|
||||
|
||||
$qto->CLEAR = 'N';
|
||||
$qto->QNTY = -1;
|
||||
|
||||
if ($pio->invoice->tax()) {
|
||||
$qto->TAXABLE = 'Y';
|
||||
# @todo, get this from OSB
|
||||
$qto->TAXCODE = 'GST';
|
||||
$qto->TAXRATE = sprintf('%3.2f%%','0.10');
|
||||
$qto->TAXAMOUNT = sprintf('%3.2f',$iio->tax()*-1);
|
||||
} else {
|
||||
$qto->TAXAMOUNT = 0;
|
||||
}
|
||||
|
||||
// @todo This rounding should be a system config.
|
||||
$qto->PRICE = sprintf('%3.2f',round($iio->subtotal()-$iio->discount(),2));
|
||||
$qto->AMOUNT = sprintf('%3.2f',round($iio->subtotal()-$iio->discount(),2)*-1);
|
||||
|
||||
$qio->addInvoiceItem($qto);
|
||||
}
|
||||
|
||||
// Add credits as a other item
|
||||
$qto = new Quicken_InvoiceItem;
|
||||
$qto->ACCNT = 'Other Income';
|
||||
$qto->INVITEM = 'Product:Unknown';
|
||||
$qto->CLEAR = 'N';
|
||||
$qto->QNTY = 1;
|
||||
$qto->MEMO = 'Credit Item';
|
||||
|
||||
if ($pio->invoice->tax()) {
|
||||
$qto->TAXABLE = 'Y';
|
||||
# @todo, get this from OSB
|
||||
$qto->TAXCODE = 'GST';
|
||||
$qto->TAXRATE = sprintf('%3.2f%%','0.10');
|
||||
$tax = round($pio->invoice->total_credits()/11,2);
|
||||
$qto->TAXAMOUNT = sprintf('%3.2f',$tax);
|
||||
} else {
|
||||
$qto->TAXAMOUNT = 0;
|
||||
}
|
||||
|
||||
$qto->PRICE = sprintf('%3.2f',round(($pio->invoice->total_credits()-$tax)*-1,2));
|
||||
$qto->AMOUNT = sprintf('%3.2f',round(($pio->invoice->total_credits()-$tax),2));
|
||||
$qio->addInvoiceItem($qto);
|
||||
|
||||
$qo->addInvoice($qio);
|
||||
}
|
||||
}
|
||||
|
||||
$qpo = new Quicken_Payment;
|
||||
$qpo->AMOUNT = sprintf('%3.2f',$po->total_amt);
|
||||
$qpo->TRNSID = sprintf('P%06s',$po->id);
|
||||
$qpo->DATE = date('m/d/Y',$po->date_payment);
|
||||
|
||||
// @todo this should be from a function - when no invoice is paid we cant use $qio
|
||||
if ($po->account->company)
|
||||
$qpo->NAME = $po->account->company;
|
||||
else
|
||||
$qpo->NAME = sprintf('%s %s',$po->account->last_name,$po->account->first_name);
|
||||
|
||||
$qpo->CLEAR = 'N';
|
||||
$qpo->MEMO = sprintf('Payment for invoice(s) %s (%s)',implode(':',$invoice_ids),$po->checkout->name);
|
||||
|
||||
// @todo Accounts/Payment should be configurable
|
||||
switch ($po->checkout->plugin) {
|
||||
// @todo this is direct debit
|
||||
case 'DD_EZYPAY':
|
||||
$qpo->PAYMETH = 'DirectDebit';
|
||||
$qpo->ACCNT = 'Ezypay';
|
||||
break;
|
||||
|
||||
case 'REMIT_CHEQUE':
|
||||
$qpo->PAYMETH = 'Cheque';
|
||||
$qpo->ACCNT = 'Undeposited Funds';
|
||||
break;
|
||||
|
||||
case 'REMIT_BANK_WIRE':
|
||||
$qpo->PAYMETH = 'DirectCredit';
|
||||
$qpo->ACCNT = 'Bendigo Bank';
|
||||
break;
|
||||
|
||||
case 'PAYPAL_CART':
|
||||
$qpo->PAYMETH = 'Paypal';
|
||||
$qpo->ACCNT = 'Paypal';
|
||||
break;
|
||||
|
||||
default:
|
||||
$qpo->PAYMETH = 'TBA';
|
||||
$qpo->ACCNT = 'Undeposited Funds';
|
||||
}
|
||||
|
||||
if (isset($qio))
|
||||
$qio->addPayment($qpo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (! empty($qo))
|
||||
$this->response->body($qo->export());
|
||||
|
||||
$this->response->send_file(TRUE,'quicken-import.iif',array('mime_type'=>'text/plain'));
|
||||
}
|
||||
}
|
||||
?>
|
31
modules/export/classes/Model/Export.php
Normal file
31
modules/export/classes/Model/Export.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class supports OSB exporting by rending the exportable items.
|
||||
*
|
||||
* @package Export
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Export extends ORM_OSB {
|
||||
protected $_serialize_column = array(
|
||||
'map_data',
|
||||
);
|
||||
|
||||
public function list_itemsnoexport() {
|
||||
$result = array();
|
||||
|
||||
$mo = ORM::factory('Module',array('name'=>'product'));
|
||||
$p = ORM::factory('Product')
|
||||
->order_by('id');
|
||||
|
||||
foreach ($p->find_all() as $po)
|
||||
if (! ORM::factory('Export')->where('module_id','=',$mo->id)->where('item_id','=',$po->id)->find()->loaded())
|
||||
$result[$po->id] = $po;
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
35
modules/export/classes/OSBExport.php
Normal file
35
modules/export/classes/OSBExport.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This is the abstract class for all export capabilities.
|
||||
*
|
||||
* @package Export
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
abstract class OSBExport {
|
||||
private $_data = array();
|
||||
protected $_items = array();
|
||||
protected $_payments = array();
|
||||
|
||||
abstract public function export();
|
||||
|
||||
public function __get($key) {
|
||||
return $this->_data[$key];
|
||||
}
|
||||
|
||||
public function __set($key,$value) {
|
||||
$this->_data[$key] = $value;
|
||||
}
|
||||
|
||||
protected function keys() {
|
||||
return array_keys($this->_data);
|
||||
}
|
||||
|
||||
protected function vals() {
|
||||
return array_values($this->_data);
|
||||
}
|
||||
}
|
||||
?>
|
69
modules/export/classes/Quicken.php
Normal file
69
modules/export/classes/Quicken.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides Quicken exporting capabilities.
|
||||
*
|
||||
* @package Export
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Quicken extends OSBExport {
|
||||
protected $defaults = array();
|
||||
|
||||
protected function keys() {
|
||||
return array_merge(array_keys($this->defaults),parent::keys());
|
||||
}
|
||||
|
||||
protected function vals() {
|
||||
return array_merge(array_values($this->defaults),parent::vals());
|
||||
}
|
||||
|
||||
public function addInvoice(Quicken_Invoice $item) {
|
||||
array_push($this->_items,$item);
|
||||
}
|
||||
|
||||
public function export() {
|
||||
$export = '';
|
||||
|
||||
foreach ($this->_items as $inv) {
|
||||
# Invoices
|
||||
$export .= "!TRNS\t";
|
||||
$export .= implode("\t",$inv->keys())."\n";
|
||||
$export .= "TRNS\t";
|
||||
$export .= implode("\t",$inv->vals())."\n";
|
||||
|
||||
# Invoice Items
|
||||
$spl = 0;
|
||||
foreach ($inv->_items as $invitem) {
|
||||
if (! $spl) {
|
||||
$export .= "!SPL\tSPLID\t";
|
||||
$export .= implode("\t",$invitem->keys())."\n";
|
||||
}
|
||||
|
||||
$export .= sprintf("SPL\t%s\t%s",$spl++,implode("\t",$invitem->vals()))."\n";
|
||||
}
|
||||
|
||||
$export .= "ENDTRNS\n";
|
||||
|
||||
# Payments
|
||||
foreach ($inv->_payments as $payitem) {
|
||||
if (! $payitem->AMOUNT)
|
||||
continue;
|
||||
|
||||
$export .= "!TRNS\t";
|
||||
$export .= implode("\t",$payitem->keys())."\n";
|
||||
$export .= "TRNS\t";
|
||||
$export .= implode("\t",$payitem->vals())."\n";
|
||||
|
||||
$export .= sprintf("!SPL\t%s\t%s\t%s\t%s\t%s\t",'SPLID','TRANSTYPE','CLEAR','ACCNT','AMOUNT')."\n";
|
||||
$export .= sprintf("SPL\t%s\t%s\t%s\t%s\t%s\t",0,'PAYMENT','N','Accounts Receivable',$payitem->AMOUNT)."\n";
|
||||
$export .= "ENDTRNS\n";
|
||||
}
|
||||
}
|
||||
|
||||
return $export;
|
||||
}
|
||||
}
|
||||
?>
|
26
modules/export/classes/Quicken/Invoice.php
Normal file
26
modules/export/classes/Quicken/Invoice.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides Quicken exporting capabilities.
|
||||
*
|
||||
* @package Export
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Quicken_Invoice extends Quicken {
|
||||
protected $defaults = array(
|
||||
'ACCNT'=>'Accounts Receivable',
|
||||
'TRNSTYPE'=>'TAX_INVOICE'
|
||||
);
|
||||
|
||||
public function addInvoiceItem(Quicken_InvoiceItem $item) {
|
||||
array_push($this->_items,$item);
|
||||
}
|
||||
|
||||
public function addPayment(Quicken_Payment $item) {
|
||||
array_push($this->_payments,$item);
|
||||
}
|
||||
}
|
||||
?>
|
14
modules/export/classes/Quicken/InvoiceItem.php
Normal file
14
modules/export/classes/Quicken/InvoiceItem.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides Quicken exporting capabilities.
|
||||
*
|
||||
* @package Export
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Quicken_InvoiceItem extends Quicken {
|
||||
}
|
||||
?>
|
17
modules/export/classes/Quicken/Payment.php
Normal file
17
modules/export/classes/Quicken/Payment.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides Quicken exporting capabilities.
|
||||
*
|
||||
* @package Export
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Quicken_Payment extends Quicken {
|
||||
protected $defaults = array(
|
||||
'TRNSTYPE'=>'PAYMENT'
|
||||
);
|
||||
}
|
||||
?>
|
Reference in New Issue
Block a user