1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-19 16:01:34 +02:00

Added Pancake import

This commit is contained in:
Hillel Coren 2018-04-16 13:48:25 +03:00
parent 7995d028bc
commit 598b4743d8
4 changed files with 114 additions and 0 deletions

View File

@ -180,6 +180,7 @@ if (! defined('APP_NAME')) {
define('IMPORT_INVOICEPLANE', 'InvoicePlane');
define('IMPORT_HARVEST', 'Harvest');
define('IMPORT_STRIPE', 'Stripe');
define('IMPORT_PANCAKE', 'Pancake');
define('MAX_NUM_CLIENTS', 100);
define('MAX_NUM_CLIENTS_PRO', 20000);

View File

@ -0,0 +1,41 @@
<?php
namespace App\Ninja\Import\Pancake;
use App\Ninja\Import\BaseTransformer;
use League\Fractal\Resource\Item;
/**
* Class ClientTransformer.
*/
class ClientTransformer extends BaseTransformer
{
/**
* @param $data
*
* @return bool|Item
*/
public function transform($data)
{
if ($this->hasClient($data->company)) {
return false;
}
return new Item($data, function ($data) {
return [
'name' => $this->getString($data, 'company'),
'work_phone' => $this->getString($data, 'telephone_number'),
'website' => $this->getString($data, 'website_url'),
'private_notes' => $this->getString($data, 'notes'),
'contacts' => [
[
'first_name' => $this->getString($data, 'first_name'),
'last_name' => $this->getString($data, 'last_name'),
'email' => $this->getString($data, 'email'),
'phone' => $this->getString($data, 'mobile_number'),
],
],
];
});
}
}

View File

@ -0,0 +1,71 @@
<?php
namespace App\Ninja\Import\Pancake;
use App\Ninja\Import\BaseTransformer;
use League\Fractal\Resource\Item;
/**
* Class InvoiceTransformer.
*/
class InvoiceTransformer extends BaseTransformer
{
/**
* @param $data
*
* @return bool|Item
*/
public function transform($data)
{
if (! $this->getClientId($data->client)) {
return false;
}
if ($this->hasInvoice($data->invoice)) {
return false;
}
if ($data->recurring == 'Yes') {
return false;
}
return new Item($data, function ($data) {
return [
'client_id' => $this->getClientId($data->client),
'invoice_number' => $this->getInvoiceNumber($data->invoice),
'invoice_date' => ! empty($data->date_of_creation) ? date('Y-m-d', strtotime($data->date_of_creation)) : null,
'due_date' => ! empty($data->due_date) ? date('Y-m-d', strtotime($data->due_date)) : null,
'paid' => (float) $data->amount_paid,
'public_notes' => $this->getString($data, 'notes'),
'private_notes' => $this->getString($data, 'description'),
'invoice_date_sql' => $data->create_date,
'invoice_items' => [
[
'product_key' => $data->item_1_gross_discount > 0 ? trans('texts.discount') : $data->item_1_name,
'notes' => $data->item_1_description,
'cost' => (float) $data->item_1_gross_discount > 0 ? $data->item_1_gross_discount * -1 : $data->item_1_rate,
'qty' => $data->item_1_quantity,
],
[
'product_key' => $data->item_2_gross_discount > 0 ? trans('texts.discount') : $data->item_2_name,
'notes' => $data->item_2_description,
'cost' => (float) $data->item_2_gross_discount > 0 ? $data->item_2_gross_discount * -1 : $data->item_2_rate,
'qty' => $data->item_2_quantity,
],
[
'product_key' => $data->item_3_gross_discount > 0 ? trans('texts.discount') : $data->item_3_name,
'notes' => $data->item_3_description,
'cost' => (float) $data->item_3_gross_discount > 0 ? $data->item_3_gross_discount * -1 : $data->item_3_rate,
'qty' => $data->item_3_quantity,
],
[
'product_key' => $data->item_4_gross_discount > 0 ? trans('texts.discount') : $data->item_4_name,
'notes' => $data->item_4_description,
'cost' => (float) $data->item_4_gross_discount > 0 ? $data->item_4_gross_discount * -1 : $data->item_4_rate,
'qty' => $data->item_4_quantity,
],
],
];
});
}
}

View File

@ -113,6 +113,7 @@ class ImportService
IMPORT_INVOICEABLE,
IMPORT_INVOICEPLANE,
IMPORT_NUTCACHE,
IMPORT_PANCAKE,
IMPORT_RONIN,
IMPORT_STRIPE,
IMPORT_WAVE,