Duvida Saldo negativo por deposito

Discussão em 'EMS , HCM e Totvs 11' iniciado por reissobr, Novembro 4, 2024.

  1. reissobr

    reissobr Membro Ativo

    bom dia.
    Vamos liberar saldo negativo para os itens que são matéria prima, e tem tipo de requisição igual a transferencia, os itens que são requisitados junto ao reporte, pelo cp0311.
    O ideal para a gente seria que o saldo negativo fosse permitido somente no deposito PRO.
    Algo tipo, se o item estiver parametrizado para permitir saldo negaitvo no CE0330, o saldo negativo somente fosse permitido no deposito PRO,

    Voces sabem se é possivel alguma UPC na CEAPI001 para implementar este controle ?

    Att;
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Eu sugiro uma trigger na movto-estoq verificando os saldos.
    reissobr curtiu isso.
  3. af.dums

    af.dums Membro Ativo

    Olá... Tenho UPC no ceapi001 para não permitir determinados usuários movimentarem em determinados depósitos, creio que seria algo na mesma linha mas validando se o movimento deixaria o saldo negativo ou não (sege parte do código):

    Código:
    {utp/ut-glob.i}
    {include/i-epc200.i1}
    
    {cep/ceapi001.i}
    
    DEFINE TEMP-TABLE tt-movto-upc LIKE tt-movto.
    
    DEFINE VARIABLE htt-movto AS HANDLE NO-UNDO.
    DEFINE VARIABLE hqr-movto AS HANDLE NO-UNDO.
    DEFINE VARIABLE hbf-movto AS HANDLE NO-UNDO.
    
    DEFINE VARIABLE hbf-movto-upc AS HANDLE NO-UNDO.
    DEFINE VARIABLE htt-erro  AS HANDLE NO-UNDO.
    
    DEFINE TEMP-TABLE tt-erro
      FIELD i-sequen AS INTEGER
      FIELD cd-erro  AS INTEGER
      FIELD mensagem AS CHARACTER.
    
    DEFINE VARIABLE d-total-req AS DECIMAL     NO-UNDO.
    
    PROCEDURE piInicio-pi-valida-lote:
    
        DEF VAR l-alternativo AS LOGICAL NO-UNDO.
    
        DEFINE INPUT PARAMETER p-ind-event AS CHARACTER NO-UNDO.
        DEFINE INPUT-OUTPUT PARAMETER TABLE FOR tt-epc.
    
        FOR EACH tt-epc NO-LOCK
           WHERE tt-epc.cod-event     = p-ind-event
             AND tt-epc.cod-parameter = "tt-movto(handle)":
    
            ASSIGN htt-movto = HANDLE(tt-epc.val-parameter)
                   hbf-movto = htt-movto:DEFAULT-BUFFER-HANDLE. 
    
            hbf-movto:FIND-CURRENT(NO-LOCK).       
    
            ASSIGN hbf-movto-upc = TEMP-TABLE tt-movto-upc:DEFAULT-BUFFER-HANDLE.
    
            IF hbf-movto:AVAILABLE THEN DO:
                hbf-movto-upc:BUFFER-CREATE().
                hbf-movto-upc:BUFFER-COPY(hbf-movto).
            END.
             
        END.
    
        FIND FIRST tt-epc NO-LOCK
             WHERE tt-epc.cod-event     = p-ind-event
               AND tt-epc.cod-parameter = "tt-erro(handle)" NO-ERROR.
        IF AVAIL tt-epc THEN
            ASSIGN htt-erro = HANDLE(tt-epc.val-parameter)
                   htt-erro = htt-erro:DEFAULT-BUFFER-HANDLE.
    
        /* HD 133501 - Nao permitir que o PCP realize REQ pelo CE0205 do dep¢sito 1 no estabel 121 */
        FOR EACH tt-movto-upc
            WHERE tt-movto-upc.cod-estabel = "121"
              AND tt-movto-upc.esp-docto = 28 /*REQ*/ :
    
            IF tt-movto-upc.cod-prog-orig = "v08in218" /*viewer do CE0205 que fica no registro da movimentacao*/ THEN DO:
                IF tt-movto-upc.nr-ord-prod <> 0 AND 
                   tt-movto-upc.cod-depos = "1" THEN DO:
    
                    IF NOT CAN-FIND(FIRST ord-manut
                                    WHERE ord-manut.nr-ord-prod = tt-movto-upc.nr-ord-prod) THEN DO:
                        htt-erro:BUFFER-CREATE.
                        ASSIGN htt-erro:BUFFER-FIELD(1):BUFFER-VALUE = 1
                               htt-erro:BUFFER-FIELD(2):BUFFER-VALUE = 2
                               htt-erro:BUFFER-FIELD(3):BUFFER-VALUE = "OP nao pode requisitar em Dep 1".
                        RETURN "NOK":U.
                    END.
    
                END.
            END.
        END.
        /* Fim HD 133501 */
    
    END PROCEDURE.
    
    
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    eu fui mais hardcore, fui direto na trigger, qualquer coisa que fizer write na tabela, já filtra.

    fui mais

Compartilhe esta Página