mirror of
https://github.com/Karaka-Management/oms-Exchange.git
synced 2026-02-17 18:18:40 +00:00
Further exchange draft implementation
This commit is contained in:
parent
8a183c5452
commit
6626529307
|
|
@ -187,21 +187,20 @@ final class Controller extends ModuleAbstract implements WebInterface
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$import = $this->importDataFromRequest($request);
|
$import = $this->importDataFromRequest($request);
|
||||||
|
$status = NotificationLevel::ERROR;
|
||||||
|
$message = 'Import failed.';
|
||||||
|
|
||||||
if ($import) {
|
if ($import) {
|
||||||
$response->set($request->getUri()->__toString(), [
|
$status = NotificationLevel::OK;
|
||||||
'status' => NotificationLevel::OK,
|
$message = 'Import succeeded.';
|
||||||
'title' => 'Exchange',
|
|
||||||
'message' => 'Import succeeded.'
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
$response->set($request->getUri()->__toString(), [
|
|
||||||
'status' => NotificationLevel::ERROR,
|
|
||||||
'title' => 'Exchange',
|
|
||||||
'message' => 'Import failed.'
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$response->set($request->getUri()->__toString(), [
|
||||||
|
'status' => status,
|
||||||
|
'title' => 'Exchange',
|
||||||
|
'message' => $message
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -217,11 +216,11 @@ final class Controller extends ModuleAbstract implements WebInterface
|
||||||
{
|
{
|
||||||
$interfaces = InterfaceManagerMapper::getAll();
|
$interfaces = InterfaceManagerMapper::getAll();
|
||||||
foreach ($interfaces as $interface) {
|
foreach ($interfaces as $interface) {
|
||||||
if ($request->getData('exchange') === $interface->getInterfacePath()) {
|
if ($request->getData('exchange') ?? '' === $interface->getInterfacePath()) {
|
||||||
$class = '\\Modules\\Exchange\\Interfaces\\' . $interface->getInterfacePath() . '\\Importer';
|
$class = '\\Modules\\Exchange\\Interfaces\\' . $interface->getInterfacePath() . '\\Importer';
|
||||||
$importer = new $class();
|
$importer = new $class($this->app->dbPool->get());
|
||||||
|
|
||||||
return $importer->importRequest($request);
|
return $importer->importFromRequest($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,12 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Interfaces\GSD;
|
namespace Modules\Exchange\Interfaces\GSD;
|
||||||
|
|
||||||
use Interfaces\ImporterAbstract;
|
use Modules\Exchange\Models\ImporterAbstract;
|
||||||
use Interfaces\GSD\Model\GSDCostCenterMapper;
|
use Modules\Exchange\Interfaces\GSD\Model\GSDCostCenterMapper;
|
||||||
use Interfaces\GSD\Model\GSDCostObjectMapper;
|
use Modules\Exchange\Interfaces\GSD\Model\GSDCostObjectMapper;
|
||||||
use Interfaces\GSD\Model\GSDCustomerMapper;
|
use Modules\Exchange\Interfaces\GSD\Model\GSDCustomerMapper;
|
||||||
|
|
||||||
use Modules\Accounting\Models\CostCenterMapper;
|
use Modules\Accounting\Models\CostCenterMapper;
|
||||||
use Modules\Accounting\Models\CostCenter;
|
use Modules\Accounting\Models\CostCenter;
|
||||||
|
|
@ -28,17 +28,28 @@ use Modules\ClientManagement\Models\ClientMapper;
|
||||||
use Modules\ClientManagement\Models\Client;
|
use Modules\ClientManagement\Models\Client;
|
||||||
|
|
||||||
use phpOMS\DataStorage\Database\Query\Builder;
|
use phpOMS\DataStorage\Database\Query\Builder;
|
||||||
|
use phpOMS\DataStorage\Database\Connection\ConnectionFactory;
|
||||||
|
use phpOMS\DataStorage\Database\DatabaseStatus;
|
||||||
|
use phpOMS\Message\RequestAbstract;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GSD import class
|
* GSD import class
|
||||||
*
|
*
|
||||||
* @package Interfaces\GSD
|
* @package Modules\Exchange\Models\Interfaces\GSD
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
final class Importer extends ImporterAbstract
|
final class Importer extends ImporterAbstract
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Database connection.
|
||||||
|
*
|
||||||
|
* @var ConnectionInterface
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
private $remote = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Import all data in time span
|
* Import all data in time span
|
||||||
*
|
*
|
||||||
|
|
@ -63,6 +74,57 @@ final class Importer extends ImporterAbstract
|
||||||
$this->importBatchPosting($start, $end);
|
$this->importBatchPosting($start, $end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function importFromRequest(RequestAbstract $request) : bool
|
||||||
|
{
|
||||||
|
$start = new \DateTime($request->getData('start') ?? 'now');
|
||||||
|
$end = new \DateTime($request->getData('end') ?? 'now');
|
||||||
|
|
||||||
|
$this->remote = ConnectionFactory::create([
|
||||||
|
'db' => $request->getData('db') ?? '',
|
||||||
|
'host' => $request->getData('host') ?? '',
|
||||||
|
'port' => (int) ($request->getData('port') ?? 0),
|
||||||
|
'database' => $request->getData('database') ?? '',
|
||||||
|
'login' => $request->getData('login') ?? '',
|
||||||
|
'password' => $request->getData('password') ?? '',
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($this->remote->getStatus() !== DatabaseStatus::OK) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((bool) ($request->getData('customers') ?? false))) {
|
||||||
|
$this->importAddress($start, $end);
|
||||||
|
$this->importCustomer($start, $end);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((bool) ($request->getData('suppliers') ?? false))) {
|
||||||
|
$this->importAddress($start, $end);
|
||||||
|
$this->importSupplier($start, $end);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((bool) ($request->getData('accounts') ?? false))) {
|
||||||
|
$this->importAccount($start, $end);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((bool) ($request->getData('costcenters') ?? false))) {
|
||||||
|
$this->importCostCenter($start, $end);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((bool) ($request->getData('costobjects') ?? false))) {
|
||||||
|
$this->importCostObject($start, $end);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((bool) ($request->getData('articles') ?? false))) {
|
||||||
|
$this->importArticle($start, $end);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((bool) ($request->getData('invoices') ?? false))) {
|
||||||
|
$this->importInvoice($start, $end);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Import cost centers
|
* Import cost centers
|
||||||
*
|
*
|
||||||
|
|
@ -75,11 +137,11 @@ final class Importer extends ImporterAbstract
|
||||||
*/
|
*/
|
||||||
public function importCostCenter(\DateTime $start, \DateTime $end) : void
|
public function importCostCenter(\DateTime $start, \DateTime $end) : void
|
||||||
{
|
{
|
||||||
DataMapperAbstract::setConnection($this->app->dbPool->get('gsd'));
|
DataMapperAbstract::setConnection($this->remote);
|
||||||
$costCenters = GSDCostCenterMapper::getAll();
|
$costCenters = GSDCostCenterMapper::getAll();
|
||||||
|
|
||||||
$obj = new CostCenter();
|
$obj = new CostCenter();
|
||||||
DataMapperAbstract::setConnection($this->app->dbPool->get('oms'));
|
DataMapperAbstract::setConnection($this->local);
|
||||||
|
|
||||||
foreach ($costCenters as $cc) {
|
foreach ($costCenters as $cc) {
|
||||||
$obj->setCostCenter((int) $cc->getCostCenter());
|
$obj->setCostCenter((int) $cc->getCostCenter());
|
||||||
|
|
@ -101,11 +163,11 @@ final class Importer extends ImporterAbstract
|
||||||
*/
|
*/
|
||||||
public function importCostObject(\DateTime $start, \DateTime $end) : void
|
public function importCostObject(\DateTime $start, \DateTime $end) : void
|
||||||
{
|
{
|
||||||
DataMapperAbstract::setConnection($this->app->dbPool->get('gsd'));
|
DataMapperAbstract::setConnection($this->remote);
|
||||||
$costObjects = GSDCostObjectMapper::getAll();
|
$costObjects = GSDCostObjectMapper::getAll();
|
||||||
|
|
||||||
$obj = new CostObject();
|
$obj = new CostObject();
|
||||||
DataMapperAbstract::setConnection($this->app->dbPool->get('oms'));
|
DataMapperAbstract::setConnection($this->local);
|
||||||
|
|
||||||
foreach ($costObjects as $co) {
|
foreach ($costObjects as $co) {
|
||||||
$obj->setCostObject((int) $co->getCostObject());
|
$obj->setCostObject((int) $co->getCostObject());
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ final class GSDCostCenterMapper extends DataMapperAbstract
|
||||||
*/
|
*/
|
||||||
protected static $columns = [
|
protected static $columns = [
|
||||||
'ROW_ID' => ['name' => 'ROW_ID', 'type' => 'int', 'internal' => 'id'],
|
'ROW_ID' => ['name' => 'ROW_ID', 'type' => 'int', 'internal' => 'id'],
|
||||||
'row_create_time' => ['name' => 'row_create_time', 'type' => '\DateTime', 'internal' => 'createdAt'],
|
'row_create_time' => ['name' => 'row_create_time', 'type' => 'DateTime', 'internal' => 'createdAt'],
|
||||||
'row_create_user' => ['name' => 'row_create_user', 'type' => 'int', 'internal' => 'createdBy'],
|
'row_create_user' => ['name' => 'row_create_user', 'type' => 'int', 'internal' => 'createdBy'],
|
||||||
'KST' => ['name' => 'KST', 'type' => 'string', 'internal' => 'costcenter'],
|
'KST' => ['name' => 'KST', 'type' => 'string', 'internal' => 'costcenter'],
|
||||||
'Bezeichnung' => ['name' => 'Bezeichnung', 'type' => 'string', 'internal' => 'description'],
|
'Bezeichnung' => ['name' => 'Bezeichnung', 'type' => 'string', 'internal' => 'description'],
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ final class GSDCostObjectMapper extends DataMapperAbstract
|
||||||
*/
|
*/
|
||||||
protected static $columns = [
|
protected static $columns = [
|
||||||
'ROW_ID' => ['name' => 'ROW_ID', 'type' => 'int', 'internal' => 'id'],
|
'ROW_ID' => ['name' => 'ROW_ID', 'type' => 'int', 'internal' => 'id'],
|
||||||
'row_create_time' => ['name' => 'row_create_time', 'type' => '\DateTime', 'internal' => 'createdAt'],
|
'row_create_time' => ['name' => 'row_create_time', 'type' => 'DateTime', 'internal' => 'createdAt'],
|
||||||
'row_create_user' => ['name' => 'row_create_user', 'type' => 'int', 'internal' => 'createdBy'],
|
'row_create_user' => ['name' => 'row_create_user', 'type' => 'int', 'internal' => 'createdBy'],
|
||||||
'KTR' => ['name' => 'KTR', 'type' => 'string', 'internal' => 'costobject'],
|
'KTR' => ['name' => 'KTR', 'type' => 'string', 'internal' => 'costobject'],
|
||||||
'Bezeichnung' => ['name' => 'Bezeichnung', 'type' => 'string', 'internal' => 'description'],
|
'Bezeichnung' => ['name' => 'Bezeichnung', 'type' => 'string', 'internal' => 'description'],
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,16 @@
|
||||||
<form id="fImport" method="POST" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/admin/exchange/import/profile?{?}&exchange=GSD&csrf={$CSRF}'); ?>">
|
<form id="fImport" method="POST" action="<?= \phpOMS\Uri\UriFactory::build('/{/lang}/api/admin/exchange/import/profile?{?}&exchange=GSD&csrf={$CSRF}'); ?>">
|
||||||
<table class="layout wf-100" style="table-layout: fixed">
|
<table class="layout wf-100" style="table-layout: fixed">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<tr><td><label for="iHost"><?= $this->getHtml('Host') ?></label>
|
||||||
|
<tr><td><input type="text" id="iHost" name="host" placeholder=" <?= $this->getHtml('Host') ?>" required><input type="hidden" id="iDb" name="db" value="<?= \phpOMS\DataStorage\Database\DatabaseType::SQLSRV; ?>" required>
|
||||||
|
<tr><td><label for="iPort"><?= $this->getHtml('Port') ?></label>
|
||||||
|
<tr><td><input type="text" id="iPort" name="port" value="1433" required>
|
||||||
|
<tr><td><label for="iDatabase"><?= $this->getHtml('Database') ?></label>
|
||||||
|
<tr><td><input type="text" id="iDatabase" name="database" placeholder=" <?= $this->getHtml('Database') ?>" required>
|
||||||
|
<tr><td><label for="iLogin"><?= $this->getHtml('Login') ?></label>
|
||||||
|
<tr><td><input type="text" id="iLogin" name="login" placeholder=" <?= $this->getHtml('Login') ?>" required>
|
||||||
|
<tr><td><label for="iPassword"><?= $this->getHtml('Password') ?></label>
|
||||||
|
<tr><td><input type="password" id="iPassword" name="password" placeholder=" <?= $this->getHtml('Password') ?>" required>
|
||||||
<tr><td><label for="iStart"><?= $this->getHtml('Start') ?></label>
|
<tr><td><label for="iStart"><?= $this->getHtml('Start') ?></label>
|
||||||
<tr><td><input type="datetime-local" id="iStart" name="start" value="<?= $this->printHtml((new \DateTime('NOW'))->format('Y-m-d\TH:i:s')); ?>">
|
<tr><td><input type="datetime-local" id="iStart" name="start" value="<?= $this->printHtml((new \DateTime('NOW'))->format('Y-m-d\TH:i:s')); ?>">
|
||||||
<tr><td><label for="iEnd"><?= $this->getHtml('End') ?></label>
|
<tr><td><label for="iEnd"><?= $this->getHtml('End') ?></label>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Interfaces;
|
namespace Modules\Exchange\Models;
|
||||||
|
|
||||||
use phpOMS\DataStorage\Database\Connection\ConnectionInterface;
|
use phpOMS\DataStorage\Database\Connection\ConnectionInterface;
|
||||||
|
|
||||||
|
|
@ -34,14 +34,6 @@ abstract class ImporterAbstract
|
||||||
*/
|
*/
|
||||||
private $local = null;
|
private $local = null;
|
||||||
|
|
||||||
/**
|
|
||||||
* Database connection.
|
|
||||||
*
|
|
||||||
* @var ConnectionInterface
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
private $remote = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
|
|
@ -50,9 +42,8 @@ abstract class ImporterAbstract
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public function __construct(ConnectionInterface $local, ConnectionInterface $remote)
|
public function __construct(ConnectionInterface $local)
|
||||||
{
|
{
|
||||||
$this->remote = $remote;
|
$this->remote = $remote;
|
||||||
$this->local = $local;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,18 @@
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
*/
|
*/
|
||||||
return ['Exchange' => [
|
return ['Exchange' => [
|
||||||
'End' => 'End',
|
'Database' => 'Database',
|
||||||
|
'End' => 'End',
|
||||||
'Exchange' => 'Exchange',
|
'Exchange' => 'Exchange',
|
||||||
'Export' => 'Export',
|
'Export' => 'Export',
|
||||||
'Exports' => 'Exports',
|
'Exports' => 'Exports',
|
||||||
'Import' => 'Import',
|
'Host' => 'Host',
|
||||||
|
'Import' => 'Import',
|
||||||
'Imports' => 'Imports',
|
'Imports' => 'Imports',
|
||||||
|
'Login' => 'Login',
|
||||||
'Options' => 'Options',
|
'Options' => 'Options',
|
||||||
|
'Password' => 'Password',
|
||||||
|
'Port' => 'Port',
|
||||||
'Start' => 'Start',
|
'Start' => 'Start',
|
||||||
'Title' => 'Title',
|
'Title' => 'Title',
|
||||||
'Website' => 'Website',
|
'Website' => 'Website',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user