2015-11-01 00:58:08 +01:00
< ? php
/* Copyright ( C ) 2014 - 2015 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2015 Frederic France < frederic . france @ free . fr >
*
* 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
* the Free Software Foundation ; either version 3 of the License , or
* ( 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 />.
2015-11-01 00:58:08 +01:00
*/
/** \defgroup printing Module Receipt Printer
* \brief Module for activation of printing icon to make receipt ticket
*/
/**
* \file htdocs / core / modules / modReceiptPrinter . class . php
* \ingroup printing
2021-03-20 13:55:43 +01:00
* \brief Description and activation file for the module Receipt Printer
2015-11-01 00:58:08 +01:00
*/
2020-04-10 10:59:32 +02:00
include_once DOL_DOCUMENT_ROOT . '/core/modules/DolibarrModules.class.php' ;
2015-11-01 00:58:08 +01:00
/**
* Class to describe and activate module Receipt Printer
*/
class modReceiptPrinter extends DolibarrModules
{
2020-10-31 14:32:18 +01:00
/**
* Constructor
*
* @ param DoliDB $db Database handler
*/
public function __construct ( $db )
{
$this -> db = $db ;
$this -> numero = 67000 ;
// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
// It is used to group modules in module setup page
$this -> family = " interface " ;
$this -> module_position = '53' ;
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
$this -> name = preg_replace ( '/^mod/i' , '' , get_class ( $this ));
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
$this -> description = " ReceiptPrinterDesc " ;
2017-08-22 18:34:58 +02:00
// Possible values for version are: 'development', 'experimental', 'dolibarr' or 'dolibarr_deprecated' or version
2020-11-10 22:19:46 +01:00
$this -> version = 'dolibarr' ;
2020-10-31 14:32:18 +01:00
$this -> const_name = 'MAIN_MODULE_' . strtoupper ( $this -> name );
// Name of image file used for this module.
// If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue'
// If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module'
$this -> picto = 'printer' ;
2015-11-01 00:58:08 +01:00
2020-10-31 14:32:18 +01:00
// Data directories to create when module is enabled.
$this -> dirs = array ();
2015-11-01 00:58:08 +01:00
2020-10-31 14:32:18 +01:00
// Config pages
$this -> config_page_url = array ( " receiptprinter.php " );
2015-11-01 00:58:08 +01:00
2020-10-31 14:32:18 +01:00
// Dependencies
$this -> hidden = false ; // A condition to hide module
2020-04-10 10:59:32 +02:00
$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-10-31 14:32:18 +01:00
$this -> need_dolibarr_version = array ( 3 , 9 , - 2 ); // Minimum version of Dolibarr required by module
$this -> conflictwith = array ();
$this -> langfiles = array ( " receiptprinter " );
// Constants
$this -> const = array ();
// Boxes
$this -> boxes = array ();
// Permissions
$this -> rights = array ();
$this -> rights_class = 'receiptprinter' ;
$r = 0 ;
// $this->rights[$r][0] Id permission (unique tous modules confondus)
2024-01-13 19:48:20 +01:00
// $this->rights[$r][1] Libelle par default si traduction de cle "PermissionXXX" non trouvee (XXX = Id permission)
2020-10-31 14:32:18 +01:00
// $this->rights[$r][2] Non utilise
2024-01-13 19:48:20 +01:00
// $this->rights[$r][3] 1=Permis par default, 0=Non permis par default
2020-10-31 14:32:18 +01:00
// $this->rights[$r][4] Niveau 1 pour nommer permission dans code
// $this->rights[$r][5] Niveau 2 pour nommer permission dans code
$r ++ ;
2021-04-05 13:52:19 +02:00
$this -> rights [ $r ][ 0 ] = 67001 ;
2020-10-31 14:32:18 +01:00
$this -> rights [ $r ][ 1 ] = 'ReceiptPrinter' ;
$this -> rights [ $r ][ 2 ] = 'r' ;
$this -> rights [ $r ][ 3 ] = 0 ;
$this -> rights [ $r ][ 4 ] = 'read' ;
// Main menu entries
2023-06-26 15:34:09 +02:00
$this -> menu = array (); // List of menus to add
2020-10-31 14:32:18 +01:00
$r = 0 ;
// This is to declare the Top Menu entry:
//$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=home,fk_leftmenu=admintools', // Put 0 if this is a top menu
// 'type'=>'left', // This is a Top menu entry
// 'titre'=>'MenuDirectPrinting',
// 'mainmenu'=>'printing',
// 'url'=>'/printing/index.php',
// 'langs'=>'printing', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
// 'position'=>300,
// 'enabled'=>'$conf->printing->enabled && preg_match(\'/^(admintools|all)/\',$leftmenu)',
// 'perms'=>'$user->rights->printing->read', // Use 'perms'=>'1' if you want your menu with no permission rules
// 'target'=>'',
// 'user'=>0); // 0=Menu for internal users, 1=external users, 2=both
$r ++ ;
}
/**
* 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
*
* @ param string $options Options when enabling module ( '' , 'noboxes' )
* @ return int 1 if OK , 0 if KO
*/
public function init ( $options = '' )
{
2024-01-24 03:34:03 +01:00
global $langs ;
$result = $this -> _load_tables ( '/install/mysql/' , 'receiptprinter' );
if ( $result < 0 ) {
return - 1 ; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
}
2021-08-27 18:18:50 +02:00
2020-10-31 14:32:18 +01:00
// Clean before activation
$this -> remove ( $options );
2024-01-24 03:34:03 +01:00
// @TODO Move create/delete into sql file and insert into data file
2020-10-31 14:32:18 +01:00
$templateexample = '{dol_align_center}\r\n{dol_print_text}{dol_value_mysoc_name}\r\n{dol_print_text}{dol_value_mysoc_address}\r\n{dol_print_text}{dol_value_mysoc_zip}{dol_value_mysoc_town}\r\n{dol_line_feed}\r\n{dol_print_text}Facture {dol_value_object_ref}\r\n{dol_line_feed}\r\n{dol_align_left}\r\n{dol_print_object_lines}\r\n{dol_line_feed}\r\n{dol_print_object_tax}\r\n{dol_line_feed}\r\n{dol_print_object_total}\r\n{dol_line_feed}\r\n{dol_cut_paper_full}' ;
$sql = array (
" CREATE TABLE IF NOT EXISTS " . MAIN_DB_PREFIX . " printer_receipt (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), fk_type integer, fk_profile integer, parameter varchar(128), entity integer) ENGINE=innodb; " ,
" CREATE TABLE IF NOT EXISTS " . MAIN_DB_PREFIX . " printer_receipt_template (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), template text, entity integer) ENGINE=innodb; " ,
2021-08-27 18:18:50 +02:00
" DELETE FROM " . MAIN_DB_PREFIX . " printer_receipt_template WHERE name = ' " . $this -> db -> escape ( $langs -> trans ( 'Example' )) . " '; " ,
" INSERT INTO " . MAIN_DB_PREFIX . " printer_receipt_template (name,template,entity) VALUES (' " . $this -> db -> escape ( $langs -> trans ( 'Example' )) . " ', ' " . $this -> db -> escape ( $templateexample ) . " ', 1); " ,
2020-01-28 15:31:03 +01:00
);
2024-01-24 03:34:03 +01:00
2020-10-31 14:32:18 +01:00
return $this -> _init ( $sql , $options );
}
2015-11-01 00:58:08 +01:00
}