mirror of
https://github.com/Karaka-Management/oms-Exchange.git
synced 2026-01-21 13:28:40 +00:00
252 lines
6.8 KiB
PHP
252 lines
6.8 KiB
PHP
<?php
|
|
/**
|
|
* Orange Management
|
|
*
|
|
* PHP Version 7.4
|
|
*
|
|
* @package Interfaces
|
|
* @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\OMS;
|
|
|
|
use Modules\Accounting\Models\CostCenter;
|
|
use Modules\Accounting\Models\CostCenterMapper;
|
|
use Modules\Accounting\Models\CostObject;
|
|
use Modules\Accounting\Models\CostObjectMapper;
|
|
use Modules\ClientManagement\Models\ClientMapper;
|
|
use Modules\Exchange\Models\ExchangeType;
|
|
use Modules\Exchange\Models\ImporterAbstract;
|
|
|
|
use phpOMS\Message\RequestAbstract;
|
|
|
|
/**
|
|
* OMS import class
|
|
*
|
|
* @package Modules\Exchange\Models\Interfaces\OMS
|
|
* @license OMS License 1.0
|
|
* @link https://orange-management.org
|
|
* @since 1.0.0
|
|
*/
|
|
final class Importer extends ImporterAbstract
|
|
{
|
|
/**
|
|
* Import data from request
|
|
*
|
|
* @param RequestAbstract $request Request
|
|
*
|
|
* @return bool
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importFromRequest(RequestAbstract $request): bool
|
|
{
|
|
$start = new \DateTime($request->getData('start') ?? 'now');
|
|
$end = new \DateTime($request->getData('end') ?? 'now');
|
|
|
|
$type = (int) ($request->getData('type') ?? 0);
|
|
$source = (int) ($request->getData('source') ?? 0);
|
|
|
|
if ($type === ExchangeType::CUSTOMER) {
|
|
$this->importCustomer($start, $end);
|
|
} elseif ($type === ExchangeType::SUPPLIER) {
|
|
$this->importSupplier($start, $end);
|
|
} elseif ($type === ExchangeType::ACCOUNT) {
|
|
$this->importAccount($start, $end);
|
|
} elseif ($type === ExchangeType::COSTCENTER) {
|
|
$this->importCostCenter($start, $end);
|
|
} elseif ($type === ExchangeType::COSTOBJECT) {
|
|
$this->importCostObject($start, $end);
|
|
} elseif ($type === ExchangeType::ARTICLE) {
|
|
$this->importArticle($start, $end);
|
|
} elseif ($type === ExchangeType::INVOICE) {
|
|
$this->importInvoice($start, $end);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Import cost centers
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importCostCenter(\DateTime $start, \DateTime $end): void
|
|
{
|
|
$costCenters = OMSCostCenterMapper::getAll();
|
|
|
|
$obj = new CostCenter();
|
|
DataMapperAbstract::setConnection($this->local);
|
|
|
|
foreach ($costCenters as $cc) {
|
|
$obj->setCostCenter((int) $cc->getCostCenter());
|
|
$obj->setCostCenterName($cc->getDescription());
|
|
|
|
CostCenterMapper::create($obj);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Import cost objects
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importCostObject(\DateTime $start, \DateTime $end): void
|
|
{
|
|
$costObjects = OMSCostObjectMapper::getAll();
|
|
|
|
$obj = new CostObject();
|
|
DataMapperAbstract::setConnection($this->local);
|
|
|
|
foreach ($costObjects as $co) {
|
|
$obj->setCostObject((int) $co->getCostObject());
|
|
$obj->setCostObjectName($co->getDescription());
|
|
|
|
CostObjectMapper::create($obj);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Import addresses
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importAddress(\DateTime $start, \DateTime $end): void
|
|
{
|
|
while (($line = \fgetcsv($this->remote)) !== false) {
|
|
\var_dump($line);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Import customers
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importCustomer(\DateTime $start, \DateTime $end): void
|
|
{
|
|
$euTIN = CustomerIdTypeMapper::getByType(CustomerIdType::EU_TIN);
|
|
$gerTIN = CustomerIdTypeMapper::getByType(CustomerIdType::GER_TIN);
|
|
|
|
while (($line = \fgetcsv($this->remote)) !== false) {
|
|
$customer = new Client();
|
|
|
|
$customer->setNumber($line[0]);
|
|
$customer->getProfile()->getAccount()->setName1($line[1]);
|
|
$customer->getProfile()->getAccount()->setName2($line[2]);
|
|
$customer->getProfile()->getAccount()->setName3($line[3]);
|
|
//$customer->addEmail(EmailType::BUSINESS, $line[4]);
|
|
//$customer->addPhone(PhoneType::BUSINESS, $line[5]);
|
|
//$customer->addWebsite(PhoneType::BUSINESS, $line[5]);
|
|
|
|
$address = new Address();
|
|
$customer->setDefaultDeliveryAddress($address);
|
|
$customer->setDefaultInvoiceAddress($address);
|
|
|
|
$customer->setDefaultPaymentTerms(new PaymentTerms());
|
|
$customer->setCreditLimit($line[12]);
|
|
$customer->setStatus($line[9]);
|
|
$customer->setInfo($line[9]);
|
|
$customer->setAdvertisementMaterial($line[13]);
|
|
$customer->setSalesRep();
|
|
$customer->setType();
|
|
$customer->addPartner();
|
|
|
|
$customer->addId($euTIN, $line[10]);
|
|
$customer->addId($gerTIN, $line[11]);
|
|
|
|
ClientMapper::create($customer);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Import suppliers
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importSupplier(\DateTime $start, \DateTime $end): void
|
|
{ }
|
|
|
|
/**
|
|
* Import accounts
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importAccount(\DateTime $start, \DateTime $end): void
|
|
{ }
|
|
|
|
/**
|
|
* Import invoices
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importInvoice(\DateTime $start, \DateTime $end): void
|
|
{ }
|
|
|
|
/**
|
|
* Import postings
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importPosting(\DateTime $start, \DateTime $end): void
|
|
{ }
|
|
|
|
/**
|
|
* Import batch postings
|
|
*
|
|
* @param \DateTime $start Start time (inclusive)
|
|
* @param \DateTime $end End time (inclusive)
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function importBatchPosting(\DateTime $start, \DateTime $end): void
|
|
{ }
|
|
}
|