fix exchange setup

This commit is contained in:
Dennis Eichhorn 2020-10-11 18:56:53 +02:00
parent 9ff392e85a
commit 1847e5da5a
18 changed files with 289 additions and 35 deletions

View File

@ -14,12 +14,15 @@ declare(strict_types=1);
namespace Modules\Exchange\Controller;
use Modules\Exchange\Models\InterfaceManager;
use Modules\Exchange\Models\InterfaceManagerMapper;
use Modules\Media\Models\UploadFile;
use phpOMS\Message\NotificationLevel;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\System\File\Local\Directory;
use phpOMS\Model\Message\FormValidation;
use phpOMS\Message\Http\RequestStatusCode;
/**
* Exchange controller class.
@ -89,6 +92,59 @@ final class ApiController extends Controller
return false;
}
/**
* Method to validate account creation from request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateInterfaceInstall(RequestAbstract $request) : array
{
$val = [];
if (($val['interface'] = empty($request->getData('interface')))
|| ($val['path'] = !\is_dir(__DIR__ . '/../Interfaces/' . $request->getData('interface')))
) {
return $val;
}
return [];
}
/**
* Api method to install exchange interface
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiInterfaceInstall(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
if (!empty($val = $this->validateInterfaceInstall($request))) {
$response->set('interface_install', new FormValidation($val));
$response->getHeader()->setStatusCode(RequestStatusCode::R_400);
return;
}
$interface = new InterfaceManager(
__DIR__ . '/../Interfaces/' . $request->getData('interface') . '/interface.json'
);
$interface->load();
InterfaceManagerMapper::create($interface);
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Interface', 'Interface successfully installed', $interface);
}
/**
* Api method to export data
*

View File

@ -100,9 +100,10 @@ final class Importer extends ImporterAbstract
'database' => (string) ($request->getData('database') ?? ''),
'login' => (string) ($request->getData('login') ?? ''),
'password' => (string) ($request->getData('password') ?? ''),
'prefix' => '',
]);
$this->remote->connect();
if ($this->remote->getStatus() !== DatabaseStatus::OK) {
return false;
}
@ -152,8 +153,8 @@ final class Importer extends ImporterAbstract
{
DataMapperAbstract::setConnection($this->remote);
$query = GSDCostCenterMapper::getQuery();
$query->where('row_create_time', '=>', $start->format('Y-m-d H:i:s'))
->andWhere('row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$query->where('FiKostenstellen_3.row_create_time', '>=', $start->format('Y-m-d H:i:s'))
->andWhere('FiKostenstellen_3.row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$costCenters = GSDCostCenterMapper::getAllByQuery($query);
@ -162,7 +163,7 @@ final class Importer extends ImporterAbstract
foreach ($costCenters as $cc) {
$obj = new CostCenter();
$obj->setCode($cc->getCostCenter());
$obj->setName($cc->getDescription());
$obj->setName(\trim($cc->getDescription(), " ,\t"));
CostCenterMapper::create($obj);
}
@ -182,8 +183,8 @@ final class Importer extends ImporterAbstract
{
DataMapperAbstract::setConnection($this->remote);
$query = GSDCostObjectMapper::getQuery();
$query->where('row_create_time', '=>', $start->format('Y-m-d H:i:s'))
->andWhere('row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$query->where('FiKostentraeger_3.row_create_time', '>=', $start->format('Y-m-d H:i:s'))
->andWhere('FiKostentraeger_3.row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$costObjects = GSDCostObjectMapper::getAllByQuery($query);
@ -192,7 +193,7 @@ final class Importer extends ImporterAbstract
foreach ($costObjects as $co) {
$obj = new CostObject();
$obj->setCode($co->getCostObject());
$obj->setName($co->getDescription());
$obj->setName(\trim($co->getDescription(), " ,\t"));
CostObjectMapper::create($obj);
}
@ -212,8 +213,8 @@ final class Importer extends ImporterAbstract
{
DataMapperAbstract::setConnection($this->remote);
$query = GSDCustomerMapper::getQuery();
$query->where('row_create_time', '=>', $start->format('Y-m-d H:i:s'))
->andWhere('row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$query->where('Kunden_3.row_create_time', '>=', $start->format('Y-m-d H:i:s'))
->andWhere('Kunden_3.row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$customers = GSDCustomerMapper::getAllByQuery($query);
@ -221,12 +222,12 @@ final class Importer extends ImporterAbstract
foreach ($customers as $customer) {
$obj = new Client();
$obj->setNumber($customer->getNumber());
$obj->setNumber(\trim($customer->getNumber()));
$account = new Account();
$account->setName1($customer->getAddress()->getName1());
$account->setName2($customer->getAddress()->getName2());
$account->setName3($customer->getAddress()->getName3());
$account->setName1(\trim($customer->getAddress()->getName1(), " ,\t"));
$account->setName2(\trim($customer->getAddress()->getName2(), " ,\t"));
$account->setName3(\trim($customer->getAddress()->getName3(), " ,\t"));
$profile = new Profile($account);
$obj->setProfile($profile);
@ -249,8 +250,8 @@ final class Importer extends ImporterAbstract
{
DataMapperAbstract::setConnection($this->remote);
$query = GSDSupplierMapper::getQuery();
$query->where('row_create_time', '=>', $start->format('Y-m-d H:i:s'))
->andWhere('row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$query->where('Lieferanten_3.row_create_time', '>=', $start->format('Y-m-d H:i:s'))
->andWhere('Lieferanten_3.row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$suppliers = GSDSupplierMapper::getAllByQuery($query);
@ -261,9 +262,9 @@ final class Importer extends ImporterAbstract
$obj->setNumber($supplier->getNumber());
$account = new Account();
$account->setName1($supplier->getAddress()->getName1());
$account->setName2($supplier->getAddress()->getName2());
$account->setName3($supplier->getAddress()->getName3());
$account->setName1(\trim($supplier->getAddress()->getName1(), " ,\t"));
$account->setName2(\trim($supplier->getAddress()->getName2(), " ,\t"));
$account->setName3(\trim($supplier->getAddress()->getName3(), " ,\t"));
$profile = new Profile($account);
$obj->setProfile($profile);
@ -300,8 +301,8 @@ final class Importer extends ImporterAbstract
{
DataMapperAbstract::setConnection($this->remote);
$query = GSDArticleMapper::getQuery();
$query->where('row_create_time', '=>', $start->format('Y-m-d H:i:s'))
->andWhere('row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$query->where('Artikel_3.row_create_time', '>=', $start->format('Y-m-d H:i:s'))
->andWhere('Artikel_3.row_create_time', '<=', $end->format('Y-m-d H:i:s'));
$articles = GSDArticleMapper::getAllByQuery($query);

View File

@ -22,7 +22,7 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @link https://orange-management.org
* @since 1.0.0
*/
final class GSDAddress
class GSDAddress
{
/**
* ID.
@ -120,6 +120,32 @@ final class GSDAddress
*/
private string $website = '';
/**
* Creator.
*
* @var int
* @since 1.0.0
*/
protected int $createdBy = 0;
/**
* Created.
*
* @var \DateTimeImmutable
* @since 1.0.0
*/
protected \DateTimeImmutable $createdAt;
/**
* Construct.
*
* @since 1.0.0
*/
public function __construct()
{
$this->createdAt = new \DateTimeImmutable('now');
}
/**
* Get name1
*

View File

@ -22,7 +22,7 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @link https://orange-management.org
* @since 1.0.0
*/
final class GSDArticle
class GSDArticle
{
/**
* ID.
@ -33,12 +33,20 @@ final class GSDArticle
protected int $id = 0;
/**
* Create at.
* Creator.
*
* @var int
* @since 1.0.0
*/
protected int $createdBy = 0;
/**
* Created.
*
* @var \DateTimeImmutable
* @since 1.0.0
*/
private \DateTimeImmutable $createdAt;
protected \DateTimeImmutable $createdAt;
/**
* Article number.

View File

@ -22,7 +22,7 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @link https://orange-management.org
* @since 1.0.0
*/
final class GSDCostCenter implements \JsonSerializable
class GSDCostCenter implements \JsonSerializable
{
/**
* ID.

View File

@ -36,7 +36,7 @@ final class GSDCostCenterMapper extends DataMapperAbstract
'ROW_ID' => ['name' => 'ROW_ID', 'type' => 'int', 'internal' => 'id'],
'row_create_time' => ['name' => 'row_create_time', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt', 'readonly' => true],
'row_create_user' => ['name' => 'row_create_user', 'type' => 'int', 'internal' => 'createdBy', 'readonly' => true],
'KST' => ['name' => 'KST', 'type' => 'string', 'internal' => 'costcenter'],
'KST' => ['name' => 'KST', 'type' => 'string', 'internal' => 'costCenter'],
'Bezeichnung' => ['name' => 'Bezeichnung', 'type' => 'string', 'internal' => 'description'],
];

View File

@ -22,7 +22,7 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @link https://orange-management.org
* @since 1.0.0
*/
final class GSDCostObject implements \JsonSerializable
class GSDCostObject implements \JsonSerializable
{
/**
* ID.

View File

@ -36,7 +36,7 @@ final class GSDCostObjectMapper extends DataMapperAbstract
'ROW_ID' => ['name' => 'ROW_ID', 'type' => 'int', 'internal' => 'id'],
'row_create_time' => ['name' => 'row_create_time', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt', 'readonly' => true],
'row_create_user' => ['name' => 'row_create_user', 'type' => 'int', 'internal' => 'createdBy', 'readonly' => true],
'KTR' => ['name' => 'KTR', 'type' => 'string', 'internal' => 'costobject'],
'KTR' => ['name' => 'KTR', 'type' => 'string', 'internal' => 'costObject'],
'Bezeichnung' => ['name' => 'Bezeichnung', 'type' => 'string', 'internal' => 'description'],
];

View File

@ -22,7 +22,7 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @link https://orange-management.org
* @since 1.0.0
*/
final class GSDCustomer
class GSDCustomer
{
/**
* ID.
@ -38,7 +38,7 @@ final class GSDCustomer
* @var int
* @since 1.0.0
*/
protected $createdBy = 0;
protected int $createdBy = 0;
/**
* Created.

View File

@ -39,18 +39,19 @@ final class GSDCustomerMapper extends DataMapperAbstract
'Kundennummer' => ['name' => 'Kundennummer', 'type' => 'string', 'internal' => 'number'],
'Info' => ['name' => 'Info', 'type' => 'string', 'internal' => 'info'],
'Auftragssperre' => ['name' => 'Auftragssperre', 'type' => 'string', 'internal' => 'deliveryStatus'],
'KreditLimitintern' => ['name' => 'KreditLimitintern', 'type' => 'string', 'internal' => 'creditlimit'],
'KreditLimitintern' => ['name' => 'KreditLimitintern', 'type' => 'float', 'internal' => 'creditlimit'],
'EGUstId' => ['name' => 'EGUstId', 'type' => 'string', 'internal' => 'egustid'],
'Steuernummer' => ['name' => 'Steuernummer', 'type' => 'string', 'internal' => 'taxid'],
'BIC' => ['name' => 'BIC', 'type' => 'string', 'internal' => 'bic'],
'IBAN' => ['name' => 'IBAN', 'type' => 'string', 'internal' => 'iban'],
'Verkaeufer' => ['name' => 'Verkaeufer', 'type' => 'int', 'internal' => 'salesRep'],
'Verkaeufer' => ['name' => 'Verkaeufer', 'type' => 'int', 'internal' => 'salesRep'],
'AdressId' => ['name' => 'AdressId', 'type' => 'int', 'internal' => 'addr'],
];
protected static array $ownsOne = [
'addr' => [
'mapper' => GSDAddressMapper::class,
'self' => 'AddressId',
'self' => 'AdressId',
],
];

View File

@ -22,7 +22,7 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @link https://orange-management.org
* @since 1.0.0
*/
final class GSDSupplier
class GSDSupplier
{
/**
* ID.

View File

@ -47,7 +47,7 @@ final class GSDSupplierMapper extends DataMapperAbstract
protected static array $ownsOne = [
'addr' => [
'mapper' => GSDAddressMapper::class,
'self' => 'AddressId',
'self' => 'AdressId',
],
];

View File

@ -0,0 +1,27 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\Interfaces\GSD\Model;
/**
* Null model.
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*/
class NullGSDAddress
{
}

View File

@ -0,0 +1,27 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\Interfaces\GSD\Model;
/**
* Null model.
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*/
class NullGSDArticle
{
}

View File

@ -0,0 +1,27 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\Interfaces\GSD\Model;
/**
* Null model.
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*/
class NullGSDCostCenter
{
}

View File

@ -0,0 +1,27 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\Interfaces\GSD\Model;
/**
* Null model.
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*/
class NullGSDCostObject
{
}

View File

@ -0,0 +1,27 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\Interfaces\GSD\Model;
/**
* Null model.
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*/
class NullGSDCustomer
{
}

View File

@ -0,0 +1,27 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\Interfaces\GSD\Model;
/**
* Null model.
*
* @package Modules\Exchange\Interfaces\GSD\Model
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*/
class NullGSDSupplier
{
}