* Copyright (C) 2015 Frederic France * Copyright (C) 2016 Juanjo Menent * Copyright (C) 2020 Andreu Bisquerra Gaya * * 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 * along with this program. If not, see . */ /** * \file htdocs/admin/receiptprinter.php * \ingroup printing * \brief Page to setup receipt printer */ // Load Dolibarr environment require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/receiptprinter.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolreceiptprinter.class.php'; // Load translation files required by the page $langs->loadLangs(array("admin", "receiptprinter")); if (!$user->admin) { accessforbidden(); } $action = GETPOST('action', 'aZ09'); $mode = GETPOST('mode', 'alpha'); $printername = GETPOST('printername', 'alpha'); $printerid = GETPOST('printerid', 'int'); $parameter = GETPOST('parameter', 'alpha'); $template = GETPOST('template', 'alphanohtml'); $templatename = GETPOST('templatename', 'alpha'); $templateid = GETPOST('templateid', 'int'); $printer = new dolReceiptPrinter($db); if (!$mode) { $mode = 'config'; } // used in library escpos maybe useful if php doesn't support gzdecode if (!function_exists('gzdecode')) { /** * Gzdecode * * @param string $data data to deflate * @return string data deflated */ function gzdecode($data) { return gzinflate(substr($data, 10, -8)); } } /* * Action */ if ($action == 'addprinter' && $user->admin) { $error = 0; if (empty($printername)) { $error++; setEventMessages($langs->trans("PrinterNameEmpty"), null, 'errors'); } if (empty($parameter)) { setEventMessages($langs->trans("PrinterParameterEmpty"), null, 'warnings'); } if (!$error) { $db->begin(); $result = $printer->addPrinter($printername, GETPOST('printertypeid', 'int'), GETPOST('printerprofileid', 'int'), $parameter); if ($result > 0) { $error++; } if (!$error) { $db->commit(); setEventMessages($langs->trans("PrinterAdded", $printername), null); } else { $db->rollback(); dol_print_error($db); } } $action = ''; } if ($action == 'deleteprinter' && $user->admin) { $error = 0; if (empty($printerid)) { $error++; setEventMessages($langs->trans("PrinterIdEmpty"), null, 'errors'); } if (!$error) { $db->begin(); $result = $printer->deletePrinter($printerid); if ($result > 0) { $error++; } if (!$error) { $db->commit(); setEventMessages($langs->trans("PrinterDeleted", $printername), null); } else { $db->rollback(); dol_print_error($db); } } $action = ''; } if ($action == 'updateprinter' && $user->admin) { $error = 0; if (empty($printerid)) { $error++; setEventMessages($langs->trans("PrinterIdEmpty"), null, 'errors'); } if (!$error) { $db->begin(); $result = $printer->updatePrinter($printername, GETPOST('printertypeid', 'int'), GETPOST('printerprofileid', 'int'), $parameter, $printerid); if ($result > 0) { $error++; } if (!$error) { $db->commit(); setEventMessages($langs->trans("PrinterUpdated", $printername), null); } else { $db->rollback(); dol_print_error($db); } } $action = ''; } if ($action == 'testprinter' && $user->admin) { $error = 0; if (empty($printerid)) { $error++; setEventMessages($langs->trans("PrinterIdEmpty"), null, 'errors'); } if (!$error) { // test $ret = $printer->sendTestToPrinter($printerid); if ($ret == 0) { setEventMessages($langs->trans("TestSentToPrinter", $printername), null); } else { setEventMessages($printer->error, $printer->errors, 'errors'); } } $action = ''; } if ($action == 'testtemplate' && $user->admin) { $error = 0; // if (empty($printerid)) { // $error++; // setEventMessages($langs->trans("PrinterIdEmpty"), null, 'errors'); // } // if (! $error) { // test require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $object = new Facture($db); $object->initAsSpecimen(); //$object->fetch(18); //var_dump($object->lines); $ret = $printer->sendToPrinter($object, $templateid, 1); if ($ret == 0) { setEventMessages($langs->trans("TestTemplateToPrinter", $printername), null); } else { setEventMessages($printer->error, $printer->errors, 'errors'); } //} $action = ''; } if ($action == 'updatetemplate' && $user->admin) { $error = 0; if (empty($templateid)) { $error++; setEventMessages($langs->trans("TemplateIdEmpty"), null, 'errors'); } if (!$error) { $db->begin(); $result = $printer->updateTemplate($templatename, $template, $templateid); if ($result > 0) { $error++; } if (!$error) { $db->commit(); setEventMessages($langs->trans("TemplateUpdated", $templatename), null); } else { $db->rollback(); dol_print_error($db); } } $action = ''; } if ($action == 'addtemplate' && $user->admin) { $error = 0; if (empty($templatename)) { $error++; setEventMessages($langs->trans("TemplateNameEmpty"), null, 'errors'); } if (!$error) { $db->begin(); $result = $printer->addTemplate($templatename, $template); if ($result > 0) { $error++; } if (!$error) { $db->commit(); setEventMessages($langs->trans("TemplateAdded", $templatename), null); } else { $db->rollback(); dol_print_error($db); } } $action = ''; } if ($action == 'deletetemplate' && $user->admin) { $error = 0; if (empty($templateid)) { $error++; setEventMessages($langs->trans("TemplateIdEmpty"), null, 'errors'); } if (!$error) { $db->begin(); $result = $printer->deleteTemplate($templateid); if ($result > 0) { $error++; } if (!$error) { $db->commit(); setEventMessages($langs->trans("TemplateDeleted", $templatename), null); } else { $db->rollback(); dol_print_error($db); } } $action = ''; } /* * View */ $form = new Form($db); llxHeader('', $langs->trans("ReceiptPrinterSetup")); $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("ReceiptPrinterSetup"), $linkback, 'title_setup'); $head = receiptprinteradmin_prepare_head($mode); // mode = config if ($mode == 'config' && $user->admin) { print '
'; print ''; if ($action != 'editprinter') { print ''; } else { print ''; } print dol_get_fiche_head($head, $mode, $langs->trans("ModuleSetup"), -1, 'technic'); print ''.$langs->trans("ReceiptPrinterDesc")."

\n"; print ''."\n"; print ''; print ''; print ''; print ''; print ''; print ''; print "\n"; $ret = $printer->listprinters(); $nbofprinters = count($printer->listprinters); if ($action != 'editprinter') { print ''; print ''; $ret = $printer->selectTypePrinter(); print ''; $ret = $printer->selectProfilePrinter(); print ''; print ''; print ''; print ''; } if ($ret > 0) { setEventMessages($printer->error, $printer->errors, 'errors'); } else { for ($line = 0; $line < $nbofprinters; $line++) { print ''; if ($action == 'editprinter' && $printer->listprinters[$line]['rowid'] == $printerid) { print ''; print ''; $ret = $printer->selectTypePrinter($printer->listprinters[$line]['fk_type']); print ''; $ret = $printer->selectProfilePrinter($printer->listprinters[$line]['fk_profile']); print ''; print ''; print ''; print ''; } else { print ''; print ''; print ''; print ''; // edit icon print ''; print ''; } } } print '
'.$langs->trans("Name").''.$langs->trans("Type").''; $htmltext = $langs->trans("PROFILE_DEFAULT").' = '.$langs->trans("PROFILE_DEFAULT_HELP").'
'; $htmltext .= $langs->trans("PROFILE_SIMPLE").' = '.$langs->trans("PROFILE_SIMPLE_HELP").'
'; $htmltext .= $langs->trans("PROFILE_EPOSTEP").' = '.$langs->trans("PROFILE_EPOSTEP_HELP").'
'; $htmltext .= $langs->trans("PROFILE_P822D").' = '.$langs->trans("PROFILE_P822D_HELP").'
'; $htmltext .= $langs->trans("PROFILE_STAR").' = '.$langs->trans("PROFILE_STAR_HELP").'
'; print $form->textwithpicto($langs->trans("Profile"), $htmltext); print '
'.$langs->trans("Parameters").'
'.$printer->resprint.''.$printer->profileresprint.''; if ($action != 'editprinter') { print '
'; } print '
'.$printer->resprint.''.$printer->profileresprint.''; print $form->buttonsSaveCancel("Save", ''); print '
'.$printer->listprinters[$line]['name'].''.$langs->trans($printer->listprinters[$line]['fk_type_name']).''.$langs->trans($printer->listprinters[$line]['fk_profile_name']).''.$printer->listprinters[$line]['parameter'].''; print img_picto($langs->trans("Edit"), 'edit'); print ''; // delete icon print ''; print img_picto($langs->trans("Delete"), 'delete'); print ''; // test icon print ''; print img_picto($langs->trans("TestPrinter"), 'printer'); print '
'; print dol_get_fiche_end(); print '
'; print '
'; print load_fiche_titre($langs->trans("ReceiptPrinterTypeDesc"), '', '')."\n"; print ''."\n"; print ''; print ''; print ''; print ''; print ''; print '
'.$langs->trans("CONNECTOR_DUMMY").':'.$langs->trans("CONNECTOR_DUMMY_HELP").'
'.$langs->trans("CONNECTOR_NETWORK_PRINT").':'.$langs->trans("CONNECTOR_NETWORK_PRINT_HELP").'
'.$langs->trans("CONNECTOR_FILE_PRINT").':'.$langs->trans("CONNECTOR_FILE_PRINT_HELP").'
'.$langs->trans("CONNECTOR_WINDOWS_PRINT").':'.$langs->trans("CONNECTOR_WINDOWS_PRINT_HELP").'
'.$langs->trans("CONNECTOR_CUPS_PRINT").':'.$langs->trans("CONNECTOR_CUPS_PRINT_HELP").'
'; print '
'; } // mode = template if ($mode == 'template' && $user->admin) { print dol_get_fiche_head($head, $mode, $langs->trans("ModuleSetup"), -1, 'technic'); print '
'; print ''; if ($action != 'edittemplate') { print ''; } else { print ''; } print ''."\n"; print ''; print ''; print ''; print ''; print "\n"; $ret = $printer->listPrintersTemplates(); //print '
'.print_r($printer->listprinterstemplates, true).'
'; if ($ret > 0) { setEventMessages($printer->error, $printer->errors, 'errors'); } else { $max = count($printer->listprinterstemplates); for ($line = 0; $line < $max; $line++) { print ''; if ($action == 'edittemplate' && $printer->listprinterstemplates[$line]['rowid'] == $templateid) { print ''; print ''; print ''; print ''; } else { print ''; print ''; // edit icon print ''; } print ''; } } if ($action != 'edittemplate') { print ''; print ''; print ''; print ''; print ''; } print '
'.$langs->trans("Name").''.$langs->trans("Template").'
'; print ''; print ''; print $form->buttonsSaveCancel("Save", ''); print ''.$printer->listprinterstemplates[$line]['name'].''.dol_htmlentitiesbr($printer->listprinterstemplates[$line]['template']).''; print img_picto($langs->trans("Edit"), 'edit'); print ''; // delete icon print ''; print img_picto($langs->trans("Delete"), 'delete'); print ''; // test icon print ''; print img_picto($langs->trans("TestPrinterTemplate"), 'printer'); print '
'; print ''; print ''; print ''; print ''; print '
'; print '
'; print dol_get_fiche_end(); print '
'; print ''."\n"; print ''; print ''; print ''; print "\n"; $langs->loadLangs(array("bills", "companies")); foreach ($printer->tags as $key => $val) { print ''; print ''; print ''; } print '
'.$langs->trans("Tag").''.$langs->trans("Description").'
{'.$key.'}'.$langs->trans($val).'
'; } // End of page llxFooter(); $db->close();