Ir para conteúdo
  • Cadastre-se

wesleyblanco

Membros
  • Total de ítens

    7
  • Registro em

  • Última visita

Posts postados por wesleyblanco

  1. Em 12/03/2016 at 07:42, datilas disse:

    e aqui vai minha contribuição para o firebird 3.0

    
    create or alter function ROUNDABNT (
        AVALOR double precision,
        ADECIMAIS smallint)
    returns double precision
    AS
    declare variable cDecimais varchar(100);
    declare variable vlrstr varchar(100);
    declare variable nSubsequente smallint;
    declare variable posponto smallint;
    BEGIN
     vlrstr = Cast(AVALOR as varchar(100));
     posponto = POSITION('.',vlrstr);
     cDecimais = SUBSTRING(vlrstr from posponto+1 for CHAR_LENGTH(vlrstr));
     nSubsequente = ADECIMAIS+1;
     if (:ADECIMAIS < 1) Then
      RETURN TRUNC(AVALOR);
     else
     If (CHAR_LENGTH(cDecimais) <= :ADECIMAIS) Then
      RETURN AVALOR;
     else
      Begin
       If ((Cast(SUBSTRING(cDecimais from nSubsequente for 1) as integer) > 5) Or
           (Cast(SUBSTRING(cDecimais From nSubsequente For 1)as double precision)  < 5))  Then
        RETURN ROUND(AVALOR,ADECIMAIS);
       Else
       if (Cast(SUBSTRING(cDecimais From nSubsequente For 1)as double precision) = 5) Then
        If (MOD(Cast(SUBSTRING(cDecimais From ADECIMAIS For 1)as double precision) ,2) <> 0) Then
         RETURN ROUND(AVALOR,ADECIMAIS);
       Else
       If (Cast(SUBSTRING(cDecimais From nSubsequente+1 For 1)as double precision) > 0) Then
        RETURN ROUND(AVALOR,ADECIMAIS);
       Else
        RETURN TRUNC(AVALOR,ADECIMAIS);
      End
    END

     

    Nossa, Obrigado Datilas!

    como aqui usamos firebird 2.5, converti sua função em procedure, segue a contribuição tb:
     

    CREATE OR ALTER PROCEDURE SP_UDF_ROUNDABNT (
        AVALOR DOUBLE PRECISION,
        ADECIMAIS SMALLINT)
    RETURNS
      (
       VALOR DOUBLE PRECISION
      )
    AS
    DECLARE VARIABLE CDECIMAIS VARCHAR(100);
    DECLARE VARIABLE VLRSTR VARCHAR(100);
    DECLARE VARIABLE NSUBSEQUENTE SMALLINT;
    DECLARE VARIABLE POSPONTO SMALLINT;
    BEGIN
         VLRSTR = CAST(AVALOR AS VARCHAR(100));
         POSPONTO = POSITION('.',VLRSTR);
         CDECIMAIS = SUBSTRING(VLRSTR FROM POSPONTO+1 FOR CHAR_LENGTH(VLRSTR));
         NSUBSEQUENTE = ADECIMAIS+1;
         IF (:ADECIMAIS < 1) THEN
         BEGIN
            VALOR = TRUNC(AVALOR);
            SUSPEND;
            exit;
         END
         ELSE
         IF (CHAR_LENGTH(CDECIMAIS) <= :ADECIMAIS) THEN
         BEGIN
            VALOR = AVALOR;
            SUSPEND;
            exit;
         END
         ELSE
         BEGIN
           IF ((CAST(SUBSTRING(CDECIMAIS FROM NSUBSEQUENTE FOR 1) AS INTEGER) > 5) OR
               (CAST(SUBSTRING(CDECIMAIS FROM NSUBSEQUENTE FOR 1)AS DOUBLE PRECISION)  < 5))  THEN
           BEGIN
               VALOR = ROUND(AVALOR,ADECIMAIS);
               SUSPEND;
               exit;
           END
           ELSE
           IF (CAST(SUBSTRING(CDECIMAIS FROM NSUBSEQUENTE FOR 1)AS DOUBLE PRECISION) = 5) THEN
           begin
                   IF (MOD(CAST(SUBSTRING(CDECIMAIS FROM ADECIMAIS FOR 1)AS DOUBLE PRECISION) ,2) <> 0) THEN
                   BEGIN
                      VALOR = ROUND(AVALOR,ADECIMAIS);
                      SUSPEND;
                      exit;
                   END
                   ELSE IF (CAST(SUBSTRING(CDECIMAIS FROM NSUBSEQUENTE+1 FOR 1)AS DOUBLE PRECISION) > 0) THEN
                   BEGIN
                      VALOR = ROUND(AVALOR,ADECIMAIS);
                      SUSPEND;
                      exit;
                   END
                   ELSE
                   begin
                       VALOR = TRUNC(AVALOR,ADECIMAIS);
                       SUSPEND;
                       exit;
                   END
           end
        END
    END

    Abraço!

    • Curtir 1
    • Obrigado 1
  2. Muito Obrigado Saulo! bem observado
    mas só ontem consegui conectar, era a pinagem do cabo aqui estava errada. Liguei la na Magna e me passaram a pinagem correta

    segue para quem precisar:

    db9 femea(balança)              db9 femea (pc)

              2                           -          3

              3                           -          2

              4                           -          6

              5                           -          5  

              6                           -          4  

     

    Abraço

    • Curtir 1
  3. Boa Tarde, Estou tentando conexão com a balança Magna L-PCR-20 para ler o peso. e não estou conseguindo.. erro de timeout, peso -9,00..
    estou usando o exemplo do acbr.

    alguém aqui já usou esse modelo de balança com acbr... é compatível com o equipamento?

    No manual não possui muitos detalhes da informações de comunicação serial..como a velocidade da porta serial e protocolos em geral..Alguém poderia me ajudar?.. já tentei 1200,n,8,1  ...2400..  4800... 9600

    também não sei se o problema é o meu cabo aqui, se usa algum cabo com pinagem diferente.. pq essa balança usa cabo serial d9 femea x femea.

    Obrigado desde já

  4. Olá Boa tarde!

    Meu cliente possui o SAT da Bematech, RB 1000 FI.

    Venho tendo alguns problemas no sat, vem apresentando o "erro de validação de conteúdo" códigos 6010|1999 ("erro não identificado").

    revisei o xml e não consigo enxergar o erro.

    Fiz um teste no emulador emitindo com os mesmos itens, impostos, e formas de pagtos e nao deu o erro (aceitou).

    no cliente, fizemos um teste.. removemos um dos itens q tem nesse cupom com erro, tentamos enviar e foi aceito.
    ai pra validar o item q removemos, emiti um cupom somente com esse item e também foi aceito.


    segue um exemplo em anexo o xml rejeitado e os logs abaixo referente a essse xml


    no trecho correspondente do log extraido do aparelho sat informa a seguinte msg:

    20150819221102|SAT-AC|info|Iniciando recebimento de dados de venda...                                                          
    20150819221102|AC-SAT|erro|Especificar apenas 1 grupo dentre: PISAliq, PISQtde, PISNT, PISSN, PISOutr                          
    20150819221102|AC-SAT|erro|Dados de venda inválidos                                                                           


    e no arquivo bemaSATlog_19-08-2015.xml o erro correspondente foi:

    <Return Time="19-08-2015 22:11:04:339">653461|06010|1999|Erro de validação do conteúdo||</Return>

     


    fico grato por alguma ajuda
    Obrigado!

    AD20150819221103-653461-env.xml

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.