Query solicitud de compra con cuenta de mayor

sql
Etiquetas: #<Tag:0x00007f43545ba628>

#1

Que tal buen día

Estoy realizando un Query que me de las cuentas de mayor de los articulos, pero cuando agrego la tabla OACT de la cuenta de mayor realiza bien el INNER, pero cuando lo ejecuto me indica que no encuentra ningun valor, cuando si hay valores, me podrían orientar?

Gracias!!

SELECT 
         T1.[Dscription], 
         T2.[FormatCode] 
FROM OPRQ T0  
         INNER JOIN PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
         INNER JOIN OACT T2 ON T0.[CtlAccount] = T2.[AcctCode]

#2

Hola @Soak85 , porque involucras el plan de cuentas ?, no debería ser así:

SELECT 
     T1.[ItemCode],
     T1.[Dscription],
     T1.[AcctCode] 
    FROM OPRQ T0  
    INNER JOIN PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
    --WHERE ALGO 

#3

Que tal @pcarrasco

Gracias por responder, estoy involucrando las cuentas porque voy a meter un TN, si el usuario realiza una solicitud de compra y este articulo no tiene cuenta de mayor, no permita grabar el documento.

Voy a probar el codigo que me indicas.

Muchas gracias!


#4

No es necesario involucrar el plan de cuentas, valida sobre documento a nivel linea, no olvides que la cuenta de existencias es un valor obligatorio en la determinación de cuentas de mayor por almacén y por grupo de artículos (no recuerdo en la determinación de cuentas de mayor ampliada), creo que en todo momento tu articulo tendrá cuenta, si es no inventariable va y le pega a la cuenta de gastos, verifica esta cuenta.

Saludos.


#5

Que tal

Explico un poco mas la problemática, es para los documentos de tipo servicio, tenemos una tabla en la parte de descripción, pero a veces los usuarios no usan esta tabla y teclean directamente la descripción, y con esto no se jala la cuenta contable y se dan cuenta hasta que llega a contabilidad, por eso quería meter la TN, que cuando la cuenta de mayor es NULL, no permita grabar el documento


#6

Entonces no es un articulo, es un servicio, en estos no hay cuenta contable por default, desde mi punto de vista será mejor validar que la descripción sea igual a algún valor de tu tabla, no ?, pero si quieres validar el campo de Cuenta de mayor, quedaría así:

declare @cuentaMayor as nvarchar (15)

if @object_type = '1470000113' and @transaction_type = 'A'
   begin 
       Select @cuentaMayor = T1.AcctCode 
          From OPRQ T0  
          INNER JOIN PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
          Where T0.DocEntry =  @list_of_cols_val_tab_del
       if @cuentaMayor is null 
       begin
	   set @error = 1 
       set @error_message = 'Falta la Cuenta de Mayor'
   end
end

#7

Que tal @pcarrasco

Gracias por el código, deja lo pruebo,

Saludos!!


#8

Funciono a la perfección, solo le hice un pequeño cambio

Muchas gracias @pcarrasco

declare @cuentaMayor as nvarchar (15) = ''

if @object_type = '1470000113' and @transaction_type IN ('A', 'U')
   begin 
       SET @cuentaMayor = (Select  T1.AcctCode 
          From OPRQ T0  
          INNER JOIN PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
          Where T0.DocEntry =  @list_of_cols_val_tab_del)
       if (@cuentaMayor is null OR @cuentaMayor = '')
       begin
	   set @error = 1 
       set @error_message = 'Falta la Cuenta de Mayor'
   end
end

#9