Pesquisa

segunda-feira, 16 de agosto de 2021

ERRO 153 ao enviar S-2299

Descrição: Data Inválida.

Ação Sugerida: Deve ser uma data maior ou igual a data de admissão e não superior a data de desligamento. 


Verifique a tag dtAvPrv no xml.

 

De acordo com a regra de validação do leiaute do eSocial para a Data do Aviso Prévio, esta data deve ser maior que a data de admissão e menor ou igual a data de desligamento (dtDeslig).






quarta-feira, 17 de abril de 2013

RM Nucleus - Dicas


Integração Vendas/Compras:
       Ao faturar ou receber um pedido de venda/compra, podemos escolher apenas os itens que farão parte do movimento gerado. Para isto basta em opções/parâmetros/tipos de movimentos escolher o movimento do pedido e na pasta de integração compras/vendas marcar o campo "Marcar os itens que farão parte do movimento gerado".
 
Fórmula Consistência:
       Esta fórmula será utilizada para consistir produtos que serão informados no movimento, portanto, a utilização desta faz com que só seja possível incluir produtos no movimento que satisfaçam o resultado da execução desta fórmula que deve ser 1.
Exemplo: SE TABPRD('COR', 'S')<>"ENTAO 1 SENAO 0 FIMSE Só serão aceitos na inclusão dos movimentos itens que tenham a cor do produto preenchidas.
 
Tempo de Digitação:
       Para melhorar o tempo de digitação de um movimento, existe uma opção para que os valores financeiros do movimento não sejam atualizados a cada item digitado. Para isto, devemos em opções/parâmetros/tipos de movimentos marcar em valores financeiros/valores extras/fórmulas, o campo desabilita cálculo automático. Desta forma, os valores só serão calculados quando for solicitado pelo usuário através do ícone de recálculo do movimento ou quando confirmar a inclusão do mesmo.
 
Movimentos - Quantidade:
       Em Parâmetros/Tipos de Movimentos/pasta Itens/Outros Dados, marcando o campo "Visualizar Qtde.Original:" será possível visualizar a quantidade do item do movimento no momento da inclusão do mesmo. Depois de incluído o movimento, se a quantidade de um item for alterada, a quantidade inicial do mesmo sempre será visualizada.
 
Fórmulas:
       Utilizando a variável de fórmula "FATCONV"  é possível se fazer conversão entre a unidade do movimento e a unidade de controle do produto.
Exemplo: Vamos supor que a unidade do movimento é Tonelada e a de controle é Quilo, utilizando esta variável o sistema fará a conversão entre a unidade do movimento e a unidade de controle, cada Tonelada será igual a 1.000 Kg.
 
       Ao se parametrizar as fórmulas de cálculo do tipo de movimento deve-se observar algumas regras:
       Não envolver MVB nas fórmulas de tributos dos itens. Computar o valor dos tributos dos itens apenas no VALOROUTROS e VALORLIQUIDO, deixando no VALORBRUTO apenas o total dos produtos.
 
Parâmetros/Tipos de Movimentos:
       É possível especificar uma Unidade Fixa no movimento. Para tal, deve-se em Opções/Parâmetros/Tipos de Movimento na pasta Itens/Outros Dados, no campo Padrão da Unidade escolher "Fixa" e, no campo Unidade Fixa, especificar a unidade do movimento, que será colocada no item do movimento independente do produto, ou seja, todos terão a unidade aqui informada.
 
Tributos no Movimento: 
       Se a base de cálculo de um tributo, depende de outro, o tributo que fará parte da base de cálculo do outro deve ser inserido primeiro no tipo de movimento.
Exemplo: Se a base de cálculo do ICMS depende do IPI ( Exemplo: KQT*KPU+LVL('IPI') ), o IPI tem que ser cadastrado primeiro nos tributos do tipo de movimento. Isto vale tanto para tributos do movimento quanto para tributos do item do movimento.
 
Relatórios:
       Para se montar um pedido de orçamento recomenda-se utilizar LD com TcOrçamento e uma LD filha com TcItmOrçamento. Se for utilizado CP (cabeçalho de página), este não deverá conter campos destas tabelas. Neste caso deve-se utilizar sentenças SQL.
 
Default Rateio Centro de Custo:
       Para que o sistema carregue os rateios do Centro de Custo e/ou Departamento pelo default do Cliente/Fornecedor, deverá ser parametrizado o tipo de movimento para que o Rateio seja por Movimento, e no cadastro do Cliente/Fornecedor na pasta Rateio deverá informa os rateios defaults.
 
Baixa automatica de lançamentos financeiros:
       Trabalhando integrado ao RM Fluxus é possível gerar lançamentos de maneira que sejam baixados automaticamente. Para isso, é necessário que o parâmetro “Baixa lançamento no vencimento da emissão” esteja marcado no movimento integrado e que o vencimento do lançamento coincida com a data de emissão do movimento.
 
Cópia por Referência:
       Podemos, no momento da cópia por referência, fazer a cópia dos tributos caso o motivo de referência seja devolução de compra/venda.
 

quinta-feira, 20 de setembro de 2012


RM PLANILHA - PASSAR PARÂMETRO PARA A CONSULTA SQL



Para passar um parâmetro de uma célula da planilha para a consulta SQL utilizamos:
:PLN_$A$1_N

Caso o parâmetro (célula) que desejamos utilizar esteja em uma outra pasta utilizamos:
:PLN_FOLHA!$A$1_N

Onde :

FOLHA -> nome da pasta da planilha
_N -> define o formato da informação que pode ser:
N = numeric
S = string
D = date
I = integer

SQL - Função para valores por extenso



CREATE FUNCTION dbo.extenso
(
@valor DECIMAL(18,2)
)
RETURNS VARCHAR(8000)
AS
BEGIN

DECLARE @valorCentavos            TINYINT       --Valor dos Centavos
DECLARE @valorInt           BIGINT         --Remove os centavos
DECLARE @valorStr           VARCHAR(20)        --Valor como string
DECLARE @pedacoStr1     VARCHAR(20)        --Pedaco da str
DECLARE @pedacoStr2     VARCHAR(20)        --Pedaco da str
DECLARE @pedacoStr3     VARCHAR(20)        --Pedaco da str
DECLARE @pedacoInt1     INT    --Pedaco da INT
DECLARE @pedacoInt2     INT    --Pedaco da INT
DECLARE @pedacoInt3     INT    --Pedaco da INT
DECLARE @menorN          INT
DECLARE @retorno VARCHAR(8000)

SET @retorno = ''
SET @valorInt = Convert(bigint, @valor)
SET @valorStr = Convert(VARCHAR(20), @valorInt)
SET @valorCentavos = Convert(int, (@valor - convert(bigint, @valor)) * 100)


--Retorna Zero
IF (@valor = 0)
BEGIN
SET @retorno = 'Zero Reaiz'
RETURN @retorno
END

DECLARE @numeros TABLE (descricao varchar(50), menor int, maior int)
DECLARE @milhar TABLE (descricaoUm varchar(50), descricaoPl Varchar(50), menor int, maior int)

INSERT INTO @numeros VALUES('Um', 1, 1)
INSERT INTO @numeros VALUES('Dois', 2, 2)
INSERT INTO @numeros VALUES('Três', 3, 3)
INSERT INTO @numeros VALUES('Quatro', 4, 4)
INSERT INTO @numeros VALUES('Cinco', 5, 5)
INSERT INTO @numeros VALUES('Seis', 6, 6)
INSERT INTO @numeros VALUES('Sete', 7, 7)
INSERT INTO @numeros VALUES('Oito', 8, 8)
INSERT INTO @numeros VALUES('Nove', 9, 9)
INSERT INTO @numeros VALUES('Dez', 10, 10)
INSERT INTO @numeros VALUES('Onze', 11, 11)
INSERT INTO @numeros VALUES('Doze', 12, 12)
INSERT INTO @numeros VALUES('Treze', 13, 13)
INSERT INTO @numeros VALUES('Catorze', 14, 14)
INSERT INTO @numeros VALUES('Quinze', 15, 15)
INSERT INTO @numeros VALUES('Dezesseis', 16, 16)
INSERT INTO @numeros VALUES('Dezessete', 17, 17)
INSERT INTO @numeros VALUES('Dezoito', 18, 18)
INSERT INTO @numeros VALUES('Dezenove', 19, 19)
INSERT INTO @numeros VALUES('Vinte', 20, 20)
INSERT INTO @numeros VALUES('Vinte e', 21, 29)
INSERT INTO @numeros VALUES('Trinta', 30, 30)
INSERT INTO @numeros VALUES('Trinta e', 31, 39)
INSERT INTO @numeros VALUES('Quarenta', 40, 40)
INSERT INTO @numeros VALUES('Quarenta e', 41, 49)
INSERT INTO @numeros VALUES('Cinquenta', 50, 50)
INSERT INTO @numeros VALUES('Cinquenta e', 51, 59)
INSERT INTO @numeros VALUES('Sessenta', 60, 60)
INSERT INTO @numeros VALUES('Sessenta e', 61, 69)
INSERT INTO @numeros VALUES('Setenta', 70, 70)
INSERT INTO @numeros VALUES('Setenta e', 71, 79)
INSERT INTO @numeros VALUES('Oitenta', 80, 80)
INSERT INTO @numeros VALUES('Oitenta e', 81, 89)
INSERT INTO @numeros VALUES('Noventa', 90, 90)
INSERT INTO @numeros VALUES('Noventa e', 91, 99)
INSERT INTO @numeros VALUES('Cem', 100, 100)
INSERT INTO @numeros VALUES('Cento e', 101, 199)
INSERT INTO @numeros VALUES('Duzentos', 200, 200)
INSERT INTO @numeros VALUES('Duzentos e', 201, 299)
INSERT INTO @numeros VALUES('Trezentos', 300, 300)
INSERT INTO @numeros VALUES('Trezentos e', 301, 399)
INSERT INTO @numeros VALUES('Quatrocentos', 400, 400)
INSERT INTO @numeros VALUES('Quatrocentos e', 401, 499)
INSERT INTO @numeros VALUES('Quinhentos', 500, 500)
INSERT INTO @numeros VALUES('Quinhentos e', 501, 599)
INSERT INTO @numeros VALUES('Seiscentos', 600, 600)
INSERT INTO @numeros VALUES('Seiscentos e', 601, 699)
INSERT INTO @numeros VALUES('Setecentos', 700, 700)
INSERT INTO @numeros VALUES('Setecentos e', 701, 799)
INSERT INTO @numeros VALUES('Oitocentos', 800, 800)
INSERT INTO @numeros VALUES('Oitocentos e', 801, 899)
INSERT INTO @numeros VALUES('Novecentos', 900, 900)
INSERT INTO @numeros VALUES('Novecentos e', 901, 999)

INSERT INTO @milhar VALUES('Mil', 'Mil', 4, 6)
INSERT INTO @milhar VALUES('Milhão', 'Milhões', 7, 9)
INSERT INTO @milhar VALUES('Bilhão', 'Bilhões', 10, 12)
INSERT INTO @milhar VALUES('Trilhão', 'Trilhões', 13, 15)
INSERT INTO @milhar VALUES('Quadrilhão', 'Quadrilhões', 16, 18)

--Busca o número de casas (sempre em 3)
SELECT TOP 1 @menorN = menor - 1 FROM @milhar WHERE menor > len(@valorStr)

--Adiciona casas a esquerda (tratando sempre de 3 em 3 casas)
SET @valorStr = replicate('0', @menorN - len(@valorStr)) + @valorStr

--Varre Convertendo os valores para valores por extenso
WHILE (len(@valorStr) > 0)
BEGIN
--Busca os 3 primeiros carac.
SET @pedacoStr1 = left(@valorStr, 3)
SET @pedacoStr2 = right(@pedacoStr1, 2)
SET @pedacoStr3 = right(@pedacoStr2, 1)
SET @pedacoInt1 = Convert(int, @pedacoStr1)
SET @pedacoInt2 = Convert(int, @pedacoStr2)
SET @pedacoInt3 = Convert(int, @pedacoStr3)

--Busca a centena
SELECT 
@retorno = @retorno + descricao + ' ' 
FROM 
@numeros 
WHERE 
((len(@pedacoInt1) = 3) AND @pedacoStr1 BETWEEN menor AND maior) 
OR ((@pedacoInt2 <> 0 AND len(@pedacoInt2) = 2) AND @pedacoInt2 BETWEEN menor AND maior)
OR ((@pedacoInt3 <> 0 AND(@pedacoInt2 < 10 OR @pedacoInt2 > 20)) AND @pedacoInt3 BETWEEN menor AND maior) --Remove de 11 a 19
ORDER BY 
maior DESC

--Define o milhar (se foi escrito algum valor para ele)
IF (@pedacoInt1 > 0)
SELECT @retorno = @retorno + CASE WHEN @pedacoInt1 > 1 THEN descricaoPL ELSE descricaoUm END + ' ' FROM @milhar WHERE (len(@valorStr) BETWEEN menor and maior)

--Remove os pedaços efetuados
SET @valorStr = right(@valorStr, len(@valorStr) - 3)

IF (convert(int, left(@valorStr, 3)) > 0)
SET @retorno = @retorno + 'e '
ELSE
IF (convert(int, @valorStr) = 0 AND len(@valorStr) = 6) /*Somente coloca na dezena*/
SET @retorno = @retorno + 'de '    
END

--Somente coloca se tiver algum valor.
IF (len(@retorno) > 0)
SET @retorno = @retorno + CASE WHEN @valorInt > 1 THEN 'Reais ' ELSE 'Real ' END


--Busca os centavos
SET @valorStr = Convert(varchar(2), @valorCentavos)

--Adiciona casas a esquerda
SET @valorStr = replicate('0', 2 - len(@valorStr)) + @valorStr

--Define os centavos
--Busca os 2 caracteres
SET @pedacoStr1 = @valorStr
SET @pedacoStr2 = right(@valorStr, 1)
SET @pedacoInt1 = Convert(int, @pedacoStr1)
SET @pedacoInt2 = Convert(int, @pedacoStr2)

--Define a descrição (Não coloca se não tiver reais)
IF (@pedacoInt1 > 0 AND (len(@retorno) > 0))
SET @retorno = @retorno + 'e '

--Busca a centena
SELECT 
@retorno = @retorno + descricao + ' ' 
FROM 
@numeros 
WHERE 
((@pedacoInt1 <> 0 AND len(@pedacoInt1) = 2) AND @pedacoInt1 BETWEEN menor AND maior)
OR ((@pedacoInt2 <> 0 AND (@pedacoInt1 < 10 OR @pedacoInt1 > 20)) AND @pedacoInt2 BETWEEN menor AND maior)
ORDER BY 
maior DESC

--Define a descrição
IF (@pedacoInt1 > 0)
SELECT @retorno = @retorno + 'Centavo' + CASE WHEN @pedacoInt1 > 1 THEN 's' ELSE '' END


RETURN @retorno
END

--Para teste:
SELECT dbo.extenso(282000.01) 


ORACLE - ERRO ORA-24247


     Na versão 11g ao utilizar a UTL_TCP, UTL_HTTP, UTL_SMTP e UTL_MAIL poderá ocorrer o erro ORA-24247: network access denied by access control list (ACL), por falta de permissões do usuário utilizado. Segue abaixo script para correção do erro:



begin
 DBMS_NETWORK_ACL_ADMIN.DROP_ACL('utl_mail.xml');
 commit;
end;

 begin
  dbms_network_acl_admin.create_acl( 'utl_smtp.xml', 'Permite enviar e-mail', 'RM', TRUE,'connect' );
  commit;
 end;

begin
 dbms_network_acl_admin.add_privilege (  'utl_smtp.xml', 'RM',  TRUE, 'resolve' );
 commit;
end;

begin
 dbms_network_acl_admin.assign_acl( 'utl_smtp.xml',  'smtp.bjsolucoes.info' );
 commit;
end;

RM Gerador - Erro "List index of bounds (5)"




Erro é apresentado ao gerar o relatório na versão 10.83.10(24) do RM Labore em base Oracle.

Solução:
Alterar configurações do BDE na aba "Configuration > Drivers > Native > Oracle
DLL32 = SQLORA8.DLL

domingo, 12 de agosto de 2012



ERRO 32 AO ABRIR O ARQUIVO 




      Trata-se de erro de permissão de criar o arquivo. Aponte para um caminho em uma pasta que o usuário do windows tenha permissão de criar arquivos.