BUTTON IN THE DATA AREA [message #5085] |
Mon, 19 October 2015 00:30 |
edortizq
Messages: 82 Registered: August 2008 Location: Ecuador
|
Member |
|
|
Dear Tony
I'm trying to add a button in the data area but I can't get radicore do this.
This is my screen file:
$structure['xsl_file'] = 'std.detail1.xsl';
$structure['tables']['main'] = 'tarifa';
// identify the column specs - may use 'width' or 'class'
$structure['main']['columns'][] = array('width' => '25%');
$structure['main']['columns'][] = array('width' => '*');
$structure['main']['fields'][] = array('descripcionevento' => 'Evento');
$structure['main']['fields'][] = array('idlocalidad' => 'Id.Localidad');
$structure['main']['fields'][] = array('descripciontarifa' => 'Tarifa');
$structure['main']['fields'][] = array('idtipotarifa' => 'Id.Tipo Tarifa');
$structure['main']['fields'][] = array('idformatoimpresion' => 'Formato');
$structure['main']['fields'][] = array('tarifa' => 'Tarifa');
$structure['main']['fields'][] = array('aimprimir' => 'Cantidad a Imprimir');
$structure['main']['fields'][] = array('printbutton' => '');
$structure['main']['fields'][] = array('copiable' => 'Se copia a otros Eventos');
$structure['main']['fields'][] = array('secuenciasri' => 'Lleva secuencia SRI');
$structure['main']['fields'][] = array('maxticketstarifa' => 'Maximo de Tickets');
$structure['main']['fields'][] = array('tasaiva' => 'Tasa de IVA');
$structure['main']['fields'][] = array('tasaimpuesto1' => 'Tasa de Impuesto');
$structure['main']['fields'][] = array('descimpuesto1' => 'Descripción del Impuesto');
$structure['main']['fields'][] = array('tasaimpuesto2' => 'Tasa de Impuesto');
$structure['main']['fields'][] = array('descimpuesto2' => 'Descripcion del Impuesto');
$structure['main']['fields'][] = array('cargo1' => 'Valor por cargo');
$structure['main']['fields'][] = array('cargo2' => 'Valor por Cargo');
$structure['main']['fields'][] = array('estado' => 'Estado');
$structure['main']['fields'][] = array('fechahoracreacion' => 'Fecha de Creación');
$structure['main']['fields'][] = array('fechahoraactualizacion' => 'Fecha de Actualización');
[/quote]
And this is my _cm_changeConfig() method:
function _cm_changeConfig ($where, $fieldarray)
// $where = a string in SQL 'where' format.
// $fieldarray = the contents of $where as an array.
{
if ($GLOBALS['mode'] == 'update') {
$prev_script = getPreviousScript();
if ($prev_script == '/access/tarifa_print_ticket(list2).php') {
unset ($GLOBALS['act_buttons']['submit']);
unset ($GLOBALS['act_buttons']['submitnext']);
unset ($GLOBALS['act_buttons']['copy']);
unset ($GLOBALS['act_buttons']['paste']);
$this->fieldspec['printbutton'] = array ('type'=> 'string',
'control'=> 'input',
'subtype' => 'button',
'value' => 'IMPRIMIR',
'task_id' => 'ticket(add4)');
$this->fieldspec['idlocalidad']['noedit'] = 'y';
$this->fieldspec['descripciontarifa']['noedit'] = 'y';
$this->fieldspec['idtipotarifa']['noedit'] = 'y';
$this->fieldspec['idformatoimpresion']['noedit'] = 'y';
$this->fieldspec['tarifa']['noedit'] = 'y';
$fieldarray['aimprimir'] = 0;
$this->fieldspec['aimprimir'] = array ('type'=> 'integer',
'size'=> 5,
'minvalue' => 0,
'maxvalue' => 1000,
'default'=> 10,
'nondb'=>'y');
$this->fieldspec['copiable']['nodisplay'] = 'y';
$this->fieldspec['secuenciasri']['nodisplay'] = 'y';
$this->fieldspec['maxticketstarifa']['nodisplay'] = 'y';
$this->fieldspec['tasaiva']['nodisplay'] = 'y';
$this->fieldspec['tasaimpuesto1']['nodisplay'] = 'y';
$this->fieldspec['descimpuesto1']['nodisplay'] = 'y';
$this->fieldspec['tasaimpuesto2']['nodisplay'] = 'y';
$this->fieldspec['descimpuesto2']['nodisplay'] = 'y';
$this->fieldspec['cargo1']['nodisplay'] = 'y';
$this->fieldspec['cargo2']['nodisplay'] = 'y';
$this->fieldspec['estado']['nodisplay'] = 'y';
$this->fieldspec['fechahoracreacion']['nodisplay'] = 'y';
$this->fieldspec['fechahoraactualizacion']['nodisplay'] = 'y';
}
} // if
return $fieldarray;
} // _cm_changeConfig
And this is my entry in the language_text.inc file:
// navigation button details for subsystem XXX
$array['printbutton'] = 'IMPRIMIR';
You can find attached the screen where you can see it's only added the "aimprimir" non-db field, but not the button at all.
My Radicore version is 1.67.
Please let me know what I'm doing wrong.
Thanks for advance!!
|
|
|
Re: BUTTON IN THE DATA AREA [message #5086 is a reply to message #5085] |
Mon, 19 October 2015 05:18 |
AJM
Messages: 2368 Registered: April 2006 Location: Surrey, UK
|
Senior Member |
|
|
You are not executing an ADD transaction, therefore you need to follow what it says it FAQ137:
"Unless you are in an ADD transaction you will also need to ensure that this non-database field appears in the data array otherwise it will not appear in the screen. You will need code similar to the following:
$this->fieldarray['add_attachment'] = null;"
Tony Marston
http://www.tonymarston.net
http://www.radicore.org
|
|
|
Re: BUTTON IN THE DATA AREA [message #5087 is a reply to message #5086] |
Mon, 19 October 2015 10:57 |
edortizq
Messages: 82 Registered: August 2008 Location: Ecuador
|
Member |
|
|
Thanks for your answer.
I've tried the following changes in _cm_chageConfig:
first try, nothing happens
$this->fieldarray['printbutton'] = null;
$this->fieldspec['printbutton'] = array ('type'=> 'string',
'control'=> 'input',
'subtype' => 'button',
'value' => 'IMPRIMIR',
'task_id' => 'ticket(add4)');
second try, nothing happens
$this->fieldarray['printbutton'] = null;
$this->fieldspec['printbutton'] = array ('type'=> 'string',
'control'=> 'input',
'subtype' => 'button',
'value' => 'IMPRIMIR',
'task_id' => 'ticket(add4)',
'nondb'=>'y');
third try, Fatal Error: Mysql: Unkknow column ´tarifa.printbutton´.........
$fieldarray['printbutton'] = null;
$this->fieldspec['printbutton'] = array ('type'=> 'string',
'control'=> 'input',
'subtype' => 'button',
'value' => 'IMPRIMIR',
'task_id' => 'ticket(add4)');
fourth try, the "button" appears like a string input field
$fieldarray['printbutton'] = null;
$this->fieldspec['printbutton'] = array ('type'=> 'string',
'control'=> 'input',
'subtype' => 'button',
'value' => 'IMPRIMIR',
'task_id' => 'ticket(add4)',
'nondb'=>'y');
Sorry to bother, and thanks for your patience.
|
|
|
Re: BUTTON IN THE DATA AREA [message #5090 is a reply to message #5087] |
Tue, 20 October 2015 09:09 |
AJM
Messages: 2368 Registered: April 2006 Location: Surrey, UK
|
Senior Member |
|
|
It may be because you are still using a very old version of the framework - 1.67. Try the latest version, which is 1.91.
This is what I have in one of my tasks to display an "Add Attachment" button.
In the _cm_changeConfig() method I have the following:
$this->fieldspec['add_attachment'] = array('type' => 'string',
'control' => 'input',
'task_id' => 'py_email_attachment(add2)');
$fieldarray['add_attachment'] = null;
In my language_text.inc file I have the following:
$array['add_attachment'] = "Add Attachment";
The XML output contains the following:
<add_attachment name="task#py_email_attachment(fileupload)" control="input">Add Attachment</add_attachment>
Tony Marston
http://www.tonymarston.net
http://www.radicore.org
|
|
|
Re: BUTTON IN THE DATA AREA [message #5112 is a reply to message #5090] |
Sun, 01 November 2015 00:11 |
edortizq
Messages: 82 Registered: August 2008 Location: Ecuador
|
Member |
|
|
Hi Tony,
I installed the last version (1.91) and then modified my script to follow your _cm_chageConfig() (only changing variable names) and your language_text.inc file, what I get is:
( ! ) Warning: error_log() [function.error-log]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\AppServ\www\cse\includes\error.inc on line 255
Call Stack
# Time Memory Function Location
1 0.0004 64352 {main}( ) ..\tarifa(upd1).php:0
2 0.0036 166488 require( 'D:\AppServ\www\cse\includes\std.update1.inc' ) ..\tarifa(upd1).php:17
3 0.1705 8117160 Default_Table->getData( ) ..\std.update1.inc:111
4 0.1787 8504840 Default_Table->_dml_getData( ) ..\std.table.class.inc:2007
5 0.1787 8506624 mysql->getData( ) ..\std.table.class.inc:7798
6 0.1792 8512320 trigger_error ( ) ..\dml.mysqli.class.inc:634
7 0.1792 8512320 errorHandler( ) ..\dml.mysqli.class.inc:634
8 0.1860 8604640 error_log ( ) ..\error.inc:255
This application has encountered an unrecoverable error
The following has been reported to the administrator:
2015-10-31 23:02:59
Fatal Error: MySQL: Unknown column 'tarifa.printbutton' in 'where clause' (# 1054)
SQL query: SELECT SQL_CALC_FOUND_ROWS tarifa.*, evento.descripcionevento, formatoimpresion.descripcionformato, localidad.descripcionlocalidad, tipotarifa.descripciontipotarifa FROM tarifa LEFT JOIN evento ON (evento.idevento=tarifa.idevento) LEFT JOIN formatoimpresion ON (formatoimpresion.idformatoimpresion=tarifa.idformatoimpresi on) LEFT JOIN localidad ON (localidad.idlocalidad=tarifa.idlocalidad) LEFT JOIN tipotarifa ON (tipotarifa.idtipotarifa=tarifa.idtipotarifa) WHERE tarifa.idtarifa='4412' AND tarifa.printbutton IS NULL LIMIT 1 OFFSET 0
Error in line 634 of file 'D:\AppServ\www\cse\includes\dml.mysqli.class.inc'.
Host Info: localhost via TCP/IP
Server Version: 5.0.51b-community-nt-log
Client Version: 5.0.51a, Character sets - client: utf8, - connection: utf8, - database: utf8, - server: utf8
PHP_SELF: /cse/access/tarifa(upd1).php
CURRENT DIRECTORY: D:\AppServ\www\cse\access
SERVER_ADDR: 127.0.0.1
SERVER_NAME: localhost
HTTP_HOST: localhost
User Id: MGR
Role Id: GLOBAL
REMOTE_ADDR: 127.0.0.1
REQUEST_URI: /cse/access/tarifa(upd1).php?session_name=menu4
Can you suggest me where should I look for in order to debug and see what's happening?
Thanks for advance
|
|
|
Re: BUTTON IN THE DATA AREA [message #5113 is a reply to message #5112] |
Sun, 01 November 2015 05:21 |
AJM
Messages: 2368 Registered: April 2006 Location: Surrey, UK
|
Senior Member |
|
|
You have two errors here:
(1) MySQL: Unknown column 'tarifa.printbutton' in 'where clause' is caused by the fact that you have "AND tarifa.printbutton IS NULL" in your WHERE clause. A column called 'printbutton' does not exist in the database.
(2) error_log() [function.error-log]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini is caused by the fact that the error_log() is trying to use the mail() command, but you have not set up the corresonding values in your PHP.INI file.
Tony Marston
http://www.tonymarston.net
http://www.radicore.org
|
|
|
|
Re: BUTTON IN THE DATA AREA [message #5129 is a reply to message #5123] |
Wed, 04 November 2015 05:52 |
AJM
Messages: 2368 Registered: April 2006 Location: Surrey, UK
|
Senior Member |
|
|
The problem is that the line "$fieldarray['printbutton'] = null;" is being executed too soon, and it is causing the $where string to be regenerated to include 'printbutton'. To avoid this you need to use the following code inside _cm_changeConfig():
if (empty($where) AND !empty($fieldarray)) {
$fieldarray['printbutton'] = null;
}
Tony Marston
http://www.tonymarston.net
http://www.radicore.org
|
|
|
|
|
|