cancel
Showing results for 
Search instead for 
Did you mean: 

Actualicar fecha de vencimiento

Former Member
0 Kudos

Buenos días,

Por favor si me pueden ayudar con lo siguiente, he creado un campo adicional de fecha, llamado Fecha de Entrega, lo que necesito es que cuando yo actualice este campo entonces se me modifique el campo de fecha de vencimiento según la cantidad de días adicionales, por ej:

En la factura tengo:

fecha de documento: 22/11/2011

fecha de vencimiento: 06/12/2011

y la fecha que cree "fecha de entrega": 24/11/2011, este campo lo actualiza el usuario al momento de recibir la factura luego de ser entregada la mercancía, la idea es que cuando actualice este campo entonces se sumen la cantidad de días de diferencia que hay entre la fecha de entrega y la fecha del documento, en este caso la cantidad de das de diferencia es de 2 días, por lo tanto la fecha de vencimiento debería actualizar a 08/12/2011.

Como podría hacer esto? agradecería mucho la ayuda.

Saludos.

Accepted Solutions (1)

Accepted Solutions (1)

former_member188440
Active Contributor

Mete una busqueda formateada con la funcion Dateadd()

con eso debe funcionar

Former Member
0 Kudos

Disculpa la molestia Mauricio, pero como quedaría la consulta? :S

former_member188440
Active Contributor
0 Kudos

Intenta la BF asi


declare @fd as datetime
declare @fe as datetime
declare @fv as datetime
declare @dif as int
set @fd =(select $[oinv.docdate])--oinv si fuese factura
set @fe =(select $[oinv.u_tucampo])--oinv si fuese factura
set @fv = (select $[oinv.dodcuedate]) --oinv si fuese factura
set @dif =datediff(d,@fd,@fe)

select dateadd (d,@dif,@fv)

Edited by: Mauricio I Quintana on Nov 22, 2011 11:38 AM

Former Member
0 Kudos

Mauricio cuando ejecuto esa consulto me da como resultado: 01/01/1900, pero cuando monto la busqueda formateada, me aparece mensaje de error interno.

former_member188440
Active Contributor
0 Kudos

Si cambiaste el U_tucampo, por el nombre correcto de tu campo de usuario?

tenia unos errores de "dedo"

Intenta asi


declare @fd as datetime
declare @fe as datetime
declare @fv as datetime
declare @dif as int
set @fd =(select $[oinv.docdate])
set @fe =(select $[oinv.u_dochora])--pon aqui el nombre correcto de tu campo
set @fv = (select $[oinv.docduedate])
set @dif =datediff(d,@fd,@fe)
select dateadd (d,@dif,@fv)

Edited by: Mauricio I Quintana on Nov 22, 2011 12:52 PM

Former Member
0 Kudos

Con esta ultima se genera el siguiente error:

The conversion of nvarchar data type to a datatime data type resulted in an out-of-range value. :s

former_member188440
Active Contributor
0 Kudos

a ver agregale antes del primer "declare" esto


set dateformat ymd;

Former Member
0 Kudos

Aparece el mismo error Mauricio.

former_member188440
Active Contributor
0 Kudos

Juega con los valores segun tengas definido el formato de la fecha

si lo tienes por d/m/a, entonces iria set dateformat dmy;

asi respectivamente

Ese error te sale porque el formato quizas esta (por ejemplo) en m/d/a y tu estas metiendo una fecha d/m/a

de tal forma que si pones 22/11/2011, el server no reconoce el mes 22 y por eso te saca eso

Former Member
0 Kudos

Listo ahora si, mil gracias Mauricio

Former Member
0 Kudos

Buenos dias, les puedo hacer una consulta, porque soy nueva en SAP B1 pero tengo que resolver este mismo tema y no tengo experiencia en SQL y busqueda formateada. Me gustaria saber en que campo debo ingresar esta consulta, porque cuando voy a Herramientas>Consultas>generador de consultas no se donde copiarla. Cree un campo definido por el usuario en el encabezado de la factura del proveedor. Entonces deberia seleccionar esa tabla (OPCH) y dentro de esta tabla seleccionar el campo DueDate y donde deberia pegar la consulta? Les envio la pantalla donde tengo seleccionados los dos campos que deberia actualizar. Gracias.

Answers (1)

Answers (1)

Former Member
0 Kudos

Buenos dias, les puedo hacer una consulta, porque soy nueva en SAP B1 pero tengo que resolver este mismo tema y no tengo experiencia en SQL y busqueda formateada. Me gustaria saber en que campo debo ingresar esta consulta, porque cuando voy a Herramientas>Consultas>generador de consultas no se donde copiarla. Cree un campo definido por el usuario en el encabezado de la factura del proveedor. Entonces deberia seleccionar esa tabla (OPCH) y dentro de esta tabla seleccionar el campo DueDate y donde deberia pegar la consulta? Les envio la pantalla donde tengo seleccionados los dos campos que deberia actualizar. Gracias.

former_member188471
Active Contributor
0 Kudos

1.- Si ya cuentas con el script que te actualizara tu campo de usuario, guárdalo para tenerlo disponible en el Query Manager.

2.- Posteriormente ve a tu campo de usuario y estando en ese campo presiona ALT+SHIFT+F2 para poder asignar la consulta antes guardada, aquí te dará opciones de como se comportara esa actualización en tu campo seleccionado.

Former Member
0 Kudos

Gracias! Hice todo eso pero luego me tira error (-1004) cuando hago clic en la lupa. Ingrese otra discusión recien donde envio la consulta que estoy ejecutando.

former_member188471
Active Contributor
0 Kudos

Ok espero tu nuevo post para revisar. Saludos

Former Member
0 Kudos

Ya lo subi. Esta es la busqueda

SELECT T0.[DocDueDate] FROM OPCH T0

declare @fd as datetime

declare @fe as datetime

declare @fv as datetime

declare @dif as int

set @fd =(select $[oinv.docdate])

set @fe =(select $[oinv.u_fecharecep])--pon aqui el nombre correcto de tu campo

set @fv = (select $[oinv.docduedate])

set @dif =datediff(d,@fd,@fe)

select dateadd (d,@dif,@fv)

former_member188471
Active Contributor
0 Kudos

Me podrías explicar que es lo que necesitas exactamente, ya que la consulta que pones obtiene mas de un valor y veo que manejas OINV y OPCH y no entiendo muy bien que es lo que quieres guardar en tu campo usuario.

Former Member
0 Kudos

Tengo un cliente que precisa calcular la fecha de vencimiento a partir de la fecha de recepción de la factura. Esa fecha SAP no maneja, entonces cree un campo definido por el usuario con fecha de recepción. Luego encontré esta discusión donde se esta necesitando lo mismo y pensé que podía copiarlo con solo reemplazar mi campo creado.

former_member188471
Active Contributor
0 Kudos

Quedaria asi

declare @fd as datetime

declare @fe as datetime

declare @fv as datetime

declare @dif as int

set @fd =(select $[OPCH.docdate])

set @fe =(select $[OPCH.U_UDF])--pon aqui el nombre correcto de tu campo

set @fv = (select $[OPCH.docduedate])

set @dif =datediff(d,@fd,@fe)

select dateadd (d,@dif,@fv)

Lo guardas en QUERY MANAGER y vas a poner la busqueda formateada en tu campo Fecha de vencimiento. Se va actualizar para cuando el usuario modifique el campo U_UDF (que en tu caso seria el que creaste). Ya lo valide y funciona correctamente.

Former Member
0 Kudos

cuando la ejecuto desde el query manager me trae valor 01/01/1900, pero cuando la ejecuto desde el campo fecha de vencimiento me trae error interno (-1003)

former_member188471
Active Contributor
0 Kudos

Creo seria mas facil si me proporcionas un enlace y lo validamos porque a mi me funciona excelente.

Former Member
0 Kudos

ahi pude pero ahora me tira otro error, que fallo la ejecucion porque the conversion of a nvarchar data type to a datetime data type resulted in an out of range value en el campo DocDueDate

former_member188471
Active Contributor
0 Kudos

Es por el formato de tu fecha, en la primera linea de tu consulta agrega esto:

set dateformat ymd

Y año

M mes

d dia

Acomodarlo según sea tu formato de fecha.