1 : Cambio de Columna
2 : Cambio de profundidad (una estanteria detras de la otra)
3: Total de la estanteria
El problema que podeis comprobar tanto con listado desglosado como comprimido no me sale correctamente,
Os adjunto dos fotos de como salen los report y el codigo para ver si podeis echarme una mano :
Gracias:
Deberia ir primero el Total de Columna y despues el Total de Profundo,
Aqui el codigo:
- Code: Select all Expand view
- olimprimir:=.f.
vlistado := 1
vorden := 1
DEFINE DIALOG odimprimir RESOURCE "IESTANTERIA";
TITLE "Opciones Impresion";
OF oApp:aMod[20]:oWnd
REDEFINE radio gvlistado var vlistado ID 101,102 OF odimprimir
REDEFINE radio gvorden var vorden ID 103,104 OF odimprimir when vlistado = 2
REDEFINE BTNBMP ID 500 RESOURCE "ACEPTAR" OF odimprimir;
ACTION (olimprimir:=.t. , odimprimir:End() )
REDEFINE BTNBMP ID 501 RESOURCE "SALIR" OF odimprimir ACTION (olimprimir := .f., odimprimir:End()) ;
MESSAGE "Cancelar Impresion"
ACTIVATE DIALOG odimprimir CENTER
if olimprimir = .f.
return nil
endif
if vlistado != 3
lcancel:=printersetup()
if lcancel = 0
return nil
endif
endif
*if vlistado = 1
(cestanter)->(Dbgotop())
timprimir:={}
do while !eof()
vestanteria:= (cestanter)->estanteria
vdetalle := (cestanter)->detalle
vcolumna := (cestanter)->columna
vfila := (cestanter)->filas
vprofundo := (cestanter)->profundo
for p:= 1 to vprofundo
for j:=1 to vcolumna
for h:=vfila to 1 step -1
aadd(timprimir,{vestanteria,vdetalle,j,h,p,"","",0,0})
next h
next j
next p
dbskip()
enddo
cdestant := OpenDbf(fdestant,1, , , , kdestant,"DBFCDX")
(cdestant)->(DbSetOrder(1))
(cdestant)->(Dbgotop())
acdestan:=select()
do while !eof()
pos:= ascan(timprimir,{|aVal| aVal[1] = (cdestant)->estanteria .and. aVal[3] = (cdestant)->columna .and.;
(cdestant)->fila = aVal[4] .and. (cdestant)->profundo = aVal[5]})
if pos > 0
timprimir[pos,6] := (cdestant)->articulo
timprimir[pos,7] := (cdestant)->detalle
timprimir[pos,8] := timprimir[pos,8]+(cdestant)->cantidad
timprimir[pos,9] := timprimir[pos,9]+(cdestant)->paquetes
endif
dbskip()
enddo
(cdestant)->(dbclosearea())
select(acestanter)
(cestanter)->(dbgotop())
i:=1
if vlistado = 2 .and. vorden = 2
timprimir:= ASORT(timprimir,,, { |x, y| x[6] < y[6] })
endif
DEFINE FONT oFont1 NAME "Arial" SIZE 0,-10
REPORT oReport TITLE "Listado Desglasado de Estanterías";
HEADER "TORRES ESPIC","Fecha: "+dtoc(date()),"Hora: "+substr(time(),1,5) RIGHT;
FONT oFont1;
FOOTER OemtoAnsi("Pagina: ")+str(oReport:nPage,3) CENTERED;
PREVIEW
if vlistado =1
GROUP ON (timprimir[i,1]);
HEADER timprimir[i,1]+"-"+timprimir[i,2];
FOOTER "Total Estanteria....." EJECT
GROUP ON (timprimir[i,3]) FOOTER "Total Columna....."
GROUP ON (timprimir[i,5]) FOOTER "Total Profundo....."
ELSEif vlistado = 2 .and. vorden = 1
GROUP ON (timprimir[i,1]);
HEADER timprimir[i,1]+"-"+timprimir[i,2] FOOTER "Total Estanteria....."
GROUP ON (timprimir[i,3]) FOOTER "Total Columna....."
GROUP ON (timprimir[i,5]) FOOTER "Total Profundo....."
elseif vlistado = 2 .and. vorden = 2
GROUP ON (timprimir[i,6]);
HEADER timprimir[i,6]+"-"+timprimir[i,7]
ENDIF
if vlistado = 1 .or. (vlistado = 2 .and. vorden = 1)
COLUMN TITLE "Columna " DATA timprimir[i,3] center
COLUMN TITLE "Fila" DATA chr(timprimir[i,4]+64) center
COLUMN TITLE "Profundo" DATA timprimir[i,5] center
COLUMN TITLE "Articulo" DATA timprimir[i,6]
COLUMN TITLE "Detalle " DATA timprimir[i,7] size 50
COLUMN TITLE "Cantidad " DATA timprimir[i,8] PICTURE "99" RIGHT TOTAL
COLUMN TITLE "Paquetes " DATA timprimir[i,9] PICTURE "999" RIGHT TOTAL
elseif vlistado = 2 .and. vorden = 2
COLUMN TITLE "Estanteria " DATA timprimir[i,1] center
COLUMN TITLE "Detalle " DATA timprimir[i,2] size 50
COLUMN TITLE "Columna " DATA timprimir[i,3] center
COLUMN TITLE "Fila" DATA chr(timprimir[i,4]+64) center
COLUMN TITLE "Profundo" DATA timprimir[i,5] center
COLUMN TITLE "Cantidad " DATA timprimir[i,8] PICTURE "99" RIGHT TOTAL
COLUMN TITLE "Paquetes " DATA timprimir[i,9] PICTURE "999" RIGHT TOTAL
endif
END REPORT
oReport:bSkip := {|| i++}
if vlistado = 1
ACTIVATE REPORT oReport WHILE i+1 <=len(timprimir);
ON STARTPAGE oReport:SayBitmap(.2,.4, "TORRES.BMP",.5,.5)
elseif vlistado = 2
ACTIVATE REPORT oReport WHILE i+1 <= len(timprimir);
for timprimir[i,8]> 0;
ON STARTPAGE oReport:SayBitmap(.2,.4, "TORRES.BMP",.5,.5)
endif