01. DADOS GERAIS

Produto:

TOTVS Logística WMS

Linha de Produto:

Linha Datasul

Segmento:

Logística

Módulo:MWM - Warehouse Management System
Função:WM9084a
País:Brasil
Ticket:11727206
Requisito/Story/Issue (informe o requisito relacionado) :

FSWSES-2277


02. DESCRIÇÃO

Ponto UPC para realizar a chamada do programa wm9000 através de regras específicas.

03. LOCALIZAÇÃO

No botão OK.

04. PARÂMETROS

1) Rowid tabela etiquetas (wm-etiqueta)

2) Código depóstico (wm-local.cod-depositoc)

3) Variável indicando se desfez a movimentação

4) Tabela temporário com os erros (RowErrors).

05. RETORNO

1) Variável lógica que indica se o específico foi executado

2) Variável lógica que indica se o processo pode ser finalizado.

06. VERSÕES

12.1.31 ou superiores

08. EXEMPLO

/****************************************************************************************************************
** Cliente.....: Borrachas Vipal
** Programa....: wm9084a-upc.p
****************************************************************************************************************/
{include/i-epc200.i}

DEFINE INPUT        PARAMETER p-ind-event AS CHARACTER NO-UNDO.
DEFINE INPUT-OUTPUT PARAMETER TABLE FOR tt-epc.

DEFINE VARIABLE htt1          AS HANDLE NO-UNDO.
DEFINE VARIABLE hQTTErro      AS HANDLE NO-UNDO.
DEFINE VARIABLE hBTTErro      AS HANDLE NO-UNDO.

DEFINE VARIABLE h-ErrorSequence     AS WIDGET-HANDLE      NO-UNDO.
DEFINE VARIABLE h-ErrorNumber       AS WIDGET-HANDLE      NO-UNDO.
DEFINE VARIABLE h-ErrorParameters   AS WIDGET-HANDLE      NO-UNDO.
DEFINE VARIABLE h-ErrorType         AS WIDGET-HANDLE      NO-UNDO.
DEFINE VARIABLE h-ErrorSubType      AS WIDGET-HANDLE      NO-UNDO.
DEFINE VARIABLE h-ErrorDescription  AS WIDGET-HANDLE      NO-UNDO.

DEFINE NEW GLOBAL SHARED VARIABLE h-tt-erro AS WIDGET-HANDLE  NO-UNDO.

IF p-ind-event = "estornaEtiqueta" THEN DO:
   FIND FIRST tt-epc
        WHERE tt-epc.cod-event     = p-ind-event
          AND tt-epc.cod-parameter = "estornaEtiqueta" NO-ERROR.
   IF AVAIL tt-epc THEN DO:

       ASSIGN r-wm-etiqueta  = TO-ROWID(ENTRY(1,tt-epc.val-parameter,"|"))
              c-cod-deposito = ENTRY(2,tt-epc.val-parameter,"|")
              l-desfez-movimento = logical(ENTRY(3,tt-epc.val-parameter,"|")).

       FIND FIRST wm-etiqueta NO-LOCK 
            WHERE rowid(wm-etiqueta) = r-wm-etiqueta NO-ERROR. 

       IF NOT VALID-HANDLE(hProxy) THEN
           RUN wmp/wmprx379.p PERSISTENT SET hProxy.

       IF VALID-HANDLE(hProxy) THEN DO:
           RUN proxyConecta IN hProxy.

           IF l-desfez-movimento THEN
               RUN atualizaAlocacao IN hProxy (INPUT wm-etiqueta.id-etiqueta,
                                               INPUT c-cod-deposito).
           IF RETURN-VALUE = "NOK":U THEN DO:
               create tt-epc.
               assign tt-epc.cod-event     = p-ind-event
                      tt-epc.cod-parameter = "l-executa-upc"
                      tt-epc.val-parameter = string(YES) + "|" + STRING("NOK").
               RETURN "NOK":U.
           END.               

           FIND FIRST wm-item WHERE
               wm-item.cod-item = wm-etiqueta.cod-item NO-LOCK NO-ERROR.

           RUN efetuaEstorno IN hProxy (INPUT wm-etiqueta.nr-ord-prod,
                                        INPUT (IF wm-item.ind-unid-cont = 1 THEN wm-etiqueta.qtd-item ELSE wm-etiqueta.qtd-peso)).

           RUN retornaErros IN hProxy (OUTPUT TABLE tt-erro).

           RUN destroy IN hProxy.

           DELETE PROCEDURE hProxy NO-ERROR.
           ASSIGN hProxy = ?.
       END.

       IF CAN-FIND (FIRST tt-erro) THEN DO:
           FOR EACH tt-erro:

               RUN piCreateError (INPUT tt-erro.cd-erro,
                                  INPUT ?,
                                  INPUT tt-erro.mensagem).
           END.

           FIND FIRST tt-epc
                WHERE tt-epc.cod-event     = p-ind-event
                  AND tt-epc.cod-parameter = "handle-RowErrors" NO-ERROR.
           IF AVAIL tt-epc THEN DO:
        
               ASSIGN h-tt-erro = WIDGET-HANDLE(tt-epc.val-parameter).
        	   ASSIGN htt1 = h-tt-erro:DEFAULT-BUFFER-HANDLE.
               
               CREATE BUFFER hBTTErro FOR TABLE htt1 BUFFER-NAME "tt-erro".
               CREATE QUERY hQTTErro.
               hQTTErro:SET-BUFFERS(hBTTErro).
               IF VALID-HANDLE(hQTTErro) THEN
                   ASSIGN hQTTErro:FORWARD-ONLY = YES.
               hQTTErro:QUERY-PREPARE("FOR EACH tt-erro").
               hQTTErro:QUERY-OPEN.
               hQTTErro:GET-FIRST.

               FOR EACH RowErrors:

                  hBTTErro:BUFFER-CREATE().
    
                  ASSIGN h-ErrorSequence    = hBTTErro:BUFFER-FIELD("ErrorSequence")
                         h-ErrorNumber      = hBTTErro:BUFFER-FIELD("ErrorNumber")
                         h-ErrorParameters  = hBTTErro:BUFFER-FIELD("ErrorParameters")
                         h-ErrorType        = hBTTErro:BUFFER-FIELD("ErrorType")
                         h-ErrorSubType     = hBTTErro:BUFFER-FIELD("ErrorSubType")
                         h-ErrorDescription = hBTTErro:BUFFER-FIELD("ErrorDescription").
    
                  ASSIGN h-ErrorSequence:BUFFER-VALUE    = RowErrors.ErrorSequence   
                         h-ErrorNumber:BUFFER-VALUE      = RowErrors.ErrorNumber     
                         h-ErrorParameters:BUFFER-VALUE  = RowErrors.ErrorParameters 
                         h-ErrorType:BUFFER-VALUE        = RowErrors.ErrorType       
                         h-ErrorSubType:BUFFER-VALUE     = RowErrors.ErrorSubType    
                         h-ErrorDescription:BUFFER-VALUE = RowErrors.ErrorDescription.
               END.
           END.

           IF CAN-FIND(FIRST RowErrors
                       WHERE RowErrors.ErrorSubType = "ERROR") THEN DO:
               create tt-epc.
               assign tt-epc.cod-event     = p-ind-event
                      tt-epc.cod-parameter = "l-executa-upc"
                      tt-epc.val-parameter = string(YES) + "|" + STRING("NOK").
               RETURN "NOK":U.           
           END.
           ELSE DO:
               create tt-epc.
               assign tt-epc.cod-event     = p-ind-event
                      tt-epc.cod-parameter = "l-executa-upc"
                      tt-epc.val-parameter = string(YES) + "|" + STRING("OK").
               RETURN "OK":U.
           END.
       END.

       create tt-epc.
       assign tt-epc.cod-event     = p-ind-event
              tt-epc.cod-parameter = "l-executa-upc"
              tt-epc.val-parameter = string(YES) + "|" + STRING("").

    END.
END.

RETURN "OK":U.