-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathCreditNote.php
executable file
·94 lines (82 loc) · 3.8 KB
/
CreditNote.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
/*************************************************************************************/
/* This file is part of the module CreditNote */
/* */
/* For the full copyright and license information, please view the LICENSE.txt */
/* file that was distributed with this source code. */
/*************************************************************************************/
namespace CreditNote;
use Propel\Runtime\Connection\ConnectionInterface;
use Symfony\Component\DependencyInjection\Loader\Configurator\ServicesConfigurator;
use Symfony\Component\Finder\Finder;
use Thelia\Model\ModuleQuery;
use Thelia\Module\BaseModule;
use Thelia\Install\Database;
/**
* @author Gilles Bourgeat >[email protected]>
*/
class CreditNote extends BaseModule
{
const DOMAIN_MESSAGE = "creditnote";
const PARSED_DATA = 'parsedData';
const CONFIG_KEY_REF_PREFIX = 'ref_prefix';
const CONFIG_KEY_REF_MIN_LENGTH = 'ref_min_length';
const CONFIG_KEY_REF_INCREMENT = 'ref_increment';
const CONFIG_KEY_INVOICE_REF_PREFIX = 'invoice_ref_prefix';
const CONFIG_KEY_INVOICE_REF_MIN_LENGTH = 'invoice_ref_min_length';
const CONFIG_KEY_INVOICE_REF_INCREMENT = 'invoice_ref_increment';
const CONFIG_KEY_INVOICE_REF_WITH_THELIA_ORDER = 'invoice_ref_with_thelia_order';
/**
* @param ConnectionInterface $con
*/
public function postActivation(ConnectionInterface $con = null): void
{
if (!$this->getConfigValue('is_initialized', false)) {
$database = new Database($con);
$database->insertSql(null, [__DIR__ . "/Config/thelia.sql", __DIR__ . "/Config/insert.sql"]);
$this->setConfigValue(self::CONFIG_KEY_REF_INCREMENT, 1);
$this->setConfigValue(self::CONFIG_KEY_REF_PREFIX, 'CN');
$this->setConfigValue(self::CONFIG_KEY_REF_MIN_LENGTH, 8);
$this->setConfigValue(self::CONFIG_KEY_INVOICE_REF_INCREMENT, 1);
$this->setConfigValue(self::CONFIG_KEY_INVOICE_REF_PREFIX, 'FA');
$this->setConfigValue(self::CONFIG_KEY_INVOICE_REF_MIN_LENGTH, 8);
$this->setConfigValue(self::CONFIG_KEY_INVOICE_REF_WITH_THELIA_ORDER, 0);
$this->setConfigValue('is_initialized', true);
}
}
public function update($currentVersion, $newVersion, ConnectionInterface $con = null): void
{
if (null === self::getConfigValue(self::CONFIG_KEY_INVOICE_REF_WITH_THELIA_ORDER)) {
self::setConfigValue(
self::CONFIG_KEY_INVOICE_REF_WITH_THELIA_ORDER,
0
);
}
$sqlToExecute = [];
$finder = new Finder();
$sort = function (\SplFileInfo $a, \SplFileInfo $b) {
$a = strtolower(substr($a->getRelativePathname(), 0, -4));
$b = strtolower(substr($b->getRelativePathname(), 0, -4));
return version_compare($a, $b);
};
$files = $finder->name('*.sql')
->in(__DIR__ ."/Config/Update/")
->sort($sort);
foreach ($files as $file) {
if (version_compare($file->getFilename(), $currentVersion, ">")) {
$sqlToExecute[$file->getFilename()] = $file->getRealPath();
}
}
$database = new Database($con);
foreach ($sqlToExecute as $version => $sql) {
$database->insertSql(null, [$sql]);
}
}
public static function configureServices(ServicesConfigurator $servicesConfigurator): void
{
$servicesConfigurator->load(self::getModuleCode().'\\', __DIR__)
->exclude([THELIA_MODULE_DIR . ucfirst(self::getModuleCode()). "/I18n/*"])
->autowire(true)
->autoconfigure(true);
}
}