Passed
Push — main ( 4b1ce6...7d2b49 )
by Rafael
80:06
created

Tax::__construct()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 132
Code Lines 88

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 88
nc 1
nop 1
dl 0
loc 132
rs 8.2617
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/* Copyright (C) 2003       Rodolphe Quiedeville <[email protected]>
4
 * Copyright (C) 2004-2012	Laurent Destailleur  <[email protected]>
5
 * Copyright (C) 2004		Sebastien Di Cintio  <[email protected]>
6
 * Copyright (C) 2004		Benoit Mortier       <[email protected]>
7
 * Copyright (C) 2005-2012	Regis Houssin        <[email protected]>
8
 * Copyright (C) 2024       Rafael San José             <[email protected]>
9
 *
10
 * This program is free software; you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation; either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 * or see https://www.gnu.org/
23
 */
24
25
/**
26
 *      \defgroup   tax     Module taxes
27
 *      \brief      Module pour inclure des functions de saisies des taxes (tva) et charges sociales
28
 *      \file       htdocs/core/modules/modTax.class.php
29
 *      \ingroup    tax
30
 *      \brief      Description and activation file for the module taxes
31
 */
32
33
namespace Dolibarr\Modules;
34
35
use Dolibarr\Core\Base\DolibarrModules;
36
use DoliDB;
37
38
/**
39
 *  Class to describe and enable module Tax
40
 */
41
class Tax extends DolibarrModules
42
{
43
    /**
44
     *   Constructor. Define names, constants, directories, boxes, permissions
45
     *
46
     * @param DoliDB $db Database handler
47
     */
48
    public function __construct($db)
49
    {
50
        global $conf;
51
52
        $this->db = $db;
0 ignored issues
show
Documentation Bug introduced by
It seems like $db of type DoliDB is incompatible with the declared type Dolibarr\Core\Base\DoliDB of property $db.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
53
        $this->numero = 500;
54
55
        $this->family = "financial";
56
        // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
57
        $this->name = preg_replace('/^mod/i', '', get_class($this));
58
        // Module description used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
59
        $this->description = "Gestion des taxes, charges sociales et dividendes";
60
61
        // Possible values for version are: 'development', 'experimental', 'dolibarr' or version
62
        $this->version = 'dolibarr';
63
64
        $this->const_name = 'MAIN_MODULE_' . static::getNameOf($this->name); // strtoupper($this->name);
65
        $this->picto = 'bill';
66
67
        // Data directories to create when module is enabled
68
        $this->dirs = array("/tax/temp");
69
70
        // Config pages
71
        $this->config_page_url = array("taxes.php");
72
73
        // Dependencies
74
        $this->hidden = false; // A condition to hide module
75
        $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled
76
        $this->requiredby = array(); // List of module ids to disable if this one is disabled
77
        $this->conflictwith = array(); // List of module class names as string this module is in conflict with
78
        $this->phpmin = array(7, 0); // Minimum version of PHP required by module
79
        $this->langfiles = array("compta", "bills");
80
81
        // Constants
82
        $this->const = array();
83
84
        // Boxes
85
        $this->boxes = array();
86
87
        // Permissions
88
        $this->rights = array();
89
        $this->rights_class = 'tax';
90
        $r = 0;
91
92
        $r++;
93
        $this->rights[$r][0] = 91;
94
        $this->rights[$r][1] = 'Read social contibutions';
95
        $this->rights[$r][2] = 'r';
96
        $this->rights[$r][3] = 0;
97
        $this->rights[$r][4] = 'charges';
98
        $this->rights[$r][5] = 'lire';
99
100
        $r++;
101
        $this->rights[$r][0] = 92;
102
        $this->rights[$r][1] = 'Create/modify social contributions';
103
        $this->rights[$r][2] = 'w';
104
        $this->rights[$r][3] = 0;
105
        $this->rights[$r][4] = 'charges';
106
        $this->rights[$r][5] = 'creer';
107
108
        $r++;
109
        $this->rights[$r][0] = 93;
110
        $this->rights[$r][1] = 'Delete social contributions';
111
        $this->rights[$r][2] = 'd';
112
        $this->rights[$r][3] = 0;
113
        $this->rights[$r][4] = 'charges';
114
        $this->rights[$r][5] = 'supprimer';
115
116
        $r++;
117
        $this->rights[$r][0] = 94;
118
        $this->rights[$r][1] = 'Export social contributions';
119
        $this->rights[$r][2] = 'r';
120
        $this->rights[$r][3] = 0;
121
        $this->rights[$r][4] = 'charges';
122
        $this->rights[$r][5] = 'export';
123
124
125
        // Menus
126
        $this->menu = 1; // This module add menu entries. They are coded into menu manager.
127
128
129
        // Exports
130
        $r = 0;
131
132
        $r++;
133
        $this->export_code[$r] = $this->rights_class . '_' . $r;
134
        $this->export_label[$r] = 'Taxes et charges sociales, et leurs reglements';
135
        $this->export_permission[$r] = array(array("tax", "charges", "export"));
136
        $this->export_fields_array[$r] = array('cc.libelle' => "Type", 'c.rowid' => "IdSocialContribution", 'c.libelle' => "Label", 'c.date_ech' => 'DateDue', 'c.periode' => 'Period', 'c.amount' => "AmountExpected", "c.paye" => "Status", 'p.rowid' => 'PaymentId', 'p.datep' => 'DatePayment', 'p.amount' => 'AmountPayment', 'p.num_paiement' => 'Numero');
137
        $this->export_TypeFields_array[$r] = array('cc.libelle' => "List:c_chargesociales:libelle:id", 'c.libelle' => "Text", 'c.date_ech' => 'Date', 'c.periode' => 'Period', 'c.amount' => "Numeric", "c.paye" => "Boolean", 'p.datep' => 'Date', 'p.amount' => 'Numeric', 'p.num_paiement' => 'Numeric');
138
        $this->export_entities_array[$r] = array('cc.libelle' => "tax_type", 'c.rowid' => "tax", 'c.libelle' => 'tax', 'c.date_ech' => 'tax', 'c.periode' => 'tax', 'c.amount' => "tax", "c.paye" => "tax", 'p.rowid' => 'payment', 'p.datep' => 'payment', 'p.amount' => 'payment', 'p.num_paiement' => 'payment');
139
140
        $this->export_sql_start[$r] = 'SELECT DISTINCT ';
141
        $this->export_sql_end[$r] = ' FROM ' . MAIN_DB_PREFIX . 'c_chargesociales as cc, ' . MAIN_DB_PREFIX . 'chargesociales as c';
142
        $this->export_sql_end[$r] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'paiementcharge as p ON p.fk_charge = c.rowid';
143
        $this->export_sql_end[$r] .= ' WHERE c.fk_type = cc.id';
144
        $this->export_sql_end[$r] .= ' AND c.entity IN (' . getEntity('tax') . ')';
145
146
        // Import social contributions
147
        $r++;
148
        $this->import_code[$r] = $this->rights_class . '_' . $r;
149
        $this->import_label[$r] = "ImportDataset_tax_contrib"; // Translation key
150
        $this->import_icon[$r] = 'tax';
151
        $this->import_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into import_icon
152
        $this->import_tables_array[$r] = array('t' => MAIN_DB_PREFIX . 'chargesociales');
153
        $this->import_fields_array[$r] = array('t.libelle' => "Label*", 't.fk_type' => "Type",
154
            't.amount' => "Amount*", 't.date_ech' => "DateDue*", 't.periode' => "PeriodEndDate*"
155
        );
156
157
        $this->import_convertvalue_array[$r] = array(
158
            't.fk_type' => array('rule' => 'fetchidfromref', 'classfile' => '/compta/sociales/class/cchargesociales.class.php', 'class' => 'Cchargesociales', 'method' => 'fetch', 'element' => 'Cchargesociales')
159
        );
160
        $this->import_examplevalues_array[$r] = array('t.libelle' => "Social/fiscal contribution", 't.fk_type' => "TAXPRO (must be id or code found into dictionary)",
161
            't.date_ech' => "2016-01-01", 't.periode' => "2016-01-01"
162
        );
163
164
        // Import Taxes
165
        $r++;
166
        $this->import_code[$r] = $this->rights_class . '_' . $r;
167
        $this->import_label[$r] = "ImportDataset_tax_vat"; // Translation key
168
        $this->import_icon[$r] = 'tax';
169
        $this->import_entities_array[$r] = array(); // We define here only fields that use another icon that the one defined into import_icon
170
        $this->import_tables_array[$r] = array('t' => MAIN_DB_PREFIX . 'tva');
171
        $this->import_fields_array[$r] = array('t.datep' => "DatePayment*", 't.datev' => "DateValue*", 't.label' => "Label*", 't.fk_typepayment' => "PaymentMode*",
172
            't.amount' => "Amount*", 't.num_payment' => 'Numero'
173
        );
174
175
        $this->import_convertvalue_array[$r] = array(
176
            't.fk_typepayment' => array('rule' => 'fetchidfromref', 'classfile' => '/compta/paiement/class/cpaiement.class.php', 'class' => 'Cpaiement', 'method' => 'fetch', 'element' => 'Cpaiement')
177
        );
178
        $this->import_examplevalues_array[$r] = array('t.label' => "VAT Payment 1st quarter 2016", 't.fk_typepayment' => "CHQ (must be id or code found into dictionary)",
179
            't.datep' => "2016-04-02", 't.datev' => "2016-03-31", 't.amount' => 1000, 't.num_payment' => '123456'
180
        );
181
    }
182
183
184
    /**
185
     *      Function called when module is enabled.
186
     *      The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
187
     *      It also creates data directories
188
     *
189
     * @param string $options Options when enabling module ('', 'noboxes')
190
     * @return     int                 1 if OK, 0 if KO
191
     */
192
    public function init($options = '')
193
    {
194
        global $conf;
195
196
        // Nettoyage avant activation
197
        $this->remove($options);
198
199
        $sql = array();
200
201
        return $this->_init($sql, $options);
202
    }
203
}
204