Estoques

95 views
Skip to first unread message

Dilonei - G-Mail

unread,
Nov 25, 2009, 6:39:44 AM11/25/09
to progre...@googlegroups.com

Olá Pessoal,

 

                Estou precisando simular os saldos em estoque dos itens, igualmente faz o programa PD0912, do EMS Datasul. Alguém sabe se tem alguma API, ou alguém tem um script para pegar estes saldos?

 

                Atenciosamente,

 

 

Dilonei Grando

 

Celular - 51 9985 5398

E-mail:  dilonei...@gmail.com

Web: http://dilonei.000webhost.info/

MSN: dilonei...@ibest.com.br

 

Bruno Bertulli

unread,
Nov 26, 2009, 6:08:13 AM11/26/09
to Progress - 4GL
Cara veja se te ajuda...

/* Limpa dados antigos no browse */
for each tt-saldo exclusive-lock:
delete tt-saldo.
end.

RUN Get-Field-Screen-Value IN adm-broker-hdl
(INPUT THIS-PROCEDURE,
INPUT "cb-ref").
assign c-cod-refer = return-value.
if c-cod-refer = ? then assign c-cod-refer = "".

RUN Get-Field-Screen-Value IN adm-broker-hdl
(INPUT THIS-PROCEDURE,
INPUT "de-saldo-inic").

assign de-saldo-inic = dec(string(return-value)).

RUN Get-Field-Screen-Value IN adm-broker-hdl
(INPUT THIS-PROCEDURE,
INPUT "de-quant-segur").

assign de-quant-segur = dec(string(return-value)).

assign i-dif-dias = dt-corte-par - today.

run utp/ut-acomp.p persistent set h-acomp.
run pi-inicializar in h-acomp ("Simulando Saldos do Item").

do i-cont = 0 to (i-dif-dias + 1):
create tt-saldo.
assign dt-auxiliar = (TODAY - 1) + i-cont.

run pi-calc-saldo-browse.

assign de-saldo-inic = de-saldo-inic -
(if l-cons-qt-aba
then tt-saldo.pedidos
else 0)
+ tt-saldo.producao
+ tt-saldo.compras
- tt-saldo.reservas.

/*O de-saldo-inic subtrai o valor do Estoque de Segurança.*/
/*Dessa forma, o estoque de segurança não influencia no cálculo
do saldo disponível. */
assign tt-saldo.disponivel = de-saldo-inic + de-quant-segur.

if dt-auxiliar < TODAY then do:
{utp/ut-liter.i Anterior * }
assign tt-saldo.data = trim(return-value).
assign c-data = tt-saldo.data.
end.
else assign tt-saldo.data = string(dt-auxiliar,"99/99/9999").

if tt-saldo.pedidos = 0 and tt-saldo.producao = 0
and tt-saldo.reserva = 0 and tt-saldo.compras = 0 then
delete tt-saldo.

end.

run pi-finalizar in h-
acomp.

RUN dispatch IN THIS-PROCEDURE ('open-query':U).



procedure pi-calc-saldo-browse:
/
*------------------------------------------------------------------------------
Purpose:
Parameters: <none>
Notes: Ler os saldos do item "antes" e "a cada dia" depois de hoje

------------------------------------------------------------------------------
*/

find first param-global no-lock no-error.

assign c-tab-sit-ped = ""
c-tab-sit-aval = ""
dt-aux-1900 = date("01/01/1900").

if l-abertos-par = yes
then assign c-tab-sit-ped = "1".

if l-at-parcial-par = yes
then assign c-tab-sit-ped = c-tab-sit-ped + "2".

if l-ped-n-av-par = yes
then assign c-tab-sit-aval = "1".

if l-ped-aval-par = yes
then assign c-tab-sit-aval = c-tab-sit-aval + "2".

if l-ped-apro-par = yes
then assign c-tab-sit-aval = c-tab-sit-aval + "3".

if l-ped-repr-par = yes
then assign c-tab-sit-aval = c-tab-sit-aval + "4".

FOR EACH tt-sit.
DELETE tt-sit.
END.

CREATE tt-sit.
ASSIGN tt-sit.cod-sit-ent = 1.
CREATE tt-sit.
ASSIGN tt-sit.cod-sit-ent = 2.

if i-cont = 0 then do:
if item.baixa-estoq then do:

FOR EACH tt-sit,
each ped-ent fields (it-codigo cod-refer cod-sit-ent dt-
entrega
nome-abrev nr-pedcli nr-sequencia
qt-pedida qt-atendida qt-alocada)
where ped-ent.it-codigo = item.it-codigo
and ped-ent.cod-refer = c-cod-refer
and ped-ent.cod-sit-ent = tt-sit.cod-sit-ent
and ped-ent.dt-entrega <= dt-auxiliar no-lock,

first ped-item fields (nome-abrev nr-pedcli nr-sequencia it-
codigo
cod-refer nat-operacao) of ped-ent
no-lock,

first natur-oper fields (nat-operacao baixa-estoq) no-lock
where natur-oper.nat-operacao = ped-item.nat-operacao
and natur-oper.baixa-estoq = yes,

first ped-venda fields (nome-abrev nr-pedcli cod-estabel
cod-sit-ped cod-sit-aval) no-lock

where ped-venda.nome-abrev = ped-item.nome-abrev
and ped-venda.nr-pedcli = ped-item.nr-pedcli
and ped-venda.cod-estabel = c-cod-estabel-par
&IF '{&bf_dis_versao_ems}' >= "2.04" &THEN
AND ped-venda.log-cotacao = NO
&ENDIF :

if (ped-venda.cod-sit-ped = 1 and l-abertos-par = no)
or (ped-venda.cod-sit-ped = 2 and l-at-parcial-par = no)
or (ped-venda.cod-sit-ped > 2)
or (ped-venda.cod-sit-aval = 1 and l-ped-n-av-par = no)
or (ped-venda.cod-sit-aval = 2 and l-ped-aval-par = no)
or (ped-venda.cod-sit-aval = 3 and l-ped-apro-par = no)
or (ped-venda.cod-sit-aval = 4 and l-ped-repr-par = no)
then
next.

assign de-aux-saldo-item = 0
de-aux-saldo-aloc = 0
de-aux-saldo-item = if (ped-ent.qt-pedida - ped-
ent.qt-atendida) > 0
then (ped-ent.qt-pedida - ped-
ent.qt-atendida)
else 0
de-aux-saldo-aloc = if (ped-ent.qt-alocada - ped-
ent.qt-atendida) > 0
then (ped-ent.qt-alocada - ped-
ent.qt-atendida)
else 0
tt-saldo.pedidos = tt-saldo.pedidos +
if de-aux-saldo-item > de-aux-
saldo-aloc
then (de-aux-saldo-item - de-
aux-saldo-aloc)
else 0.
end.
end.

if param-global.modulo-cp then do:

find first ord-prod use-index item
where ord-prod.it-codigo = item.it-
codigo
and (ord-prod.dt-termino + item.res-cq-fabri) <= dt-
auxiliar
and ord-prod.estado < 7
and ord-prod.cod-refer = c-cod-refer
and ord-prod.cod-estabel = c-cod-estabel-par
and (ord-prod.qt-ordem - ord-prod.qt-produzida) > 0
no-lock no-error.

assign dt-aux-inicio = if avail ord-prod then ord-prod.dt-
termino + item.res-cq-fabri
else dt-auxiliar + 1.

/* da-auxiliar é a data que varia em função da tada informada
nos parâmetros */
/* da-aux-inicio serve para buscar as OP */

do dt-aux-inicio = dt-aux-inicio to dt-auxiliar:
for each ord-prod fields (it-codigo dt-termino estado cod-
refer
cod-estabel qt-ordem qt-
produzida)
use-index item no-lock
where ord-prod.it-codigo = item.it-
codigo
and (ord-prod.dt-termino + item.res-cq-fabri) = dt-
aux-inicio
and ord-prod.estado <
7
and ord-prod.cod-refer = c-cod-
refer
and ord-prod.cod-estabel = c-cod-estabel-par
and (ord-prod.qt-ordem - ord-prod.qt-produzida) > 0:

assign tt-saldo.producao = tt-saldo.producao +
(ord-prod.qt-ordem - ord-
prod.qt-produzida).
end.
end.

find first reservas use-index planejamento
where reservas.it-codigo = item.it-codigo
and reservas.estado = 1
and reservas.dt-reserva <= dt-auxiliar
and reservas.cod-refer = c-cod-refer
and (reservas.quant-orig - reservas.quant-atend) > 0 no-
lock no-error.

assign dt-aux-inicio = if avail reservas then reservas.dt-
reserva
else dt-auxiliar +
1.

do dt-aux-inicio = dt-aux-inicio to dt-auxiliar:
for each reservas fields (it-codigo dt-reserva estado cod-
refer
quant-orig quant-atend)
use-index data no-lock
where reservas.it-codigo = item.it-codigo
and reservas.dt-reserva = dt-aux-inicio
and reservas.estado = 1
and reservas.cod-refer = c-cod-
refer
and (reservas.quant-orig - reservas.quant-atend) > 0:
assign tt-saldo.reserva = tt-saldo.reserva +
(reservas.quant-orig -
reservas.quant-atend).
end.
end.
end.

if param-global.modulo-cc then do:
for each prazo-compra fields (it-codigo data-entrega situacao
cod-refer
quant-saldo numero-ordem) use-
index entrega-pl
where prazo-compra.it-codigo = item.it-codigo
and prazo-compra.data-entrega <= ( dt-auxiliar - item.res-
cq-comp )
and prazo-compra.data-entrega >= ( dt-aux-1900 -
item.res-cq-comp )
and prazo-compra.situacao <> 4
and prazo-compra.situacao <> 6
and prazo-compra.cod-refer = c-cod-refer
and prazo-compra.quant-saldo > 0 no-lock,
first ordem-compra fields (numero-ordem cod-estabel ordem-
servic natureza origem)
where ordem-compra.numero-ordem = prazo-compra.numero-
ordem
and ordem-compra.cod-estabel = c-cod-estabel-par no-
lock:

If ordem-compra.ordem-servic <> 0 and
ordem-compra.natureza = 3 and
ordem-compra.origem = 2 then next.

assign tt-saldo.compras = tt-saldo.compras + prazo-
compra.quant-saldo.
end.
end.
end.
else do:
if item.baixa-estoq then do:

FOR EACH tt-sit,

each ped-ent fields (it-codigo cod-refer cod-sit-ent dt-
entrega
nome-abrev nr-pedcli nr-sequencia
qt-pedida qt-atendida qt-alocada)
where ped-ent.it-codigo = item.it-codigo
and ped-ent.cod-refer = c-cod-refer
and ped-ent.dt-entrega = dt-auxiliar
and ped-ent.cod-sit-ent = tt-sit.cod-sit-ent no-lock,

first ped-item fields (nome-abrev nr-pedcli nr-sequencia it-
codigo
cod-refer nat-operacao) of ped-ent no-
lock,

first natur-oper fields (nat-operacao baixa-estoq) no-lock
where natur-oper.nat-operacao = ped-item.nat-operacao
and natur-oper.baixa-estoq = yes,

first ped-venda fields (nome-abrev nr-pedcli cod-estabel
cod-sit-ped cod-sit-aval) no-lock
where ped-venda.nome-abrev = ped-item.nome-
abrev
and ped-venda.nr-pedcli = ped-item.nr-
pedcli
and ped-venda.cod-estabel = c-cod-estabel-par
&IF '{&bf_dis_versao_ems}' >= "2.04" &THEN
AND ped-venda.log-cotacao = NO
&ENDIF :

if (ped-venda.cod-sit-ped = 1 and l-abertos-par = no)
or (ped-venda.cod-sit-ped = 2 and l-at-parcial-par = no)
or (ped-venda.cod-sit-aval = 1 and l-ped-n-av-par = no)
or (ped-venda.cod-sit-aval = 2 and l-ped-aval-par = no)
or (ped-venda.cod-sit-aval = 3 and l-ped-apro-par = no)
or (ped-venda.cod-sit-aval = 4 and l-ped-repr-par = no)
then
next.

assign de-aux-saldo-item = 0
de-aux-saldo-aloc = 0
de-aux-saldo-item = if (ped-ent.qt-pedida - ped-
ent.qt-atendida) > 0
then (ped-ent.qt-pedida - ped-
ent.qt-atendida)
else 0
de-aux-saldo-aloc = if (ped-ent.qt-alocada - ped-
ent.qt-atendida) > 0
then (ped-ent.qt-alocada - ped-
ent.qt-atendida)
else 0
tt-saldo.pedidos = tt-saldo.pedidos +
if (de-aux-saldo-item - de-aux-
saldo-aloc) > 0
then (de-aux-saldo-item - de-
aux-saldo-aloc)
else 0.
end.
end.

if param-global.modulo-cp then do:

for each ord-prod fields (it-codigo dt-termino estado cod-
refer
cod-estabel qt-ordem qt-produzida)
use-index item no-lock
where ord-prod.it-codigo = item.it-codigo
and (ord-prod.dt-termino + item.res-cq-fabri) = dt-
auxiliar
and ord-prod.estado < 7
and ord-prod.cod-refer = c-cod-refer
and ord-prod.cod-estabel = c-cod-estabel-par
and (ord-prod.qt-ordem - ord-prod.qt-produzida) > 0:

assign tt-saldo.producao = tt-saldo.producao +
(ord-prod.qt-ordem - ord-
prod.qt-produzida).
end.

for each reservas fields (it-codigo dt-reserva estado cod-
refer
quant-orig quant-atend)
use-index data no-lock
where reservas.it-codigo = item.it-codigo
and reservas.dt-reserva = dt-auxiliar
and reservas.estado = 1
and reservas.cod-refer = c-cod-refer
and (reservas.quant-orig - reservas.quant-atend) > 0:
assign tt-saldo.reserva = tt-saldo.reserva +
(reservas.quant-orig -
reservas.quant-atend).
end.
end.
if param-global.modulo-cc then do:

for each prazo-compra fields (it-codigo data-entrega situacao
cod-refer
quant-saldo numero-ordem) use-
index entrega-pl
where prazo-compra.it-codigo = item.it-codigo
and prazo-compra.data-entrega <= (dt-auxiliar - item.res-
cq-comp)
and prazo-compra.data-entrega >= (dt-auxiliar - item.res-
cq-comp)
and prazo-compra.situacao <> 4
and prazo-compra.situacao <> 6
and prazo-compra.cod-refer = c-cod-refer
and prazo-compra.quant-saldo > 0 no-lock,
first ordem-compra fields (numero-ordem cod-estabel ordem-
servic natureza origem)
where ordem-compra.numero-ordem = prazo-compra.numero-
ordem
and ordem-compra.cod-estabel = c-cod-estabel-par no-
lock:

If ordem-compra.ordem-servic <> 0 and
ordem-compra.natureza = 3 and
ordem-compra.origem = 2 then next.

assign tt-saldo.compras = tt-saldo.compras + prazo-
compra.quant-saldo.
end.
end.
end.

END PROCEDURE.






On 25 nov, 09:39, "Dilonei - G-Mail" <dilonei.gra...@gmail.com> wrote:
> Olá Pessoal,
>
>                 Estou precisando simular os saldos em estoque dos itens,
> igualmente faz o programa PD0912, do EMS Datasul. Alguém sabe se tem alguma
> API, ou alguém tem um script para pegar estes saldos?
>
>                 Atenciosamente,
>
> Dilonei Grando
>
> Celular - 51 9985 5398
>
> E-mail:   <mailto:dilonei.gra...@gmail.com> dilonei.gra...@gmail.com
>
> Web:  <http://dilonei.000webhost.info/>http://dilonei.000webhost.info/
>
> MSN:  <mailto:dilonei.gra...@ibest.com.br> dilonei.gra...@ibest.com.br

Dilonei - G-Mail

unread,
Nov 26, 2009, 6:44:52 AM11/26/09
to progre...@googlegroups.com
Valeu, obrigado pelo retorno.


Dilonei

-----Mensagem original-----
De: progre...@googlegroups.com [mailto:progre...@googlegroups.com] Em
nome de Bruno Bertulli
Enviada em: quinta-feira, 26 de novembro de 2009 09:08
Para: Progress - 4GL
Assunto: Re: Estoques

Reply all
Reply to author
Forward
0 new messages