From b21d64c40785fcdc6c83f5fc49160a95151d1c23 Mon Sep 17 00:00:00 2001 From: Paul Mehrer Date: Fri, 12 Jan 2024 15:59:58 +0100 Subject: [PATCH] tweak(Sales) add debitor xls export --- tests/tine20/Sales/AllTests.php | 3 +- tests/tine20/Sales/Export/DebitorTest.php | 53 +++++++++++++++++++ tine20/Sales/Export/DebitorXls.php | 32 +++++++++++ .../Sales/Export/definitions/debitor_xls.xml | 13 +++++ 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 tests/tine20/Sales/Export/DebitorTest.php create mode 100644 tine20/Sales/Export/DebitorXls.php create mode 100644 tine20/Sales/Export/definitions/debitor_xls.xml diff --git a/tests/tine20/Sales/AllTests.php b/tests/tine20/Sales/AllTests.php index b075cabb3cb..cf01059f32d 100644 --- a/tests/tine20/Sales/AllTests.php +++ b/tests/tine20/Sales/AllTests.php @@ -4,7 +4,7 @@ * * @package Sales * @license http://www.gnu.org/licenses/agpl.html - * @copyright Copyright (c) 2008-2022 Metaways Infosystems GmbH (http://www.metaways.de) + * @copyright Copyright (c) 2008-2024 Metaways Infosystems GmbH (http://www.metaways.de) * @author Philipp Schuele */ @@ -40,6 +40,7 @@ public static function suite () $suite->addTestSuite(Sales_Document_ControllerTest::class); $suite->addTestSuite(Sales_Document_ExportTest::class); $suite->addTestSuite(Sales_Document_JsonTest::class); + $suite->addTestSuite(Sales_Export_DebitorTest::class); $suite->addTestSuite(Sales_Export_ProductTest::class); return $suite; diff --git a/tests/tine20/Sales/Export/DebitorTest.php b/tests/tine20/Sales/Export/DebitorTest.php new file mode 100644 index 00000000000..ac7944209ac --- /dev/null +++ b/tests/tine20/Sales/Export/DebitorTest.php @@ -0,0 +1,53 @@ + + */ + +/** + * Sales Debitor export tests + * + * @package Sales + * @subpackage Export + */ +class Sales_Export_DebitorTest extends Sales_Document_Abstract +{ + public function testXlsExport() + { + $customer = $this->_createCustomer(); + $customer->{Sales_Model_Customer::FLD_DEBITORS}->addRecord(new Sales_Model_Debitor([ + Sales_Model_Debitor::FLD_NAME => 'unittest', + Sales_Model_Debitor::FLD_DIVISION_ID => Sales_Config::getInstance()->{Sales_Config::DEFAULT_DIVISION}, + ], true)); + $customer = Sales_Controller_Customer::getInstance()->update($customer); + + $export = new Sales_Export_DebitorXls(Tinebase_Model_Filter_FilterGroup::getFilterForModel( + Sales_Model_Debitor::class, [ + ['field' => Sales_Model_Debitor::FLD_CUSTOMER_ID, 'operator' => 'equals', 'value' => $customer->getId()], + ]), null, + [ + 'definitionId' => Tinebase_ImportExportDefinition::getInstance()->search(Tinebase_Model_Filter_FilterGroup::getFilterForModel(Tinebase_Model_ImportExportDefinition::class, [ + 'model' => Sales_Model_Debitor::class, + 'name' => 'debitor_xls' + ]))->getFirstRecord()->getId() + ]); + + $xls = Tinebase_TempFile::getTempPath(); + $export->generate(); + $export->write($xls); + + $reader = PHPExcel_IOFactory::createReader('Excel2007'); + $doc = $reader->load($xls); + $arrayData = $doc->getActiveSheet()->rangeToArray('A1:M4'); + + for ($i = 2; $i < 4; ++$i) { + $this->assertTrue(in_array($customer->getTitle(), $arrayData[$i])); + $this->assertTrue(in_array($customer->{Sales_Model_Customer::FLD_DEBITORS}->getFirstRecord()->{Sales_Model_Debitor::FLD_DIVISION_ID}->getTitle(), $arrayData[$i]) + || in_array($customer->{Sales_Model_Customer::FLD_DEBITORS}->getLastRecord()->{Sales_Model_Debitor::FLD_DIVISION_ID}->getTitle(), $arrayData[$i])); + } + } +} diff --git a/tine20/Sales/Export/DebitorXls.php b/tine20/Sales/Export/DebitorXls.php new file mode 100644 index 00000000000..73e69bfdedc --- /dev/null +++ b/tine20/Sales/Export/DebitorXls.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2024 Metaways Infosystems GmbH (http://www.metaways.de) + * + */ + +/** + * Sales xls generation class + * + * @package Sales + * @subpackage Export + */ +class Sales_Export_DebitorXls extends Tinebase_Export_Xls +{ + /** + * @var string $_applicationName + */ + protected $_applicationName = 'Sales'; + + /** + * default export definition name + * + * @var string + */ + protected $_defaultExportname = 'debitor_default_xls'; +} diff --git a/tine20/Sales/Export/definitions/debitor_xls.xml b/tine20/Sales/Export/definitions/debitor_xls.xml new file mode 100644 index 00000000000..c36198ec4f7 --- /dev/null +++ b/tine20/Sales/Export/definitions/debitor_xls.xml @@ -0,0 +1,13 @@ + + + Sales_Model_Debitor + debitor_xls + + + export + Sales_Export_DebitorXls + tinebase-action-export-xls + true + 600 + multi +