Machetes Varios

apuntes varios erp cwa logic ( ahora SoftLand Logic ) – sql y veremos que otra cosa

Desglose Impositivo


Al estar habilitado graba por item la alicuota y el impuesto calculado. Es muy útil para sacar información impositiva como la RG 1361 ( 1547 ).

Parametrización:

Definición de parámetros de clientes:Check en “utiliza desglose impositivo para conceptos primarios ”

Conceptos de Venta :solapa 4-Impuestos por conceptos de venta – Especificar la columna para Tasa( en los conceptos Base ). Especifica que la alícuota se grabe en VTRMVI_TASAnn

Comprobantes de Ventas : En los conceptos I especificar la columna para impuesto. Especificaen que VTRMVI_IMPUnn se grabará el impuesto.( OJO: por lo menos hasta la versión 2.3.6.9 no se puede usar la misma columna para dos conceptos I distintos, ya que grabará en una de ellas cero )

Consultas Útiles:

  1. Verifico que la sumatoria de las columnas del desglose den contra cada comprobante( yo uso hasta vtrmvi_impu03 ). Los conceptos base son B ( en la mayoría de las empresas es A ). Si está todo bien no debería traer ningún registro.
SELECT
VTRMVI_MODFOR,
VTRMVI_CODFOR,
VTRMVI_NROFOR,SUM(VTRMVI_IMPNAC) IMPUESTOS,

( SELECT SUM(ISNULL(I.VTRMVI_IMPU01,0)+ISNULL(I.VTRMVI_IMPU02,0)+ISNULL(I.VTRMVI_IMPU03,0))

FROM VTRMVI IWHERE I.VTRMVI_MODFOR = VTRMVI.VTRMVI_MODFOR AND

I.VTRMVI_CODFOR = VTRMVI.VTRMVI_CODFOR AND

I.VTRMVI_NROFOR = VTRMVI.VTRMVI_NROFOR AND

I.VTRMVI_MODCPT = 'VT' AND I.VTRMVI_TIPCPT = 'B' ) DISCRI

WHERE VTRMVI_MODCPT = 'VT' AND VTRMVI_TIPCPT = 'I'GROUP BY VTRMVI_MODFOR,VTRMVI_CODFOR,VTRMVI_NROFOR

HAVINGSUM(VTRMVI_IMPNAC) <>( SELECT SUM(ISNULL(I.VTRMVI_IMPU01,0)

+ISNULL(I.VTRMVI_IMPU02,0)+ISNULL(I.VTRMVI_IMPU03,0))FROM VTRMVI I

WHEREI.VTRMVI_MODFOR = VTRMVI.VTRMVI_MODFOR AND

I.VTRMVI_CODFOR = VTRMVI.VTRMVI_CODFOR ANDI.VTRMVI_NROFOR = VTRMVI.VTRMVI_NROFOR AND

I.VTRMVI_MODCPT = 'VT' AND I.VTRMVI_TIPCPT = 'B' )

2. Consulta para arreglar diferencias de redondeo ( en el ejemplo arregla el IVA 21 % , donde la alicuota se graba en VTRMVI_TASA01, y los impuestos en VTRMVI_impu02. el concepto I es: IVA21. Observar que se hace un JOIN de la VTRMVI contra una consulta interna A. Ésta consulta interna aporta las siguientes columnas:

impu02:- SUM(VTRMVI_impu02) – IVA 21 según lo discriminado en cada item

IVA21: Iva 21 según concepto I

MAXITM: es el max(vtrmvi_nroitm), que podria ser usado en el JOIN externo. Sin Uso, ya que uso:

MAXITM2: Es el item correspondiente a los conceptos Base, con el máximo IMPNAC. Uso éste para “cocinar” la diferencia, ya que es donde el cambio será menos representativo. Observar que se usa la técnica de Tiebreakers

La diferencia de redondeo es: IVA21-IMPU02.

A continuación la consulta. La primera parte es solamente un SELECT para verificar los registros a corregir – observar columna DIFE – , y la segunda parte es el UPDATE correspondiente



/* Arregla Diferecia de Redondeo IVA21 */

-- Cocina la diferencia en el último item

-- SELECT

SELECT VTRMVI_MODFOR,VTRMVI_CODFOR,VTRMVI_NROFOR,VTRMVI_IMPNAC,
VTRMVI_NROITM,VTRMVI_TASA01,VTRMVI_IMPU02,
VTRMVI_IMPNAC*VTRMVI_TASA01/100 CALCULADO,
IVA21,VTRMVI_IMPU02+(IVA21-IMPU02) ARREGLADO,MAXITM,MAXITM2,
ABS(IVA21-IMPU02) DIFE,VTRMVI_USERID,VTRMVI_FECALT

FROM VTRMVI
JOIN
     ( SELECT
       VTRMVI_MODFOR MODFOR ,VTRMVI_CODFOR CODFOR,VTRMVI_NROFOR NROFOR,
       VTRMVI_TASA01 TASA01,SUM(VTRMVI_IMPU02) IMPU02,
       ( SELECT SUM(I.VTRMVI_IMPNAC)
         FROM VTRMVI I
         WHERE
           I.VTRMVI_MODFOR = VTRMVI.VTRMVI_MODFOR AND
           I.VTRMVI_CODFOR = VTRMVI.VTRMVI_CODFOR AND
           I.VTRMVI_NROFOR = VTRMVI.VTRMVI_NROFOR AND
           I.VTRMVI_MODCPT = 'VT' AND
           I.VTRMVI_TIPCPT = 'I' AND
           I.VTRMVI_CODCPT IN( 'IVA21')) IVA21,
           COUNT(*) CANTIDAD,MAX(VTRMVI_NROITM) MAXITM,
           ( SELECT TOP 1
             T.VTRMVI_NROITM
             FROM VTRMVI T
             WHERE
             T.VTRMVI_MODFOR = VTRMVI.VTRMVI_MODFOR AND
             T.VTRMVI_CODFOR = VTRMVI.VTRMVI_CODFOR AND
             T.VTRMVI_NROFOR = VTRMVI.VTRMVI_NROFOR AND
             T.VTRMVI_MODCPT = 'VT' AND T.VTRMVI_TIPCPT = 'B' AND
             T.VTRMVI_TIPPRO IS NOT NULL AND
             T.VTRMVI_TIPPRO  'VTINGB'AND
             T.VTRMVI_TASA01 = 21
             ORDER BY T.VTRMVI_IMPNAC DESC ) MAXITM2  

             FROM VTRMVI JOIN VTRMVH ON
             ( VTRMVH_MODFOR = VTRMVI_MODFOR AND
               VTRMVH_CODFOR = VTRMVI_CODFOR AND
               VTRMVH_NROFOR = VTRMVI_NROFOR )
             WHERE
               EXISTS
              ( SELECT 1 FROM VTRMVI I
                WHERE
                I.VTRMVI_MODFOR = VTRMVI.VTRMVI_MODFOR AND
                I.VTRMVI_CODFOR = VTRMVI.VTRMVI_CODFOR AND
                I.VTRMVI_NROFOR = VTRMVI.VTRMVI_NROFOR AND
                I.VTRMVI_MODCPT = 'VT' AND
                I.VTRMVI_TIPCPT = 'I' AND
                I.VTRMVI_CODCPT IN( 'IVA21') )
                AND VTRMVI_MODCPT = 'VT' AND VTRMVI_TIPCPT = 'B'
                AND VTRMVI_TASA01 = 21
                GROUP BY
                VTRMVI_MODFOR,VTRMVI_CODFOR,VTRMVI_NROFOR,VTRMVI_TASA01 )A

ON

VTRMVI_MODFOR = MODFOR AND
VTRMVI_CODFOR = CODFOR AND
VTRMVI_NROFOR= NROFOR AND
VTRMVI_NROITM = MAXITM2 AND
VTRMVI_MODCPT = 'VT' AND VTRMVI_TIPCPT = 'B'
AND (VTRMVI_TIPPRO IS NOT NULL  )
AND VTRMVI_TIPPRO  'VTINGB'

WHERE

ABS(IMPU02-IVA21) >0 

--- UPDATE 

BEGIN TRAN PEPE

UPDATE VTRMVI
SET VTRMVI_IMPU02 = VTRMVI_IMPU02+(IVA21-IMPU02)

FROM VTRMVI
JOIN

     ( SELECT
       VTRMVI_MODFOR MODFOR ,VTRMVI_CODFOR CODFOR,VTRMVI_NROFOR NROFOR,
       VTRMVI_TASA01 TASA01,SUM(VTRMVI_IMPU02) IMPU02,
       ( SELECT SUM(I.VTRMVI_IMPNAC)
         FROM VTRMVI I
         WHERE
           I.VTRMVI_MODFOR = VTRMVI.VTRMVI_MODFOR AND
           I.VTRMVI_CODFOR = VTRMVI.VTRMVI_CODFOR AND
           I.VTRMVI_NROFOR = VTRMVI.VTRMVI_NROFOR AND
           I.VTRMVI_MODCPT = 'VT' AND
           I.VTRMVI_TIPCPT = 'I' AND
           I.VTRMVI_CODCPT IN( 'IVA21')) IVA21,
           COUNT(*) CANTIDAD,MAX(VTRMVI_NROITM) MAXITM,
           ( SELECT TOP 1
             T.VTRMVI_NROITM
             FROM VTRMVI T
             WHERE
             T.VTRMVI_MODFOR = VTRMVI.VTRMVI_MODFOR AND
             T.VTRMVI_CODFOR = VTRMVI.VTRMVI_CODFOR AND
             T.VTRMVI_NROFOR = VTRMVI.VTRMVI_NROFOR AND
             T.VTRMVI_MODCPT = 'VT' AND T.VTRMVI_TIPCPT = 'B' AND
             T.VTRMVI_TIPPRO IS NOT NULL AND
             T.VTRMVI_TIPPRO  'VTINGB'AND
             T.VTRMVI_TASA01 = 21
             ORDER BY T.VTRMVI_IMPNAC DESC ) MAXITM2  

             FROM VTRMVI JOIN VTRMVH ON
             ( VTRMVH_MODFOR = VTRMVI_MODFOR AND
               VTRMVH_CODFOR = VTRMVI_CODFOR AND
               VTRMVH_NROFOR = VTRMVI_NROFOR )
             WHERE
               EXISTS
              ( SELECT 1 FROM VTRMVI I
                WHERE
                I.VTRMVI_MODFOR = VTRMVI.VTRMVI_MODFOR AND
                I.VTRMVI_CODFOR = VTRMVI.VTRMVI_CODFOR AND
                I.VTRMVI_NROFOR = VTRMVI.VTRMVI_NROFOR AND
                I.VTRMVI_MODCPT = 'VT' AND
                I.VTRMVI_TIPCPT = 'I' AND
                I.VTRMVI_CODCPT IN( 'IVA21') )
                AND VTRMVI_MODCPT = 'VT' AND VTRMVI_TIPCPT = 'B'
                AND VTRMVI_TASA01 = 21
                GROUP BY
                VTRMVI_MODFOR,VTRMVI_CODFOR,VTRMVI_NROFOR,VTRMVI_TASA01 )A

ON

VTRMVI_MODFOR = MODFOR AND
VTRMVI_CODFOR = CODFOR AND
VTRMVI_NROFOR= NROFOR AND
VTRMVI_NROITM = MAXITM2 AND
VTRMVI_MODCPT = 'VT' AND VTRMVI_TIPCPT = 'B'
AND (VTRMVI_TIPPRO IS NOT NULL  )
AND VTRMVI_TIPPRO  'VTINGB'

WHERE
ABS(IMPU02-IVA21) >0 

COMMIT TRAN PEPE

diciembre 7, 2006 - Posted by | 1.8 VT - Ventas, Cwa Logic

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: