diff --git a/htdocs/admin/receiptprinter.php b/htdocs/admin/receiptprinter.php index adba566eabb..fe20da1bef9 100644 --- a/htdocs/admin/receiptprinter.php +++ b/htdocs/admin/receiptprinter.php @@ -36,16 +36,20 @@ if (! $user->admin) accessforbidden(); $action = GETPOST('action','alpha'); $mode = GETPOST('mode','alpha'); -$value = GETPOST('value','alpha'); -$varname = GETPOST('varname', 'alpha'); + $printername = GETPOST('printername', 'alpha'); $printerid = GETPOST('printerid', 'int'); $parameter = GETPOST('parameter', 'alpha'); +$template = GETPOST('template', 'alpha'); +$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')) { function gzdecode($data) { @@ -170,6 +174,35 @@ if ($action == 'testprinter' && $user->admin) } +if ($action == 'updatetemplate' && $user->admin) +{ + $error=0; + $db->begin(); + if (empty($templateid)) { + $error++; + setEventMessages($langs->trans("TemplateIdEmpty"), null, 'errors'); + } + + if (! $error) + { + $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 = ''; +} + + /* * View */ @@ -309,76 +342,6 @@ if ($mode == 'config' && $user->admin) if ($mode == 'template' && $user->admin) { - $tags = array( - 'dol_align_left', - 'dol_align_center', - 'dol_align_right', - 'dol_use_font_a', - 'dol_use_font_b', - 'dol_use_font_c', - 'dol_bold', - '/dol_bold', - 'dol_double_height', - '/dol_double_height', - 'dol_double_width', - '/dol_double_width', - 'dol_underline', - '/dol_underline', - 'dol_underline_2dots', - '/dol_underline', - 'dol_emphasized', - '/dol_emphasized', - 'dol_switch_colors', - '/dol_switch_colors', - 'dol_print_barcode', - 'dol_print_barcode_customer_id', - 'dol_set_print_width_57', - 'dol_cut_paper_full', - 'dol_cut_paper_partial', - 'dol_open_drawer', - 'dol_activate_buzzer', - 'dol_print_qrcode', - 'dol_print_date', - 'dol_print_date_time', - 'dol_print_year', - 'dol_print_month_letters', - 'dol_print_month', - 'dol_print_day', - 'dol_print_day_letters', - 'dol_print_table', - 'dol_print_cutlery', - 'dol_print_payment', - 'dol_print_logo', - 'dol_print_logo_old', - 'dol_print_order_lines', - 'dol_print_order_tax', - 'dol_print_order_local_tax', - 'dol_print_order_total', - 'dol_print_order_number', - 'dol_print_order_number_unique', - 'dol_print_customer_first_name', - 'dol_print_customer_last_name', - 'dol_print_customer_mail', - 'dol_print_customer_telephone', - 'dol_print_customer_mobile', - 'dol_print_customer_skype', - 'dol_print_customer_tax_number', - 'dol_print_customer_account_balance', - 'dol_print_vendor_last_name', - 'dol_print_vendor_first_name', - 'dol_print_vendor_mail', - 'dol_print_customer_points', - 'dol_print_order_points', - 'dol_print_if_customer', - 'dol_print_if_vendor', - 'dol_print_if_happy_hour', - 'dol_print_if_num_order_unique', - 'dol_print_if_customer_points', - 'dol_print_if_order_points', - 'dol_print_if_customer_tax_number', - 'dol_print_if_customer_account_balance_positive', - ); - print '
'; print ''; if ($action!='edittemplate') { @@ -410,9 +373,9 @@ if ($mode == 'template' && $user->admin) if ($action=='edittemplate' && $printer->listprinterstemplates[$line]['rowid']==$templateid) { print ''; print ''; - // TODO doleditor - print ''; - print ''; + print ''; + print ''; + //print ''; print ''; print ''; } else { @@ -423,11 +386,11 @@ if ($mode == 'template' && $user->admin) print img_picto($langs->trans("Edit"),'edit'); print ''; // delete icon - print ''; + print ''; print img_picto($langs->trans("Delete"),'delete'); print ''; // test icon - print ''; + print ''; print img_picto($langs->trans("TestPrinterTemplate"),'printer'); print ''; } @@ -449,10 +412,10 @@ if ($mode == 'template' && $user->admin) print ''.$langs->trans("Tag").''; print ''.$langs->trans("Description").''; print "\n"; - for ($tag=0; $tag < count($tags); $tag++) { + for ($tag=0; $tag < count($printer->tags); $tag++) { $var = !$var; print ''; - print '<'.$tags[$tag].'>'.$langs->trans(strtoupper($tags[$tag])).''; + print '<'.$printer->tags[$tag].'>'.$langs->trans(strtoupper($printer->tags[$tag])).''; print ''; } print ''; diff --git a/htdocs/core/class/dolreceiptprinter.class.php b/htdocs/core/class/dolreceiptprinter.class.php index 57f8691f6e7..7a3f5ce4375 100644 --- a/htdocs/core/class/dolreceiptprinter.class.php +++ b/htdocs/core/class/dolreceiptprinter.class.php @@ -106,6 +106,7 @@ class dolReceiptPrinter extends Escpos const CONNECTOR_WINDOWS_PRINT = 4; //const CONNECTOR_JAVA = 5; var $db; + var $tags; var $error; var $errors; @@ -119,6 +120,76 @@ class dolReceiptPrinter extends Escpos function __construct($db) { $this->db=$db; + $this->tags = array( + 'dol_align_left', + 'dol_align_center', + 'dol_align_right', + 'dol_use_font_a', + 'dol_use_font_b', + 'dol_use_font_c', + 'dol_bold', + '/dol_bold', + 'dol_double_height', + '/dol_double_height', + 'dol_double_width', + '/dol_double_width', + 'dol_underline', + '/dol_underline', + 'dol_underline_2dots', + '/dol_underline', + 'dol_emphasized', + '/dol_emphasized', + 'dol_switch_colors', + '/dol_switch_colors', + 'dol_print_barcode', + 'dol_print_barcode_customer_id', + 'dol_set_print_width_57', + 'dol_cut_paper_full', + 'dol_cut_paper_partial', + 'dol_open_drawer', + 'dol_activate_buzzer', + 'dol_print_qrcode', + 'dol_print_date', + 'dol_print_date_time', + 'dol_print_year', + 'dol_print_month_letters', + 'dol_print_month', + 'dol_print_day', + 'dol_print_day_letters', + 'dol_print_table', + 'dol_print_cutlery', + 'dol_print_payment', + 'dol_print_logo', + 'dol_print_logo_old', + 'dol_print_order_lines', + 'dol_print_order_tax', + 'dol_print_order_local_tax', + 'dol_print_order_total', + 'dol_print_order_number', + 'dol_print_order_number_unique', + 'dol_print_customer_first_name', + 'dol_print_customer_last_name', + 'dol_print_customer_mail', + 'dol_print_customer_telephone', + 'dol_print_customer_mobile', + 'dol_print_customer_skype', + 'dol_print_customer_tax_number', + 'dol_print_customer_account_balance', + 'dol_print_vendor_last_name', + 'dol_print_vendor_first_name', + 'dol_print_vendor_mail', + 'dol_print_customer_points', + 'dol_print_order_points', + 'dol_print_if_customer', + 'dol_print_if_vendor', + 'dol_print_if_happy_hour', + 'dol_print_if_num_order_unique', + 'dol_print_if_customer_points', + 'dol_print_if_order_points', + 'dol_print_if_customer_tax_number', + 'dol_print_if_customer_account_balance_positive', + ); + } /** @@ -216,7 +287,7 @@ class dolReceiptPrinter extends Escpos $error = 0; $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'printer_receipt'; $sql.= ' (name, fk_type, parameter, entity)'; - $sql.= ' VALUES ("'.$name.'", '.$type.', "'.$parameter.'", '.$conf->entity.')'; + $sql.= ' VALUES ("'.$this->db->escape($name).'", '.$type.', "'.$this->db->escape($parameter).'", '.$conf->entity.')'; $resql = $this->db->query($sql); if (! $resql) { $error++; @@ -239,9 +310,9 @@ class dolReceiptPrinter extends Escpos global $conf; $error = 0; $sql = 'UPDATE '.MAIN_DB_PREFIX.'printer_receipt'; - $sql.= ' SET name="'.$name.'"'; + $sql.= ' SET name="'.$this->db->escape($name).'"'; $sql.= ', fk_type='.$type; - $sql.= ', parameter="'.$parameter.'"'; + $sql.= ', parameter="'.$this->db->escape($parameter).'"'; $sql.= ' WHERE rowid='.$printerid; $resql = $this->db->query($sql); if (! $resql) { @@ -271,6 +342,31 @@ class dolReceiptPrinter extends Escpos return $error; } + /** + * Function to Update a printer template in db + * + * @param string $name Template name + * @param int $template Template + * @param int $templateid Template id + * @return int 0 if OK; >0 if KO + */ + function UpdateTemplate($name, $template, $templateid) + { + global $conf; + $error = 0; + $sql = 'UPDATE '.MAIN_DB_PREFIX.'printer_receipt_template'; + $sql.= ' SET name="'.$this->db->escape($name).'"'; + $sql.= ', template="'.$this->db->escape($template).'"'; + $sql.= ' WHERE rowid='.$templateid; + $resql = $this->db->query($sql); + if (! $resql) { + $error++; + $this->errors[] = $this->db->lasterror; + } + return $error; + } + + /** * Function to Send Test page to Printer *