[RESOLVIDO] SF0018f.i1

Discussão em 'EMS , HCM e Totvs 11' iniciado por valdir_fantin, Junho 2, 2014.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. valdir_fantin

    valdir_fantin Membro Participativo

    Pessal alguem tem esse fonte sfc/sf0018f.i1 (pi-calcula-tempo-corrido)

    É uma rotina interna da Bo boin469b
  2. andcamargo

    andcamargo Sem Pontuação

    PROCEDURE pi-calcula-tempo-corrido:
    DEF INPUT-OUTPUT PARAMETER p-dat-inic AS DATE NO-UNDO.
    DEF INPUT-OUTPUT PARAMETER p-qtd-segs-inic AS DEC DECIMALS 0 NO-UNDO. /*Segundos*/
    DEF INPUT-OUTPUT PARAMETER p-dat-fim AS DATE NO-UNDO.
    DEF INPUT-OUTPUT PARAMETER p-qtd-segs-fim AS DEC DECIMALS 0 NO-UNDO. /*Segundos*/
    DEF INPUT-OUTPUT PARAMETER p-qtd-tempo AS DEC DECIMALS 0 NO-UNDO. /*Segundos*/

    DEF VAR de-tempo-aux AS DEC DECIMALS 0 NO-UNDO. /*Tempo Auxiliar*/

    if p-dat-inic = ? and
    p-dat-fim = ? then RETURN "NOK":U.

    IF p-dat-inic = 12/31/9999 THEN DO:
    ASSIGN p-dat-fim = 12/31/9999
    p-qtd-segs-fim = 86399.
    RETURN.
    END.

    if p-dat-inic <> ? and p-dat-fim = ? then do:
    /*Determina Fim do Evento*/
    ASSIGN de-tempo-aux = TRUNCATE(p-qtd-tempo / 86400,0)
    p-dat-fim = p-dat-inic + de-tempo-aux
    de-tempo-aux = p-qtd-tempo MOD 86400
    p-qtd-segs-fim = p-qtd-segs-inic + de-tempo-aux.

    IF p-qtd-segs-fim >= 86400 THEN
    ASSIGN p-dat-fim = p-dat-fim + 1
    p-qtd-segs-fim = p-qtd-segs-fim MOD 86400.
    end.
    else do:
    if p-dat-inic = ? and p-dat-fim <> ? then do:
    /*Determina Inicio do Evento*/

    ASSIGN de-tempo-aux = TRUNCATE(p-qtd-tempo / 86400,0)
    p-dat-inic = p-dat-fim - de-tempo-aux
    de-tempo-aux = p-qtd-tempo MOD 86400
    p-qtd-segs-inic = p-qtd-segs-fim - de-tempo-aux.

    IF p-qtd-segs-inic < 0 THEN
    ASSIGN p-dat-inic = p-dat-inic - 1
    p-qtd-segs-inic = 86400 - abs(p-qtd-segs-inic).
    end.
    else do:
    /*Determina Tempo do Evento*/
    ASSIGN p-qtd-tempo = (p-dat-fim + 1 - p-dat-inic) * 3600 * 24 /*Dias*/.

    ASSIGN p-qtd-tempo = p-qtd-tempo - (p-qtd-segs-inic)
    p-qtd-tempo = p-qtd-tempo - (86400 - p-qtd-segs-fim).
    end.
    end.
    IF p-dat-inic = ? THEN
    ASSIGN p-dat-inic = 01/01/1800
    p-qtd-segs-inic = 0.
    IF p-dat-fim = ? THEN
    ASSIGN p-dat-fim = 12/31/9999
    p-qtd-segs-fim = 86399.
    IF p-qtd-tempo = ? THEN
    ASSIGN p-qtd-tempo = 0.
    END.
  3. valdir_fantin

    valdir_fantin Membro Participativo

Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página