MakeTotals EN UNA COLUMNA NO EDITABLE - SOLUCIONADO

MakeTotals EN UNA COLUMNA NO EDITABLE - SOLUCIONADO

Postby joseluisysturiz » Fri Jul 20, 2012 6:07 am

Nunca falta un pelo en la sopa, estoy tratando edicion de celdas con array con xBrowse en facturacion y todo muy bien, pero ahora se me presenta este problema, estoy usando totalizador de columnas MakeTotals(), en la columna que edito para agregar data me totaliza sin problema, pero resulta que hay una columna que no se edita que es el total = precio * cantidad, quiero que la columna TOTAL me de total de su columna en el footer, pero he hecho de todo lo conocido y nada, revice y probe como en el foro, aca dejo como tengo la columna CANTIDAD que trababa bien y es editable y la columna TOTAL que no es editable, tambien dejo como defino mi xBrowse a ver quien me da una ayuda o sugerencia, gracias, saludos... :shock:

REDEFINE xBrowse oBrw ID 100 of oDlg ;
HEADERS "CODIGO", "DESCRIPCION", "UNIDAD", "CANTIDAD", "DESC", "PRECIO", "TOTAL" ;
COLUMNS 1, 2, 3, 4, 5, 6, 7 ;
COLSIZES 100, 200, 70, 70, 50, 70, 70 ;
JUSTIFY AL_LEFT, AL_LEFT, AL_LEFT, AL_RIGHT, AL_RIGHT, AL_RIGHT, AL_RIGHT ;
PICTURES , , , "@E 9,999,999", "@E 999.99%", "@E 9,999,999.99", "@E 9,999,999.99" ;
ARRAY aItems FASTEDIT LINES FOOTERS

// CONFIGURACION DEL xBROWSE
WITH OBJECT oBrw
* :nMarqueeStyle := MARQSTYLE_HIGHLROW // NO PERMITE EDICION CELDA AUTO.
:nMarqueeStyle := MARQSTYLE_HIGHLCELL
:nColDividerStyle := LINESTYLE_BLACK
:nStretchCol := STRETCHCOL_LAST
:bRClicked := { || msginfo( "pulsastes boton derecho..." ) } // LLAMA MENU-POPUP CON BOTON DERECHO
:lColDividerComplete := .t.
:nHeaderHeight := 30 // ANCHO CABEZERA
:l2007 := .t.
:lFooter := .t.
:lRecordSelector := .t. // SI/NO 1RA.COL.IZQ.QUE TIENE LA FLECHITA NEGRA
:lAllowColHiding := .f. // SI/NO BOTON DERECHO SOBRE CABEZERA, MUESTRE ARRAY COL.
:lAllowColSwapping := .f. // SI/NO INTERCAMBIAR COL.
:bClrStd := {|| IF( oBrw:nArrayAt % 2 == 0, {CLR_BLACK, CLR_WHITE}, {0, RGB(203, 226, 254)} ) }
:bKeyDown := {| nKey | teclado( nKey, oBrw ) } // CONTROLA VIRTUAL KEY
***:bPastEof := { || addrow( oBrw, aItems ) } // HACE EDICION DE CELDA AUTOMATICAMENTE CON FLECHA ABAJO...
END WITH


// COL.4 - CANTIDAD
WITH OBJECT oBrw:aCols[4]
:bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
aItems[oBrw:nArrayAt, 4] ) }
:cEditPicture := "@E 9,999,999"
:nFootStrAlign := AL_RIGHT // ALINEA DATA FOOTER
:lTotal := .t. // PARA TOTALIZAR COL.
:nTotal := 0 // PARA TOTALIZAR COL.
:nFooterType := AGGR_SUM // PARA TOTALIZAR COL.
:nEditType := EDIT_GET
:bEditValid := { | oGet, oCol | mayorqcero( oGet:value() ) }
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE ,;
( oCol:value:= xVal ) , ) }
:bEditWhen := {|| !EMPTY( aItems[oBrw:nArrayAt, 1] ) }
END WITH


// COL.7 - TOTAL LINEA
WITH OBJECT oBrw:aCols[7]
:bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
aItems[oBrw:nArrayAt, 7] ) }
* :bEditValue := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
* aItems[oBrw:nArrayAt, 7] ) }
:cEditPicture := "@E 9,999,999.99"
:nFootStrAlign := AL_RIGHT // ALINEA DATA FOOTER
:lTotal := .t. // PARA TOTALIZAR COL.
:nTotal := 0.00 // PARA TOTALIZAR COL.
:nFooterType := AGGR_TOTAL // PARA TOTALIZAR COL.
END WITH

*oBrw:aCols[7]:lTotal := .t. // PARA TOTALIZAR COL.
*oBrw:aCols[7]:nTotal := 0.00 // PARA TOTALIZAR COL.
*oBrw:aCols[7]:nFooterType := AGGR_TOTAL // PARA TOTALIZAR COL.

oBrw:MakeTotals()
oBrw:Refresh()
Last edited by joseluisysturiz on Sun Jul 22, 2012 7:47 pm, edited 1 time in total.
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: MakeTotals EN UNA COLUMNA NO EDITABLE

Postby carlos vargas » Fri Jul 20, 2012 7:33 pm

asi, de forma rapida, viendo este codigo, me parece que inicialmente esta columna tiene un dato de tipo caractar, cuando el tamano de aitems es cero, pero luego cambia a un valor numerico, ya cuando aitem tiene valores.
me parece que por ahi van lo tiros, si lo que quieres es que inicialmente no te salga un 0 prueba con un picture que cuando enlvalor es cero no lo muestra.
yo recuerdo haberlo usado para unas columnas debe, haber y saldo.

no recuerdo cual excatamente es la plantilla, pero existe, por favor buscala en la ayuda.


Code: Select all  Expand view

bStrData := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
aItems[oBrw:nArrayAt, 7] ) }
* :bEditValue := {|| IIF( LEN( aItems ) = 0, SPACE(10) ,;
* aItems[oBrw:nArrayAt, 7] ) }
:cEditPicture := "@E 9,999,999.99" //aca busca el picture adecuado
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1707
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: MakeTotals EN UNA COLUMNA NO EDITABLE

Postby FranciscoA » Sat Jul 21, 2012 1:33 am

Hola, Jose Luis.
Estuve revisando la classe TXbrowse (12.04) y no pude encontrar la constante AGGR_TOTAL. Creo que debe ser AGGR_SUM, como la usas en la columna 4.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: MakeTotals EN UNA COLUMNA NO EDITABLE

Postby joseluisysturiz » Sat Jul 21, 2012 3:06 am

FranciscoA wrote:Hola, Jose Luis.
Estuve revisando la classe TXbrowse (12.04) y no pude encontrar la constante AGGR_TOTAL. Creo que debe ser AGGR_SUM, como la usas en la columna 4.
Saludos.

Francisco, es indistinto SUM o TOTAL, ambas funcionan sin problema en la columna de cantidad, el problema es que esa es editable y la columna de TOTAL no lo es, y necesito que me totalice en el footer de la columna TOTAL, igual probe SUM y TOTAL y nada, sigo probando otras cosas... Carlos, la columna CANTIDAD si te fijas bStrData esta definido de la misma manera que el de la columna TOTAL, unica diferencia entre ambas columnas, que CANTIDADA es editable y TOTAL no, el val de la celda de TOTAL se actualiza en una funcion donde TOTAL = CANTIDAD * PRECIO...voy intentar otras opciones y si resuelvo comento y la publico, gracias a ambos por su interes...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: MakeTotals EN UNA COLUMNA NO EDITABLE

Postby FranciscoA » Sun Jul 22, 2012 3:49 pm

Hola José Luis, ¿Ya probaste asi?
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE , ( oCol:value:= xVal, oBrw:MakeTotals(), oBrw:Refresh() ) , ) }

el val de la celda de TOTAL se actualiza en una funcion donde TOTAL = CANTIDAD * PRECIO

Tambien puedes intentar ponerlo en la función que indicas:
oBrw:MakeTotals()
oBrw:Refresh()

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: MakeTotals EN UNA COLUMNA NO EDITABLE

Postby joseluisysturiz » Sun Jul 22, 2012 7:46 pm

FranciscoA wrote:Hola José Luis, ¿Ya probaste asi?
:bOnPostEdit := { | oCol, xVal, nKey | If( nKey <> VK_ESCAPE , ( oCol:value:= xVal, oBrw:MakeTotals(), oBrw:Refresh() ) , ) }

el val de la celda de TOTAL se actualiza en una funcion donde TOTAL = CANTIDAD * PRECIO

Tambien puedes intentar ponerlo en la función que indicas:
oBrw:MakeTotals()
oBrw:Refresh()

Saludos.

Francisco, ya habia probado como dice colocando oBrw:MakeTotals() y oBrw:Refresh() en mi funcion totallinea(), nose porque pero no habia funcionado, lo volvi a probar y esta ves funciono, algo debi a ver cambiado sin darme cuenta, el detalle es que tengo repetido 2 veces el oBrw:MakeTotals(), y asumi que como es un metodo del oBrw y no de la oCol, deberia aplicar sobre todas las columnas del oBrw que contubieran nFooterType := AGGR_SUM, el lTotal := .t. y el nTotal := 0, pero parece que no, o nose si sera algun detalle cuando se usa el oBrw con array. pero bueno, ya esta resuelto, lo que queda es maquillaje, luego compartire el codigo para el que lo necesite, gracias y saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: cmsoft, SantaCroya and 22 guests