Skip to content

Commit

Permalink
Merge branch 'pu/pm/TbDropCostCenterCostBearer' into '2024.11'
Browse files Browse the repository at this point in the history
tweak(TB) drop costcenter / costbearer

See merge request tine20/tine20!4789
  • Loading branch information
pschuele committed Jan 30, 2024
2 parents 5df0d6d + b77c150 commit 5873cdb
Show file tree
Hide file tree
Showing 67 changed files with 793 additions and 1,790 deletions.
48 changes: 23 additions & 25 deletions tests/tine20/HumanResources/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*
* @package HumanResources
* @license http://www.gnu.org/licenses/agpl.html
* @copyright Copyright (c) 2012-2019 Metaways Infosystems GmbH (http://www.metaways.de)
* @copyright Copyright (c) 2012-2024 Metaways Infosystems GmbH (http://www.metaways.de)
* @author Alexander Stintzing <[email protected]>
*/

Expand Down Expand Up @@ -56,9 +56,14 @@ protected function setUp(): void
$filter = new HumanResources_Model_EmployeeFilter(array());
HumanResources_Controller_Employee::getInstance()->deleteByFilter($filter);

Tinebase_Controller_CostCenter::getInstance()->deleteByFilter(
Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_CostCenter::class, [])
);
$cc = Tinebase_Controller_EvaluationDimension::getInstance()->search(Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_EvaluationDimension::class, [
['field' => Tinebase_Model_EvaluationDimension::FLD_NAME, 'operator' => 'equals', 'value' => Tinebase_Model_EvaluationDimension::COST_CENTER],
]), null, new Tinebase_Record_Expander(Tinebase_Model_EvaluationDimension::class, Tinebase_Model_EvaluationDimension::getConfiguration()->jsonExpander))->getFirstRecord();

if ($cc->{Tinebase_Model_EvaluationDimension::FLD_ITEMS}->count() > 0) {
$cc->{Tinebase_Model_EvaluationDimension::FLD_ITEMS}->removeAll();
Tinebase_Controller_EvaluationDimension::getInstance()->update($cc);
}

parent::setUp();
}
Expand Down Expand Up @@ -172,40 +177,33 @@ protected function _getContact($loginName = NULL)
return Addressbook_Controller_Contact::getInstance()->getContactByUserId($user->getId());
}

/**
* get sales cost center
*
* @param string
* @return Tinebase_Model_CostCenter
*/
protected function _getTinebaseCostCenter($number = NULL)
{
$cc = Tinebase_Controller_EvaluationDimension::getInstance()->search(Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_EvaluationDimension::class, [
['field' => Tinebase_Model_EvaluationDimension::FLD_NAME, 'operator' => 'equals', 'value' => Tinebase_Model_EvaluationDimension::COST_CENTER],
]), null, new Tinebase_Record_Expander(Tinebase_Model_EvaluationDimension::class, Tinebase_Model_EvaluationDimension::getConfiguration()->jsonExpander))->getFirstRecord();
if ($number !== NULL) {
$c = Tinebase_Controller_CostCenter::getInstance()->search(
Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_CostCenter::class, [[
'field' => 'number', 'operator' => 'equals', 'value' => $number,
$c = Tinebase_Controller_EvaluationDimensionItem::getInstance()->search(
Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_EvaluationDimensionItem::class, [[
'field' => Tinebase_Model_EvaluationDimensionItem::FLD_NUMBER, 'operator' => 'equals', 'value' => $number,
], [
'field' => 'is_deleted', 'operator' => 'equals', 'value' => Tinebase_Model_Filter_Bool::VALUE_NOTSET,
'field' => Tinebase_Model_EvaluationDimensionItem::FLD_EVALUATION_DIMENSION_ID, 'operator' => 'equals', 'value' => $cc->getId(),
]]))->getFirstRecord();

if ($c) {
if ($c->is_deleted) {
Tinebase_Controller_CostCenter::getInstance()->unDelete($c);
$c = Tinebase_Controller_CostCenter::getInstance()->get($c->getId());
}
/** @var Tinebase_Model_CostCenter $c */
/** @var Tinebase_Model_EvaluationDimensionItem $c */
return $c;
}
}
$c = new Tinebase_Model_CostCenter(array(
$c = new Tinebase_Model_EvaluationDimensionItem(array(
'number' => $number ?: Tinebase_Record_Abstract::generateUID(),
'name' => Tinebase_Record_Abstract::generateUID(),
));
), true);
$cc->{Tinebase_Model_EvaluationDimension::FLD_ITEMS}->addRecord($c);

/** @var Tinebase_Model_CostCenter $c */
$c = Tinebase_Controller_CostCenter::getInstance()->create($c, FALSE);
$cc = Tinebase_Controller_EvaluationDimension::getInstance()->update($cc);

return $c;
return $cc->{Tinebase_Model_EvaluationDimension::FLD_ITEMS}->find('number', $c->number);
}

/**
Expand All @@ -222,7 +220,7 @@ protected function _getCostCenter($startDate = NULL)
$tcs = $this->_getTinebaseCostCenter();
return new HumanResources_Model_CostCenter(array(
'start_date' => $startDate->toString(),
'cost_center_id' => $tcs->getId()
'eval_dim_cost_center' => $tcs->getId()
));
}

Expand Down
37 changes: 0 additions & 37 deletions tests/tine20/Sales/ControllerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,43 +83,6 @@ public function testEvalDimFilter()
$this->assertInstanceOf(Tinebase_Model_EvaluationDimensionItem::class, $result->getById($foo->getId()));
$this->assertInstanceOf(Tinebase_Model_EvaluationDimensionItem::class, $result->getById($bar->getId()));
}

/**
* tests for the costcenter controller
*/
public function testCostCenterController()
{
$cc = $this->_getCostCenter();
$ccRet = Tinebase_Controller_CostCenter::getInstance()->create($cc);

$this->assertEquals($cc->id, $ccRet->id);
$this->assertEquals($cc->number, $ccRet->number);
$this->assertEquals($cc->name, $ccRet->name);

// check uniquity
$cc1 = $this->_getCostCenter();

$this->expectException('Tinebase_Exception_Duplicate');

Tinebase_Controller_CostCenter::getInstance()->create($cc1);
}

/**
* get cost center
*
* @return Tinebase_Model_CostCenter
*/
protected function _getCostCenter()
{
$this->_costCenterNumber = $this->_costCenterNumber ? $this->_costCenterNumber : Tinebase_Record_Abstract::generateUID();

$cc = new Tinebase_Model_CostCenter(array(
'id' => Tinebase_Record_Abstract::generateUID(),
'number' => $this->_costCenterNumber,
'name' => 'blabla'
), TRUE);
return $cc;
}

/**
* try to add a contract
Expand Down
44 changes: 0 additions & 44 deletions tests/tine20/Sales/Import/CostCenter.php

This file was deleted.

1 change: 0 additions & 1 deletion tests/tine20/Sales/Import/DemoDataTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ public static function main ()
public static function suite ()
{
$suite = new \PHPUnit\Framework\TestSuite('Tine 2.0 Sales All Import Tests');
$suite->addTestSuite('Sales_Import_CostCenter');
$suite->addTestSuite('Sales_Import_ProductTest');
$suite->addTestSuite('Sales_Import_ContractTest');
$suite->addTestSuite('Sales_Import_SupplierTest');
Expand Down
11 changes: 8 additions & 3 deletions tests/tine20/Sales/InvoiceControllerTests.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ protected function _createFailingContracts()
'own_backend' => Tinebase_Model_Relation::DEFAULT_RECORD_BACKEND,
'own_id' => NULL,
'related_degree' => Tinebase_Model_Relation::DEGREE_SIBLING,
'related_model' => Tinebase_Model_CostCenter::class,
'related_model' => Tinebase_Model_EvaluationDimensionItem::class,
'related_backend' => Tinebase_Model_Relation::DEFAULT_RECORD_BACKEND,
'related_id' => $this->_costcenterRecords->getFirstRecord()->getId(),
'type' => 'LEAD_COST_CENTER'
Expand Down Expand Up @@ -1618,10 +1618,15 @@ public function testGenerateTimesheet()
$this->_createCustomers(1);
}

$costcenter = new Tinebase_Model_CostCenter();
$costcenter = new Tinebase_Model_EvaluationDimensionItem([], true);
$costcenter->number = 1337;
$costcenter->name = 'Foobar Costcenter';
$costcenter = Tinebase_Controller_CostCenter::getInstance()->create($costcenter);
$cc = Tinebase_Controller_EvaluationDimension::getInstance()->search(Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_EvaluationDimension::class, [
['field' => Tinebase_Model_EvaluationDimension::FLD_NAME, 'operator' => 'equals', 'value' => Tinebase_Model_EvaluationDimension::COST_CENTER],
]), null, new Tinebase_Record_Expander(Tinebase_Model_EvaluationDimension::class, Tinebase_Model_EvaluationDimension::getConfiguration()->jsonExpander))->getFirstRecord();
$cc->{Tinebase_Model_EvaluationDimension::FLD_ITEMS}->addRecord($costcenter);
$cc = Tinebase_Controller_EvaluationDimension::getInstance()->update($cc);
$costcenter = $cc->{Tinebase_Model_EvaluationDimension::FLD_ITEMS}->find(Tinebase_Model_EvaluationDimensionItem::FLD_NUMBER, $costcenter->number);

$invoice = new Sales_Model_Invoice();
$invoice->description = 'Foobar Rechnung';
Expand Down
26 changes: 10 additions & 16 deletions tests/tine20/Sales/InvoiceTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,6 @@ class Sales_InvoiceTestCase extends TestCase
*/
protected $_addressController = NULL;

/**
*
* @var Tinebase_Controller_CostCenter
*/
protected $_costcenterController = NULL;

/**
*
* @var Timetracker_Controller_Timesheet
Expand Down Expand Up @@ -302,25 +296,25 @@ protected function _createContacts($count = 20)

protected function _createCostCenters()
{
$this->_costcenterController = Tinebase_Controller_CostCenter::getInstance();

$this->_costcenterRecords = new Tinebase_Record_RecordSet(Tinebase_Model_CostCenter::class);
$cc = Tinebase_Controller_EvaluationDimension::getInstance()->search(Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_EvaluationDimension::class, [
['field' => Tinebase_Model_EvaluationDimension::FLD_NAME, 'operator' => 'equals', 'value' => Tinebase_Model_EvaluationDimension::COST_CENTER],
]), null, new Tinebase_Record_Expander(Tinebase_Model_EvaluationDimension::class, Tinebase_Model_EvaluationDimension::getConfiguration()->jsonExpander))->getFirstRecord();
$allCC = clone $cc->{Tinebase_Model_EvaluationDimension::FLD_ITEMS};
$this->_costcenterRecords = new Tinebase_Record_RecordSet(Tinebase_Model_EvaluationDimensionItem::class);
$ccs = array('unittest1', 'unittest2', 'unittest3', 'unittest4');

$id = 1;

$allCC = $this->_costcenterController->getAll();

foreach($ccs as $title) {
$cc = new Tinebase_Model_CostCenter(
array('name' => $title, 'number' => $id)
$cc = new Tinebase_Model_EvaluationDimensionItem(
array('name' => $title, 'number' => $id, Tinebase_Model_EvaluationDimensionItem::FLD_EVALUATION_DIMENSION_ID => $cc->getId()), true
);

try {
$this->_costcenterRecords->addRecord($this->_costcenterController->create($cc));
$this->_costcenterRecords->addRecord(Tinebase_Controller_EvaluationDimensionItem::getInstance()->create($cc));
} catch (Tinebase_Exception_Duplicate $e) {
$this->_costcenterRecords->addRecord($e->getClientRecord());
} catch (Zend_Db_Statement_Exception $e) {
} catch (Zend_Db_Statement_Exception) {
$this->_costcenterRecords->addRecord($allCC->filter('number', $id)->getFirstRecord());
}

Expand Down Expand Up @@ -621,7 +615,7 @@ protected function _createContracts($contractData = NULL)
'own_backend' => Tinebase_Model_Relation::DEFAULT_RECORD_BACKEND,
'own_id' => NULL,
'related_degree' => Tinebase_Model_Relation::DEGREE_SIBLING,
'related_model' => Tinebase_Model_CostCenter::class,
'related_model' => Tinebase_Model_EvaluationDimensionItem::class,
'related_backend' => Tinebase_Model_Relation::DEFAULT_RECORD_BACKEND,
'related_id' => $costcenter->getId(),
'type' => 'LEAD_COST_CENTER'
Expand Down
59 changes: 0 additions & 59 deletions tests/tine20/Sales/JsonTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -723,65 +723,6 @@ protected function _getProductFilter()
);
}

/**
* tests CostCenter CRUD Methods
*/
public function testAllCostCenterMethods()
{
$name = Tinebase_Record_Abstract::generateUID(10);
$number = Tinebase_DateTime::now()->getTimestamp();

$this->_instance = new Tinebase_Frontend_Json();
$cc = $this->_instance->saveCostCenter(
array('number' => $number, 'name' => $name)
);

$this->assertEquals(40, strlen($cc['id']));

$cc = $this->_instance->getCostCenter($cc['id']);

$this->assertEquals($number, $cc['number']);
$this->assertEquals($name, $cc['name']);

$cc['name'] = $cc['name'] . '_unittest';
$cc['number'] = $number - 5000;

$cc = $this->_instance->saveCostCenter($cc);

$this->assertEquals($name . '_unittest', $cc['name']);
$this->assertEquals($number - 5000, $cc['number']);

$accountId = Tinebase_Core::getUser()->getId();

$this->assertEquals($accountId, $cc['created_by']['accountId']);
$this->assertEquals($accountId, $cc['last_modified_by']['accountId']);
$this->assertEquals(NULL, $cc['deleted_by']);
$this->assertEquals(NULL, $cc['deleted_time']);
$this->assertEquals(2, $cc['seq']);
$this->assertEquals(0, $cc['is_deleted']);

$ccs = $this->_instance->searchCostCenters(array(array('field' => 'name', 'operator' => 'equals', 'value' => $name . '_unittest')), array());

$this->assertEquals(1, $ccs['totalcount']);
$this->assertEquals($name . '_unittest', $ccs['results'][0]['name']);

$this->_instance->deleteCostCenters($cc['id']);

$ccs = $this->_instance->searchCostCenters(array(array('field' => 'number', 'operator' => 'equals', 'value' => $number - 5000)), array());

$this->assertEquals(0, $ccs['totalcount']);

$be = Tinebase_Controller_CostCenter::getInstance()->getBackend();
$be->setModlogActive(FALSE);

$result = $be->search(Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_CostCenter::class, [
['field' => 'number', 'operator' => 'equals', 'value' => $number - 5000]
]));

$this->assertEquals(1, $result->count());
$this->assertEquals(1, $result->getFirstRecord()->is_deleted);
}

/**
* @see https://forge.tine20.org/mantisbt/view.php?id=8840
*/
Expand Down
Loading

0 comments on commit 5873cdb

Please sign in to comment.