2012-01-04 21:23:50 +01:00
< ? php
/* Copyright ( C ) 2003 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
* Copyright ( C ) 2004 - 2012 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2004 Sebastien Di Cintio < sdicintio @ ressource - toi . org >
* Copyright ( C ) 2004 Benoit Mortier < benoit . mortier @ opensides . be >
2018-10-27 14:43:12 +02:00
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ inodbox . com >
2012-01-04 21:23:50 +01:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2012-01-04 21:23:50 +01:00
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2019-09-23 21:55:30 +02:00
* along with this program . If not , see < https :// www . gnu . org / licenses />.
* or see https :// www . gnu . org /
2012-01-04 21:23:50 +01:00
*/
/**
* \defgroup tax Module taxes
2024-01-13 19:48:20 +01:00
* \brief Module pour inclure des functions de saisies des taxes ( tva ) et charges sociales
2012-01-04 21:23:50 +01:00
* \file htdocs / core / modules / modTax . class . php
* \ingroup tax
2021-03-20 13:55:43 +01:00
* \brief Description and activation file for the module taxes
2012-01-04 21:23:50 +01:00
*/
2020-04-10 10:59:32 +02:00
include_once DOL_DOCUMENT_ROOT . '/core/modules/DolibarrModules.class.php' ;
2012-01-04 21:23:50 +01:00
/**
2015-09-07 15:55:26 +02:00
* Class to describe and enable module Tax
2012-01-04 21:23:50 +01:00
*/
class modTax extends DolibarrModules
{
/**
* Constructor . Define names , constants , directories , boxes , permissions
*
* @ param DoliDB $db Database handler
*/
2019-02-25 20:35:59 +01:00
public function __construct ( $db )
2012-01-04 21:23:50 +01:00
{
global $conf ;
$this -> db = $db ;
$this -> numero = 500 ;
$this -> family = " financial " ;
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
2019-01-27 11:55:16 +01:00
$this -> name = preg_replace ( '/^mod/i' , '' , get_class ( $this ));
2012-01-04 21:23:50 +01:00
// Module description used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
$this -> description = " Gestion des taxes, charges sociales et dividendes " ;
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
$this -> version = 'dolibarr' ;
$this -> const_name = 'MAIN_MODULE_' . strtoupper ( $this -> name );
2020-04-10 10:59:32 +02:00
$this -> picto = 'bill' ;
2012-01-04 21:23:50 +01:00
// Data directories to create when module is enabled
$this -> dirs = array ( " /tax/temp " );
// Config pages
$this -> config_page_url = array ( " taxes.php " );
2015-09-07 15:29:51 +02:00
// Dependencies
2020-04-10 10:59:32 +02:00
$this -> hidden = false ; // A condition to hide module
$this -> depends = array (); // List of module class names as string that must be enabled if this module is enabled
$this -> requiredby = array (); // List of module ids to disable if this one is disabled
$this -> conflictwith = array (); // List of module class names as string this module is in conflict with
2022-09-27 20:48:47 +02:00
$this -> phpmin = array ( 7 , 0 ); // Minimum version of PHP required by module
2020-04-10 10:59:32 +02:00
$this -> langfiles = array ( " compta " , " bills " );
2012-01-04 21:23:50 +01:00
2015-09-07 15:40:55 +02:00
// Constants
2012-01-04 21:23:50 +01:00
$this -> const = array ();
2015-09-07 15:46:57 +02:00
// Boxes
2012-01-04 21:23:50 +01:00
$this -> boxes = array ();
// Permissions
$this -> rights = array ();
$this -> rights_class = 'tax' ;
2020-04-10 10:59:32 +02:00
$r = 0 ;
2012-01-04 21:23:50 +01:00
$r ++ ;
$this -> rights [ $r ][ 0 ] = 91 ;
2023-05-04 17:28:42 +02:00
$this -> rights [ $r ][ 1 ] = 'Read social contibutions' ;
2012-01-04 21:23:50 +01:00
$this -> rights [ $r ][ 2 ] = 'r' ;
2016-06-04 12:16:30 +02:00
$this -> rights [ $r ][ 3 ] = 0 ;
2012-01-04 21:23:50 +01:00
$this -> rights [ $r ][ 4 ] = 'charges' ;
$this -> rights [ $r ][ 5 ] = 'lire' ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 92 ;
2023-05-04 17:28:42 +02:00
$this -> rights [ $r ][ 1 ] = 'Create/modify social contributions' ;
2012-01-04 21:23:50 +01:00
$this -> rights [ $r ][ 2 ] = 'w' ;
$this -> rights [ $r ][ 3 ] = 0 ;
$this -> rights [ $r ][ 4 ] = 'charges' ;
$this -> rights [ $r ][ 5 ] = 'creer' ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 93 ;
2023-05-04 17:28:42 +02:00
$this -> rights [ $r ][ 1 ] = 'Delete social contributions' ;
2012-01-04 21:23:50 +01:00
$this -> rights [ $r ][ 2 ] = 'd' ;
$this -> rights [ $r ][ 3 ] = 0 ;
$this -> rights [ $r ][ 4 ] = 'charges' ;
$this -> rights [ $r ][ 5 ] = 'supprimer' ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 94 ;
2023-05-04 17:28:42 +02:00
$this -> rights [ $r ][ 1 ] = 'Export social contributions' ;
2012-01-04 21:23:50 +01:00
$this -> rights [ $r ][ 2 ] = 'r' ;
$this -> rights [ $r ][ 3 ] = 0 ;
$this -> rights [ $r ][ 4 ] = 'charges' ;
$this -> rights [ $r ][ 5 ] = 'export' ;
2016-09-30 13:02:13 +02:00
// Menus
2020-04-10 10:59:32 +02:00
$this -> menu = 1 ; // This module add menu entries. They are coded into menu manager.
2018-02-25 10:55:02 +01:00
2012-01-04 21:23:50 +01:00
// Exports
2020-04-10 10:59:32 +02:00
$r = 0 ;
2012-01-04 21:23:50 +01:00
$r ++ ;
2020-04-10 10:59:32 +02:00
$this -> export_code [ $r ] = $this -> rights_class . '_' . $r ;
$this -> export_label [ $r ] = 'Taxes et charges sociales, et leurs reglements' ;
$this -> export_permission [ $r ] = array ( array ( " tax " , " charges " , " export " ));
$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' );
$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' );
$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' );
$this -> export_sql_start [ $r ] = 'SELECT DISTINCT ' ;
$this -> export_sql_end [ $r ] = ' FROM ' . MAIN_DB_PREFIX . 'c_chargesociales as cc, ' . MAIN_DB_PREFIX . 'chargesociales as c' ;
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'paiementcharge as p ON p.fk_charge = c.rowid' ;
$this -> export_sql_end [ $r ] .= ' WHERE c.fk_type = cc.id' ;
$this -> export_sql_end [ $r ] .= ' AND c.entity IN (' . getEntity ( 'tax' ) . ')' ;
2018-02-25 10:55:02 +01:00
2016-06-06 14:37:06 +02:00
// Import social contributions
2016-06-01 13:24:27 +02:00
$r ++ ;
2020-04-10 10:59:32 +02:00
$this -> import_code [ $r ] = $this -> rights_class . '_' . $r ;
$this -> import_label [ $r ] = " ImportDataset_tax_contrib " ; // Translation key
$this -> import_icon [ $r ] = 'tax' ;
$this -> import_entities_array [ $r ] = array (); // We define here only fields that use another icon that the one defined into import_icon
$this -> import_tables_array [ $r ] = array ( 't' => MAIN_DB_PREFIX . 'chargesociales' );
$this -> import_fields_array [ $r ] = array ( 't.libelle' => " Label* " , 't.fk_type' => " Type " ,
2020-10-31 14:32:18 +01:00
't.amount' => " Amount* " , 't.date_ech' => " DateDue* " , 't.periode' => " PeriodEndDate* "
2016-06-01 13:24:27 +02:00
);
2018-02-25 10:55:02 +01:00
2020-04-10 10:59:32 +02:00
$this -> import_convertvalue_array [ $r ] = array (
2020-10-31 14:32:18 +01:00
't.fk_type' => array ( 'rule' => 'fetchidfromref' , 'classfile' => '/compta/sociales/class/cchargesociales.class.php' , 'class' => 'Cchargesociales' , 'method' => 'fetch' , 'element' => 'Cchargesociales' )
2016-06-01 13:24:27 +02:00
);
2020-04-10 10:59:32 +02:00
$this -> import_examplevalues_array [ $r ] = array ( 't.libelle' => " Social/fiscal contribution " , 't.fk_type' => " TAXPRO (must be id or code found into dictionary) " ,
2020-10-31 14:32:18 +01:00
't.date_ech' => " 2016-01-01 " , 't.periode' => " 2016-01-01 "
2016-06-01 13:24:27 +02:00
);
2018-02-25 10:55:02 +01:00
2016-06-06 14:37:06 +02:00
// Import Taxes
$r ++ ;
2020-04-10 10:59:32 +02:00
$this -> import_code [ $r ] = $this -> rights_class . '_' . $r ;
$this -> import_label [ $r ] = " ImportDataset_tax_vat " ; // Translation key
$this -> import_icon [ $r ] = 'tax' ;
$this -> import_entities_array [ $r ] = array (); // We define here only fields that use another icon that the one defined into import_icon
$this -> import_tables_array [ $r ] = array ( 't' => MAIN_DB_PREFIX . 'tva' );
$this -> import_fields_array [ $r ] = array ( 't.datep' => " DatePayment* " , 't.datev' => " DateValue* " , 't.label' => " Label* " , 't.fk_typepayment' => " PaymentMode* " ,
2020-10-31 14:32:18 +01:00
't.amount' => " Amount* " , 't.num_payment' => 'Numero'
2016-06-06 14:37:06 +02:00
);
2018-02-25 10:55:02 +01:00
2020-04-10 10:59:32 +02:00
$this -> import_convertvalue_array [ $r ] = array (
2020-10-31 14:32:18 +01:00
't.fk_typepayment' => array ( 'rule' => 'fetchidfromref' , 'classfile' => '/compta/paiement/class/cpaiement.class.php' , 'class' => 'Cpaiement' , 'method' => 'fetch' , 'element' => 'Cpaiement' )
2016-06-06 14:37:06 +02:00
);
2020-04-10 10:59:32 +02:00
$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) " ,
2020-10-31 14:32:18 +01:00
't.datep' => " 2016-04-02 " , 't.datev' => " 2016-03-31 " , 't.amount' => 1000 , 't.num_payment' => '123456'
2016-06-06 14:37:06 +02:00
);
2012-01-04 21:23:50 +01:00
}
/**
* Function called when module is enabled .
* The init function add constants , boxes , permissions and menus ( defined in constructor ) into Dolibarr database .
* It also creates data directories
*
2020-10-31 14:32:18 +01:00
* @ param string $options Options when enabling module ( '' , 'noboxes' )
2012-01-04 21:23:50 +01:00
* @ return int 1 if OK , 0 if KO
*/
2019-02-26 21:13:07 +01:00
public function init ( $options = '' )
2012-01-04 21:23:50 +01:00
{
global $conf ;
// Nettoyage avant activation
2012-03-03 17:37:45 +01:00
$this -> remove ( $options );
2012-01-04 21:23:50 +01:00
$sql = array ();
2019-01-27 11:55:16 +01:00
return $this -> _init ( $sql , $options );
2012-01-04 21:23:50 +01:00
}
}