Al tratar de ajustar costo y cantidad:
Ticket de ejemplo: Tickets #55300
Cliente INSUMAGRO.
Primeramente debemos obtener de la comprobación base saldo las mercaderías que tienen el problema de divisor por zero:
(datos que usaremos para realizar consultas)
Luego nos conectamos a la base del cliente y aplicamos un SQL de consulta que nos retornara los tipos de factura que tienen el valor 0 en el costo.
QUERY:
SELECT SECM.DOC, TIPO.CNOMETPFT TIPO, FATU.DDATAFATU FECHA, FATU.NCODIFILI FILIAL, FATU.NCODIDEPA DEPTO FROM (SELECT TO_NUMBER(SUBSTR(F.CDOCOSECM, 2, 8)) DOC FROM FATSECM F WHERE F.NCODIMERC = 117 --COD MERCADERIA AND F.NCODIFILI = 2 --SUCURSAL AND F.NCODIDEPA = 5 --DEPARTAMENTO AND F.NCUMESECM = 0) SECM , FATFATU FATU, FATTPFT TIPO WHERE FATU.NCODIFATU = SECM.DOC AND FATU.NCODITPFT = TIPO.NCODITPFT;
OBS: se debe cargar el código de la mercadería, la sucursal y el departamento en la query de acuerdo a nuestras informaciones en la comprobación base saldo.
Aquí ya tenemos un resultado que nos puede llevar a la solución, caso el tipo sea una NOTA DE CREDITO/DEBITO validar si efectivamente debió tocar el costo de la mercadería, caso no, se debe excluir por script ese registro que no debió registrar en FATSECM (repasar a debug).
Pero caso sean otro tipo de facturas, se debe seguir con el análisis.
Segundo punto, validamos los movimiento de la mercadería (ficha fast), esta verificación realizamos para ver si no tenemos saldos negativos en algún movimiento de mercadería. Para agilizar el proceso podemos utilizar las siguientes consultas.
- Para verificación de que existen saldos negativos en FATMVME (Movimientos de Mercadería).
SELECT * FROM (SELECT A1.NCODIMERC COD, A1.NCODIFILI FILI, A1.NCODIDEPA DEPA, A1.CDOCOMVME DOCO_MVME, A1.NCODITPFT TPFT, A2.CNOMETPFT TIPO, A1.DDATAMVME DATA, A1.NVLUNMVME UNIT_CONT, A1.NVLGEMVME UNIT_GERE, A1.NQUANMVME QTD, (SELECT SUM(NQUANMVME*DECODE(B.CTPMVTPFT,'E', 1, -1)) SLDO FROM FATMVME A, FATTPFT B WHERE A.NCODITPFT = B.NCODITPFT AND A.NCODIFILI = A1.NCODIFILI AND A.NCODIDEPA = A1.NCODIDEPA AND A.NCODIMERC = A1.NCODIMERC AND A.DDATAMVME <= A1.DDATAMVME ) SLDO FROM FATMVME A1, FATTPFT A2 WHERE A1.NCODIMERC = 117 --COD MERC AND A1.NCODITPFT = A2.NCODITPFT --AND DDATAMVME >= '01/01/2021' AND A1.NCODIFILI = 2 --SUCURSAL AND A1.NCODIDEPA = 5 --DEPARTAMENTO --AND A1.SEAT <> B1.SLDO ORDER BY A1.NCODIMERC, A1.DDATAMVME) DATOS WHERE DATOS.SLDO < 0;
OBS: recordar siempre cargar en la QUERY la mercadería, Suc. y Depto.
Si el SQL retorna datos y vemos que se genera saldos negativos, entonces efectivamente ese es nuestro problema en la comprobación base saldo.
Para seguir con la verificación y apuntar a una solución, debemos saber cuanto es el saldo negativo real, para ello usamos la siguiente consulta que nos reproduce lo mismo que la Ficha de Mercadería - Fast:
SELECT A1.NCODIMERC COD, A1.NCODIFILI FILI, A1.NCODIDEPA DEPA, A1.CDOCOMVME DOCO_MVME, A1.NCODITPFT TPFT, A2.CNOMETPFT TIPO, A1.DDATAMVME DATA, A1.NVLUNMVME UNIT_CONT, A1.NVLGEMVME UNIT_GERE, CASE WHEN SUBSTR(A2.CNOMETPFT,0, 5) = 'SAIDA' THEN (A1.NQUANMVME * -1) ELSE A1.NQUANMVME END QTD FROM FATMVME A1, FATTPFT A2 WHERE A1.NCODIMERC = 117 --COD MERC AND A1.NCODITPFT = A2.NCODITPFT --AND DDATAMVME >= '01/01/2021' AND A1.NCODIFILI = 2 --SUCURSAL AND A1.NCODIDEPA = 5 --DEPARTAMENTO -- AND A1.SEAT <> B1.SLDO ORDER BY A1.NCODIMERC, A1.DDATAMVME;
OBS: recordar siempre cargar en la QUERY la mercadería, Suc. y Depto.
Luego para poder aplicar una formula migramos esos datos a una hoja de calculo (seleccionamos todas las filas y procedemos con CTRL + C y CTRL + V).
Enlace de ejemplo con formula y condicional: VERIFICACION SALDO NEG
Como establecimos la condición y la formula vamos viendo nuestra planilla en donde esta pintado en rojo y simulamos una entrada justo antes del saldo negativo:
Entrada simulada:
OBS: volver a arrastrar la formula para que aplique el cambio, también tener en cuenta que la simulación debe ser por el valor negativo.
Por ultimo verificamos si en algún otro punto se genera un saldo negativo luego de realizar la simulación, si se vuelve a generar, repetir el proceso.
Aquí culminamos la verificación y basta con sumar los valores de la simulación para saber el valor del saldo negativo, asimismo, la fecha en la que debo corregir.
ADICIONAL: En la misma planilla de ejemplo agregue la verificación de una mercadería que tenia varios saldos negativos en una sucursal y como se realizaron las simulaciones para detectar el valor real negativo.
Como mencionado existen dos caso y por ende dos soluciones.
Primera solución, caso se trate de una nota de crédito que no debió generar FATSECM, encaminar al Área de Debug para ser aplicado un script sobre ese movimiento y sacar de FATSECM.
Segunda solución, realizar una entrada interna con fecha anterior (un segundo antes) del movimiento que genero el saldo negativo por la cantidad total de las simulaciones.
Listo ! Ahora eres todo un experto en realizar las verificaciones de la comprobación base saldo en cuanto a saldos y costos de las mercaderías.
Errores relacionados a este caso: ORA-20883