cancel
Showing results for 
Search instead for 
Did you mean: 

Reporte de Stock por rango de Fecha

Former Member
0 Kudos

Hola,

Un cliente nos solicito un reporte de stock por rango de fecha que incluya el costo... ya logramos reconstuir el stock pero no hemos podido dar con el costo... ellos usan Average Price,

La idea es que se ingrese fecha desde hasta y que el reporte entregue el stock por producto y bodega con el costo promedio en ese periodo.

Agradeceremos cualquier sugerencia al respecto,

muchas gracias

Accepted Solutions (1)

Accepted Solutions (1)

Humberto_Neira
Product and Topic Expert
Product and Topic Expert
0 Kudos

Angela,

Intentaste usar la herramienta SQL Analyzer para capturar la query que Business One usa para armar el reporte Audit Inventory.

Tal vez mirando esa query, puedas dar con el dato puntual que necesitas para mirar el costo.

La tabla base para este tipo de reporte debiese ser la OINM.

saludos

Former Member
0 Kudos

Humberto, como puedo hacer para activar el SQL Analizer en SqlServer 2005?, para ver el query que usa la auditoria de stock.

Saludos

RC

Humberto_Neira
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hola,

cuando instalas el SQL Server 2005 con sus herramientas de administración, debe quedar en tus iconos del grupo de Programas:

Microsoft SQL Server 2005 --> SQL Server Profiler (rastreo de SQL a la BD)

Una vez que entras alli, y te conectas al server y BD verás pasar una serie de SQLs que son los que están llegando a la BD. Lo que te recomiendo es ver los botones de control de la TOOLBAR:

-. PLAY

-. STOP

-. para que des STOP, asi todo se detiene y el monitor del SQL no sigue mostrando lo que pasa en tiempo real.

-. Luego, buscas la opción de CLEAR para que toda la traza que quedo se limpie.

-. luego vas a B1 y entras al reporte de Auditoria de Stock ingresas los filtros que quieres y justo antes de dar el OK al reporte vas al SQL Profiler y le das PLAY.

-. luego das el OK en B1, y verás pasar un set de querys que lanzó B1 contra la BD para satisfacer ese reporte.

-. luego das STOP para que asi no siga llenandote de SQL.

y con las querys que capturas tendrás que buscar la query CENTRAL que es la que definitivamente recupera los datos, pues existen muchas otras usadas solo por B1 para cargar objetos propios.

IMPORTANTE:

-. Esto hazlo en tu equipo, pues cuando estas en un ambiente con CONCURRENCIA y haces esto, también podrás ver y capturar las querys que otros users lanzan sobre la Base de Datos.

saludos

Edited by: Rui Pereira on May 26, 2008 3:02 PM

Former Member
0 Kudos

Estimados,

El tema es mas simple de lo que intentan hacer.

Les adjunto la solucion

Att,

Manuel Lazcano

Exxis

Chile

Query informe de stock por fecha

SELECT T0.DocDate AS 'Fecha de contabilización',

T0.ItemCode AS 'Número de artículo',

t1.itemname AS 'Descripcion',T2.ItmsGrpnam as 'Grupo',

'Bod' AS 'Código de almacén',

case when T0.InQty=0 or T0.InQty is null then T0.OutQty*-1 else T0.InQty end AS 'Cantidad TRX',

T0.CalcPrice AS 'Costo',

case when ((case when T0.InQty=0 or T0.InQty is null then T0.OutQty*-1 else T0.InQty end) * T0.CalcPrice) <> 0 then ((case when T0.InQty=0 or T0.InQty is null then T0.OutQty*-1 else T0.InQty end) * T0.CalcPrice) else T0.transvalue END AS 'Monto', T3.segment_0 AS 'Cuenta Stock', T3.AcctName AS 'Nombre Cuenta' INTO #TEMP

FROM dbo.OINM T0 INNER JOIN dbo.OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN dbo.OITB T2 ON T1.ItmsGrpCod = T2.ItmsGrpCod INNER JOIN dbo.OACT T3 ON T2.BalInvntAc = T3.AcctCode

WHERE T0.DocDate<='[%0]'

SELECT , Descripcion, Grupo,[código de almacén], SUM() AS Cantidad, SUM(Monto) AS Valor,CAST ( CASE WHEN SUM(Monto)=0 OR SUM()=0 tHEN 0 else SUM(Monto)/SUM() END AS NVARCHAR)AS 'Costo Prom', ,

FROM #TEMP

GROUP BY , Descripcion, , , ,grupo

Former Member
0 Kudos

Gracias Humberto, esto me va a servir para varios escenarios. buen tip. lo hare en un laboratorio de Test.

Saludos

Rodolfo Castañeda

former_member326598
Participant
0 Kudos

Manuel un favor me puedes enviar el codigo sql ya que el q esta posteado no lo entiendo bien

Gracias

Former Member
0 Kudos

Manuel

Podrias pasarme el scrip respectivo....

Gracias

Former Member
0 Kudos

que tal Manuel tengo un problema con la consulta que sugieres ya la repase y repase pero no funciona me marca este error:

1). [Microsoft][SQL Native Client][SQL Server]The SUM function requires 1 argument 'Valores definidos por usuario' (CSHS) (s). 2). [Microsoft][SQL Native Client][SQL Server]Statement(s) could not be prepared.

me podrias apoyar

Answers (3)

Answers (3)

jose_montanez
Explorer
0 Kudos

Hola:

Yo uso este query para obtener los datos por los cuales consultas:

SELECT

...

,T0.InQty-T0.OutQty

,CASE T0.TransType

WHEN 69 THEN 0

ELSE T0.CalcPrice

END /* Precio de Costo al momento de la trransacción */

,CASE T0.TransType

WHEN 69 THEN T0.Price

ELSE T0.TransValue

END

...

FROM OINM T0

Espero que te pueda servir.

Saludos.

Former Member
0 Kudos

Estimados,

si ya pudiste reconstruir el saldo, tambien puedes recontruir el valor acumulado, estos datos los insertas en una tabla temporal como por ejemplo.

SELECT 10 AS 'Q', 100 AS 'P'

INTO #TEMP

FROM dbo.OINM

WHERE T0.DocDate<='[%0]'

SELECT Q, P,P/Q AS 'P PROM'

FROM #TEMP

Att.

Manuel Lazcano

Cesar_Mendieta
Explorer
0 Kudos

Como indican en el mensaje anterior debes utilizar la tabla OINM, pero debes buscar la columna calcprice. es bastante complicado esta parte pues debes hacer varia validaciones como si no existe ninguna transaccion para un codigo el costo es el que tenga en el momento. si existe debes seleccionar la ultima el costo de la ultima salida del dia que quieres ver. creo que estas dos no hay tanta complicacion. lo mas complicado sera cuando hay un dia que no tiene transaccion pero dias hacia atras si tiene transaccion, por ejemplo ayer y hoy tiene el mismo inventario el costo de hoy es el mismo de ayer. creo que se puede hacer pero el query te llevara tiempo, saludos