Você está na página 1de 4

DEFINE TEMP-TABLE ttResumoItem NO-UNDO

FIELD id-box LIKE wm-box-saldo.id-box


FIELD ind-status-box LIKE wm-box-saldo.ind-status-box
FIELD ind-status-saldo LIKE wm-box-saldo.ind-status-saldo
FIELD cod-embalagem LIKE wm-box-saldo.cod-embalagem
FIELD qtd-item LIKE wm-box-saldo.qtd-item
FIELD qtd-item-alocad LIKE wm-box-saldo.qtd-item-bloq
FIELD qtd-item-liberado LIKE wm-box-saldo.qtd-item-bloq
FIELD RowNum AS INTEGER
FIELD r-RowId AS ROWID
INDEX w-res01 id-box
cod-embalagem
ind-status-saldo.

DEF VAR qtd-atual LIKE wm-box-saldo.qtd-item NO-UNDO.


DEF VAR qtd-liberada LIKE wm-box-saldo.qtd-item NO-UNDO.

OUTPUT TO c:\temp\wms-saldo-estoq.csv.
PUT UNFORMATTED "estabel"
";" "local "
";" "cliente "
";" "item "
";" "refer "
";" "lote "
";" "wmsaldoestoqqtd-atual "
";" "wmsaldoestoqwmqtd-liberada "
";" "qtd-atual "
";" "qtd-liberada " SKIP.

FOR EACH wm-saldo-estoq


WHERE wm-saldo-estoq.cod-estabel = "119"
AND wm-saldo-estoq.cod-local = "W04" :

FOR FIRST ITEM FIELD (cod-obsol) NO-LOCK


WHERE ITEM.it-codigo = wm-saldo-estoq.cod-item:

END.

IF AVAIL ITEM AND ITEM.cod-obsol = 4 THEN NEXT.

ASSIGN qtd-atual = 0
qtd-liberada = 0.

RUN mostraQuantidadeLiberadaAtualWm0400 ( INPUT wm-saldo-estoq.cod-


estabel,
INPUT wm-saldo-estoq.cod-local,
INPUT wm-saldo-estoq.cod-
cliente, /* cliente */
INPUT wm-saldo-estoq.cod-
item, /* item */
INPUT wm-saldo-estoq.cod-refer,
/* referencia */
INPUT wm-saldo-estoq.cod-
lote, /* lote */
OUTPUT qtd-atual,

OUTPUT TABLE ttResumoItem).


FOR EACH ttResumoItem:
ASSIGN qtd-liberada = qtd-liberada + ttResumoItem.qtd-item-
liberado.
END.

IF qtd-liberada <> wm-saldo-estoq.qtd-liberada OR


qtd-atual <> wm-saldo-estoq.qtd-atual THEN DO:

PUT UNFORMATTE wm-saldo-estoq.cod-estabel ";"


wm-saldo-estoq.cod-local ";"
wm-saldo-estoq.cod-cliente ";"
wm-saldo-estoq.cod-item ";"
wm-saldo-estoq.cod-refer ";"
wm-saldo-estoq.cod-lote ";"
wm-saldo-estoq.qtd-atual ";"
wm-saldo-estoq.qtd-liberada ";"
qtd-atual ";"
qtd-liberada SKIP.

IF qtd-liberada <> wm-saldo-estoq.qtd-liberada THEN


// assign wm-saldo-estoq.qtd-liberada = qtd-liberada.

IF qtd-atual <> wm-saldo-estoq.qtd-atual THEN


// ASSIGN wm-saldo-estoq.qtd-atual = qtd-atual.

END.
END.

OUTPUT CLOSE.

PROCEDURE mostraQuantidadeLiberadaAtualWm0400:

DEF INPUT PARAM pcCodEstabel LIKE wm-box-saldo.cod-estabel NO-UNDO.


DEF INPUT PARAM pcCodLocal LIKE wm-box-saldo.cod-local NO-UNDO.
DEF INPUT PARAM pcCodCliente LIKE wm-box-saldo.cod-cliente NO-UNDO.
DEF INPUT PARAM pcCodItem LIKE wm-box-saldo.cod-item NO-UNDO.
DEF INPUT PARAM pcCodRefer LIKE wm-box-saldo.cod-refer NO-UNDO.
DEF INPUT PARAM pcCodLote LIKE wm-box-saldo.cod-lote NO-UNDO.
DEF OUTPUT PARAM pqtd-atual LIKE wm-box-saldo.qtd-item NO-UNDO.
DEF OUTPUT PARAM TABLE FOR ttResumoItem.

DEFINE VARIABLE de-qtd-destinado LIKE wm-box-saldo.qtd-item NO-UNDO.


DEFINE VARIABLE de-qtd-comprometida-resup LIKE wm-box-saldo.qtd-item NO-UNDO.

EMPTY TEMP-TABLE ttResumoItem.

/* cria ttResumoItem-aux com base na wm-box-saldo */


FOR EACH wm-box-saldo
WHERE wm-box-saldo.cod-cliente = pcCodCliente
AND wm-box-saldo.cod-estabel = pcCodEstabel
AND wm-box-saldo.cod-local = pcCodLocal
AND wm-box-saldo.cod-item = pcCodItem
AND wm-box-saldo.cod-refer = pcCodRefer
AND wm-box-saldo.cod-lote = pcCodLote NO-LOCK:

FIND FIRST ttResumoItem


WHERE ttResumoItem.id-box = wm-box-saldo.id-box
AND ttResumoItem.cod-embalagem = wm-box-saldo.cod-embalagem
AND ttResumoItem.ind-status-saldo = wm-box-saldo.ind-status-saldo NO-
LOCK NO-ERROR.
IF NOT AVAIL ttResumoItem THEN DO:
CREATE ttResumoItem.
ASSIGN ttResumoItem.id-box = wm-box-saldo.id-box
ttResumoItem.cod-embalagem = wm-box-saldo.cod-embalagem
ttResumoItem.ind-status-saldo = wm-box-saldo.ind-status-saldo
ttResumoItem.qtd-item = 0.
END.

ASSIGN pqtd-atual = pqtd-atual + (wm-box-saldo.qtd-item - wm-box-saldo.qtd-


item-bloq).

ASSIGN ttResumoItem.qtd-item = ttResumoItem.qtd-item + (wm-box-saldo.qtd-item


- wm-box-saldo.qtd-item-bloq).
/* s¾ considera liberado o saldo que tiver status = liberado */
IF ttResumoItem.ind-status-saldo = 3 THEN
ASSIGN ttResumoItem.qtd-item-liberado = ttResumoItem.qtd-item.

IF wm-box-saldo.ind-status-saldo = 2 /* destinado */
OR wm-box-saldo.ind-status-saldo = 6 /* estado cq */ THEN DO:
ASSIGN de-qtd-destinado = de-qtd-destinado + wm-box-saldo.qtd-item.
END.

IF wm-box-saldo.ind-status-saldo = 7 /** CQ-Armazenado **/ THEN


ASSIGN de-qtd-destinado = de-qtd-destinado + (wm-box-saldo.qtd-item - wm-
box-saldo.qtd-item-bloq).
END.

ASSIGN de-qtd-comprometida-resup = 0.

FOR EACH wms-box-sdo-alocad NO-LOCK


WHERE wms-box-sdo-alocad.cod-estabel = pcCodEstabel
AND wms-box-sdo-alocad.cod-local = pcCodLocal
AND wms-box-sdo-alocad.cod-item = pcCodItem
AND wms-box-sdo-alocad.cod-refer = pcCodRefer
AND wms-box-sdo-alocad.cod-lote = pcCodLote
AND wms-box-sdo-alocad.cod-cliente = pcCodCliente USE-INDEX wmsbxsdl-02,
EACH wm-docto NO-LOCK
WHERE wm-docto.cod-estabel = wms-box-sdo-alocad.cod-estabel
AND wm-docto.cod-local = wms-box-sdo-alocad.cod-local
AND wm-docto.id-docto = wms-box-sdo-alocad.id-docto:

IF (wm-docto.ind-tipo-trans = 3 OR wm-docto.ind-tipo-trans = 4 ) AND wm-


docto.ind-sit-docto <> 2 THEN
ASSIGN pqtd-atual = pqtd-atual - (wms-box-sdo-alocad.qtd-alocada - wms-
box-sdo-alocad.qtd-item-retir).

IF wm-docto.ind-tipo-trans = 3 THEN
ASSIGN de-qtd-comprometida-resup = de-qtd-comprometida-resup + (wms-box-
sdo-alocad.qtd-alocada - wms-box-sdo-alocad.qtd-item-retir).

FIND FIRST ttResumoItem


WHERE ttResumoItem.id-box = wms-box-sdo-alocad.id-box
AND ttResumoItem.cod-embalagem = wms-box-sdo-alocad.cod-embalagem
AND ttResumoItem.ind-status-saldo = wms-box-sdo-alocad.ind-status-
saldo NO-LOCK NO-ERROR.
IF AVAIL ttResumoItem THEN DO:
ASSIGN ttResumoItem.qtd-item-alocad = ttResumoItem.qtd-item-alocad +
(wms-box-sdo-alocad.qtd-alocada - wms-box-sdo-alocad.qtd-item-retir)
ttResumoItem.qtd-item-liberado = ttResumoItem.qtd-item-liberado -
(wms-box-sdo-alocad.qtd-alocada - wms-box-sdo-alocad.qtd-item-retir).
IF ttResumoItem.qtd-item-liberado < 0 THEN
ttResumoItem.qtd-item-liberado = 0.
END.
END.

IF de-qtd-destinado >= de-qtd-comprometida-resup THEN DO:


ASSIGN pqtd-atual = pqtd-atual + de-qtd-comprometida-resup.
END.
RETURN 'OK':U.
END PROCEDURE.

Você também pode gostar