Essa rotina permite ajustar o saldo do produto e seu Kardex, de acordo com a opção de processamento selecionada:
Realizar o ajuste do Kardex (D13) com base no saldo por endereço (D14).
Para esse ajuste é considerado o saldo do último fechamento (D15) mais o resultado do Kardex (D13), sendo então comparado com o saldo por endereço WMS (D14).
Ao final do processamento, caso seja identificada alguma divergência para mais ou para menos, é realizada a inclusão de um registro de Kardex com o valor da divergência, sendo que este pode ser localizado pelo D13_DOC igual a AJT_D14.
Essa opção pode ser utilizada quando o saldo por endereço WMS (D14) está correto, porém, o Kardex encontra-se com divergência.
Realizar o ajuste do saldo por endereço WMS (D14) e do Kardex (D13), com base no saldo em estoque (SB2 ou SB8).
Essa opção executa as seguintes ações:
1, Executa o ajuste de Kardex por endereço, conforme descrito na Opção 1.
2. Compara o saldo por endereço WMS (D14) com o saldo do produto (SB2) ou o saldo do produto por lote (SB8), dependendo da característica do produto.
3. Existindo divergência para mais ou para menos, o sistema gerará um saldo negativo ou positivo no endereço INVENTARIO.
4. O Kardex também será ajustado para registrar essa movimentação de entrada ou saída do endereço INVENTARIO, sendo que esse registro de Kardex pode ser identificado pelo D13_DOC igual a AJT_SB2.
Essa opção não ajusta o saldo do produto (SB2) e o saldo do produto por lote (SB8), portanto, é imprescindível a realização do Inventário (por produto ou endereço) para que o sistema reflita o armazenamento físico e remova o saldo do endereço fictício chamado de INVENTARIO.
Essa opção pode ser utilizada quando o saldo do produto (SB2 e SB8) está correto, porém, o saldo por endereço WMS (D14) encontra-se com divergência.
Realizar o ajuste do saldo do produto (SB2 e SB8), de acordo com o saldo por endereço do WMS (D14).
Essa opção executa as seguintes ações:
1. Ajuste de Kardex por endereço, conforme descrito na Opção 1.
2. Ajuste de saldo WMS, conforme descrito na Opção 2.
3. Verifica o saldo da divergência registrado no endereço INVENTARIO e efetua o ajuste na SB2 e SB8, para mais ou para menos, pelos movimentos internos (SD3). Esse registro de movimentação interna pode ser identificado pelo D3_DOC igual a AJT_SB2 .
Se no final do processamento houver sobra de saldo no endereço INVENTARIO, por conta de um ajuste no qual o saldo de estoque (SB2/SB8) é maior que o saldo por endereço WMS (D14), é imprescindível que o Inventário (por produto ou endereço) seja realizado, para que possa refletir o armazenamento físico e remova o saldo desse endereço fictício.
Essa opção pode ser utilizada quando o saldo por endereço WMS (D14) está correto, porém, o saldo de estoque (SB2 e SB8) encontra-se com divergência.
Se a versão do sistema for inferior a 12.1.27, é necessário aplicar o sdfbra via Configurador (SIGACFG) para gerar os Perguntes (SX1) das novas rotinas.
Se a versão do sistema for inferior a 12.1.27, as rotinas WMSA580 e WMSA585 devem ser incluídas no Menu de forma manual, via Configurador (SIGACFG).
Deve existir um endereço INVENTARIO (exatamente com essa nomenclatura) no Cadastro de Endereço (SBE).
O saldo por produto (SB2) e o saldo por lote (SB8) não podem apresentar divergências. Caso contrário, será necessário utilizar o refaz saldos do módulo de materiais ou realizar o ajuste manual.
A utilização das rotinas WMSA580 e WMSA585 deve ser pontual, pois o ideal é sempre identificar a origem do desbalanceamento de saldo.
Após utilizar essas rotinas é recomendável realizar o Inventário, para garantir que o saldo do sistema reflita o saldo físico. Principalmente se o endereço INVENTARIO constar com alguma quantidade (positiva ou negativa) pois isso significa que existiu uma diferença entre SB2/SB8 e D14 que precisou ser ajustada.
DECLARE @DataFechamento DATE; SET @DataFechamento = '20191218'; DECLARE @ProdutoOrigem VARCHAR(15); SET @ProdutoOrigem = 'PC'; DECLARE @Produto VARCHAR(15); SET @Produto = 'PC'; DECLARE @Armazem VARCHAR(2); SET @Armazem = '02'; SELECT TOT.TOT_LOCAL ,TOT.TOT_ENDER ,TOT.TOT_PRDORI ,TOT.TOT_PRODUT ,TOT.TOT_LOTECT ,TOT.TOT_NUMLOT ,TOT.TOT_NUMSER ,TOT.TOT_IDUNIT ,TOT.TOT_QTDEST - ((TOT.TOT_QTDINI + TOT.TOT_QTDENT) - TOT.TOT_QTDSAI) DIFERENCA_D14_D13 FROM ( SELECT TOT_LOCAL ,TOT_ENDER ,TOT_PRDORI ,TOT_PRODUT ,TOT_LOTECT ,TOT_NUMLOT ,TOT_NUMSER ,TOT_IDUNIT ,CASE WHEN FCH.FCH_DATA IS NULL THEN '19800101' ELSE FCH.FCH_DATA END TOT_DATA ,CAST(( CASE WHEN SLD_QTDEST IS NULL THEN 0 ELSE SLD_QTDEST END ) AS DECIMAL(12, 3)) TOT_QTDEST ,CAST(( CASE WHEN FCH.FCH_SALDO IS NULL THEN 0 ELSE FCH.FCH_SALDO END ) AS DECIMAL(12, 3)) TOT_QTDINI ,CAST(( CASE WHEN ENT.ENT_SALDO IS NULL THEN 0 ELSE ENT.ENT_SALDO END ) AS DECIMAL(12, 3)) TOT_QTDENT ,CAST(( CASE WHEN SAI.SAI_SALDO IS NULL THEN 0 ELSE SAI.SAI_SALDO END ) AS DECIMAL(12, 3)) TOT_QTDSAI FROM ( SELECT D14.D14_LOCAL TOT_LOCAL ,D14.D14_ENDER TOT_ENDER ,D14.D14_PRDORI TOT_PRDORI ,D14.D14_PRODUT TOT_PRODUT ,D14.D14_LOTECT TOT_LOTECT ,D14.D14_NUMLOT TOT_NUMLOT ,D14.D14_NUMSER TOT_NUMSER ,D14.D14_IDUNIT TOT_IDUNIT FROM D14990 D14 WHERE D14.D14_FILIAL = '01' AND D14.D_E_L_E_T_ = ' ' UNION ALL SELECT D13.D13_LOCAL TOT_LOCAL ,D13.D13_ENDER TOT_ENDER ,D13.D13_PRDORI TOT_PRDORI ,D13.D13_PRODUT TOT_PRODUT ,D13.D13_LOTECT TOT_LOTECT ,D13.D13_NUMLOT TOT_NUMLOT ,D13.D13_NUMSER TOT_NUMSER ,D13.D13_IDUNIT TOT_IDUNIT FROM D13990 D13 WHERE D13.D13_FILIAL = '01' AND D13.D_E_L_E_T_ = ' ' ) TOT LEFT JOIN ( SELECT D14.D14_LOCAL SLD_LOCAL ,D14.D14_ENDER SLD_ENDER ,D14.D14_PRDORI SLD_PRDORI ,D14.D14_PRODUT SLD_PRODUT ,D14.D14_LOTECT SLD_LOTECT ,D14.D14_NUMLOT SLD_NUMLOT ,D14.D14_NUMSER SLD_NUMSER ,D14.D14_IDUNIT SLD_IDUNIT ,D14.D14_QTDEST SLD_QTDEST FROM D14990 D14 WHERE D14.D14_FILIAL = '01' AND D14.D_E_L_E_T_ = ' ' ) SLD ON SLD.SLD_LOCAL = TOT.TOT_LOCAL AND SLD.SLD_ENDER = TOT.TOT_ENDER AND SLD.SLD_PRDORI = TOT.TOT_PRDORI AND SLD.SLD_PRODUT = TOT.TOT_PRODUT AND SLD.SLD_LOTECT = TOT.TOT_LOTECT AND SLD.SLD_NUMLOT = TOT.TOT_NUMLOT AND SLD.SLD_NUMSER = TOT.TOT_NUMSER AND SLD.SLD_IDUNIT = TOT.TOT_IDUNIT LEFT JOIN ( SELECT MAX(D15.D15_DATA) FCH_DATA ,D15.D15_LOCAL FCH_LOCAL ,D15.D15_ENDER FCH_ENDER ,D15.D15_PRDORI FCH_PRDORI ,D15.D15_PRODUT FCH_PRODUT ,D15.D15_LOTECT FCH_LOTECT ,D15.D15_NUMLOT FCH_NUMLOT ,D15.D15_NUMSER FCH_NUMSER ,D15.D15_IDUNIT FCH_IDUNIT ,D15.D15_QINI FCH_SALDO FROM D15990 D15 WHERE D15.D15_FILIAL = '01' AND D15.D15_DATA = @DataFechamento AND D15.D_E_L_E_T_ = ' ' GROUP BY D15.D15_LOCAL ,D15.D15_ENDER ,D15.D15_PRDORI ,D15.D15_PRODUT ,D15.D15_LOTECT ,D15.D15_NUMLOT ,D15.D15_NUMSER ,D15.D15_IDUNIT ,D15.D15_QINI ) FCH ON FCH.FCH_LOCAL = TOT.TOT_LOCAL AND FCH.FCH_ENDER = TOT.TOT_ENDER AND FCH.FCH_PRDORI = TOT.TOT_PRDORI AND FCH.FCH_PRODUT = TOT.TOT_PRODUT AND FCH.FCH_LOTECT = TOT.TOT_LOTECT AND FCH.FCH_NUMLOT = TOT.TOT_NUMLOT AND FCH.FCH_NUMSER = TOT.TOT_NUMSER AND FCH.FCH_IDUNIT = TOT.TOT_IDUNIT LEFT JOIN ( SELECT D13.D13_LOCAL ENT_LOCAL ,D13.D13_ENDER ENT_ENDER ,D13.D13_PRDORI ENT_PRDORI ,D13.D13_PRODUT ENT_PRODUT ,D13.D13_LOTECT ENT_LOTECT ,D13.D13_NUMLOT ENT_NUMLOT ,D13.D13_NUMSER ENT_NUMSER ,D13.D13_IDUNIT ENT_IDUNIT ,SUM(D13.D13_QTDEST) ENT_SALDO FROM D13990 D13 WHERE D13.D13_FILIAL = '01' AND D13.D13_DTESTO > @DataFechamento AND D13.D13_TM = '499' AND D13.D13_USACAL <> '2' AND D13.D_E_L_E_T_ = ' ' GROUP BY D13.D13_LOCAL ,D13.D13_ENDER ,D13.D13_PRDORI ,D13.D13_PRODUT ,D13.D13_LOTECT ,D13.D13_NUMLOT ,D13.D13_NUMSER ,D13.D13_IDUNIT ) ENT ON ENT.ENT_LOCAL = TOT.TOT_LOCAL AND ENT.ENT_ENDER = TOT.TOT_ENDER AND ENT.ENT_PRDORI = TOT.TOT_PRDORI AND ENT.ENT_PRODUT = TOT.TOT_PRODUT AND ENT.ENT_LOTECT = TOT.TOT_LOTECT AND ENT.ENT_NUMLOT = TOT.TOT_NUMLOT AND ENT.ENT_NUMSER = TOT.TOT_NUMSER AND ENT.ENT_IDUNIT = TOT.TOT_IDUNIT LEFT JOIN ( SELECT D13.D13_LOCAL SAI_LOCAL ,D13.D13_ENDER SAI_ENDER ,D13.D13_PRDORI SAI_PRDORI ,D13.D13_PRODUT SAI_PRODUT ,D13.D13_LOTECT SAI_LOTECT ,D13.D13_NUMLOT SAI_NUMLOT ,D13.D13_NUMSER SAI_NUMSER ,D13.D13_IDUNIT SAI_IDUNIT ,SUM(D13.D13_QTDEST) SAI_SALDO FROM D13990 D13 WHERE D13.D13_FILIAL = '01' AND D13.D13_DTESTO > @DataFechamento AND D13.D13_TM = '999' AND D13.D13_USACAL <> '2' AND D13.D_E_L_E_T_ = ' ' GROUP BY D13.D13_LOCAL ,D13.D13_ENDER ,D13.D13_PRDORI ,D13.D13_PRODUT ,D13.D13_LOTECT ,D13.D13_NUMLOT ,D13.D13_NUMSER ,D13.D13_IDUNIT ) SAI ON SAI.SAI_LOCAL = TOT.TOT_LOCAL AND SAI.SAI_ENDER = TOT.TOT_ENDER AND SAI.SAI_PRDORI = TOT.TOT_PRDORI AND SAI.SAI_PRODUT = TOT.TOT_PRODUT AND SAI.SAI_LOTECT = TOT.TOT_LOTECT AND SAI.SAI_NUMLOT = TOT.TOT_NUMLOT AND SAI.SAI_NUMSER = TOT.TOT_NUMSER AND SAI.SAI_IDUNIT = TOT.TOT_IDUNIT GROUP BY TOT.TOT_LOCAL ,TOT.TOT_ENDER ,TOT.TOT_PRDORI ,TOT.TOT_PRODUT ,TOT.TOT_LOTECT ,TOT.TOT_NUMLOT ,TOT.TOT_NUMSER ,TOT.TOT_IDUNIT ,FCH.FCH_DATA ,SLD.SLD_QTDEST ,FCH.FCH_SALDO ,ENT.ENT_SALDO ,SAI.SAI_SALDO ) TOT WHERE (TOT.TOT_QTDEST - ((TOT.TOT_QTDINI + TOT.TOT_QTDENT) - TOT.TOT_QTDSAI)) <> 0 AND TOT.TOT_LOCAL = @Armazem AND TOT.TOT_PRDORI = @Produto |
DECLARE @DataFechamento DATE; SET @DataFechamento = '20191218'; DECLARE @ProdutoOrigem VARCHAR(15); SET @ProdutoOrigem = 'PC'; DECLARE @Produto VARCHAR(15); SET @Produto = 'PC'; DECLARE @Armazem VARCHAR(2); SET @Armazem = '02'; SELECT SUM(D14.D14_QTDEST) D14_QTDEST ,SB2.B2_QATU ,D14.D14_LOCAL ,D14.D14_PRODUT FROM D14990 D14 INNER JOIN SB2990 SB2 ON SB2.B2_FILIAL = '01' AND SB2.B2_COD = D14.D14_PRODUT AND SB2.B2_LOCAL = D14.D14_LOCAL AND SB2.D_E_L_E_T_ = ' ' WHERE D14.D_E_L_E_T_ = ' ' AND D14.D14_PRODUT = @Produto GROUP BY D14.D14_PRODUT ,D14.D14_LOCAL ,B2_QATU HAVING CAST(SUM(D14.D14_QTDEST) AS DECIMAL(12, 3)) <> CAST(SB2.B2_QATU AS DECIMAL(12, 3)) |
DECLARE @DataFechamento DATE; SET @DataFechamento = '20191218'; DECLARE @ProdutoOrigem VARCHAR(15); SET @ProdutoOrigem = 'PC'; DECLARE @Produto VARCHAR(15); SET @Produto = 'PC'; DECLARE @Armazem VARCHAR(2); SET @Armazem = '02'; SELECT SUM(D14.D14_QTDEST) D14_QTDEST ,SB8.B8_SALDO ,D14.D14_LOCAL ,D14.D14_PRODUT FROM D14990 D14 INNER JOIN ( SELECT SUM(SB8.B8_SALDO) B8_SALDO ,SB8.B8_PRODUTO ,SB8.B8_LOCAL FROM SB8990 SB8 WHERE SB8.B8_FILIAL = '01' AND SB8.D_E_L_E_T_ = ' ' GROUP BY SB8.B8_PRODUTO ,SB8.B8_LOCAL ) SB8 ON SB8.B8_PRODUTO = D14.D14_PRDORI AND SB8.B8_LOCAL = D14.D14_LOCAL WHERE D14.D_E_L_E_T_ = ' ' AND D14.D14_PRODUT = @Produto GROUP BY D14.D14_PRODUT ,D14.D14_LOCAL ,SB8.B8_SALDO HAVING CAST(SUM(D14.D14_QTDEST) AS DECIMAL(12, 3)) <> CAST(SB8.B8_SALDO AS DECIMAL(12, 3)) |
Principais Campos e Parâmetros
Campo | Descrição | |
---|---|---|
Armazém De? Armazém Até? | Armazéns que deverão ser considerados na seleção para a análise do Kardex por endereço.
| |
Produto De? Produto Até? | Produtos origem que deverão ser considerados na análise do Kardex por endereço.
| |
Análise / Ajuste? | Forma como deverá ser efetuada a análise ou o ajuste:
| |
Lote? | Código do lote do produto que deverá ser considerado na análise do Kardex por endereço.
| |
Sublote? | Código do sublote do produto que deverá ser considerado na análise do kardex por endereço.
| |
Número de Série? | Número de série que deverá ser considerado na análise do Kardex por endereço.
| |
Unitizador? | Unitizador que deverá ser considerado na análise do Kardex por endereço.
|
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |