calcular stock dentro de un select con funciones de usuario
Posted: Sat Mar 16, 2019 12:11 am
Gente:
Estoy migrando de dbf a sql y hasta ahora voy avanzando pero ahora tengo que mostrar el stock de artículos, mi tabla de artículos esta diseñada
asi:
![Image](%5Burl=http%3A//www.subirimagenes.com/otros-selectdearticulo-9890276.html%5D%5Bimg%5Dhttp://s2.subirimagenes.com/otros/previo/thump_9890276select-de-articulo.jpg)
[/img]
la tabla detguiat es una tabla transaccional que contiene los movimientos y esta relacionada con la tabla artículos para mostrar el stock:
y estas son las definiciones de las funciones que invoco en la definición del xbrowse
La pregunta del TRILLON como hacer esto mismo con sentencias sql? que me recomiendan usar VISTAS? No he usado vistas, tendrán un ejemplo
Estoy migrando de dbf a sql y hasta ahora voy avanzando pero ahora tengo que mostrar el stock de artículos, mi tabla de artículos esta diseñada
asi:
![Image](%5Burl=http%3A//www.subirimagenes.com/otros-selectdearticulo-9890276.html%5D%5Bimg%5Dhttp://s2.subirimagenes.com/otros/previo/thump_9890276select-de-articulo.jpg)
[/img]
la tabla detguiat es una tabla transaccional que contiene los movimientos y esta relacionada con la tabla artículos para mostrar el stock:
Code: Select all
select detguiat
SET RELATION TO detguiat->articu INTO articulo additive
REDEFINE XBROWSE oBrwDet ;
DATASOURCE detguiat ;
COLUMNS "articu", "Articulo->DesG","Articulo->UM","Articulo->Cap","Cantid" ;
,"salant('articulo')+ingmes('articulo')-salmes('articulo')-cantid" ;
,"PRECIO" ;
FIELDSIZES 65,195,30,30,40,80,40 ;
HEADERS "CODIGO" ;
,"DESCRIPCIÓN" ;
,"U.M." ;
,"CAP" ;
,"CANT." ;
,"STOCK" ;
,"PRECIO"
Code: Select all
FUNCTION INGANO(cAlias, nMes) // devuelve la suma todo los ingresos hasta el mes que le indique en el parametro
MEMVAR mMes
LOCAL nSuma := 0, i
LOCAL cMes
DEFAULT nMes := mMes
nMes -= 1
FOR i = 0 to nMes
cMes := 'CONING'+STRZERO(i,2)
nSuma += (cAlias)->&cMes
NEXT
Return(nSuma)
/* --------------------------------------------------------- */
FUNCTION SALANO(cAlias, nMes) //devuelve la suma de todas las salidas hasta el mes que le indique en el parametro
MEMVAR mMes
LOCAL nSuma := 0, i
LOCAL cMes
DEFAULT nMes := mMes
nMes -= 1
FOR i = 0 to nMes
cMes := 'CONSAL'+StrZero(i,2)
nSuma += (cAlias)->&cMes
NEXT
RETURN(nSuma)
/* --------------------------------------------------------- */
FUNCTION INGMES(cAlias, nMes) //devuelve los ingresos de un mes
MEMVAR mMes
LOCAL cMes, nIng
DEFAULT nMes := mMes
cMes := 'CONING'+ STRZERO(nMes,2)
nIng := (cAlias)->&cMes
RETURN( nIng )
/* --------------------------------------------------------- */
FUNCTION SALMES(cAlias, nMes) //devuelve las salidas de un mes
MEMVAR mMes
LOCAL cMes, nSal
DEFAULT nMes := mMes
cMes := 'CONSAL' + STRZERO(nMes,2)
nSal := (cAlias)->&cMes
RETURN( nSal )
/* --------------------------------------------------------- */
FUNCTION SALANT(cAlias, nMes) //devuelve las salidas de un mes
MEMVAR mMes
LOCAL cMes, nIng, nSal
DEFAULT nMes := mMes
nIng :=INGANO(cAlias,nMes)
nSal :=SALANO(cAlias,nMes)
RETURN ( nIng - nSal )
Code: Select all
cSql:="SELECT d.cod, a.descripcion, a.um, a.cap, d.cantid, [FUNCION DE USUARIO QUE CALCULE STOCK], a.precio from #ppru as d left join articulo as a on d.cod=a.cod "