Boa Tarde,
Meus amigos, estou precisando integrar pedidos de venda e clientes do sistema Starcorp para o da Gemco.
Receberei os dados via Webservice da Starcorp arquivos estes em xml. e terei que integrar os dados do pedido no Sistema Gemco.
Como poderei fazer isto, alguém teria alguma dica para me ajudar...
Geração de Pedidos de Venda
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 01 Set 2008 2:10 pm
- Localização: sp
Obrigado
Att.
Carlos Alberto
Att.
Carlos Alberto
Tenho está procedure mais ela quando tenho mais de um item no pedido elá gera vários pedidos, e o certo seria colocar todos os itens em um único pedido.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
create or replace procedure copiagemco as
cursor pedido is
select NOME,
CGCCPF,
RG,
ORGAOEMISSOR,
DTNASC,
SEXO,
NATJUR,
ENDERECO,
COMPLEMENTO,
NUMERO,
BAIRRO,
MUNICIPIO,
CEP,
UF,
DDD,
TELEFONE,
DTPEDIDO
from int_pedido
where integra = 'N'
GROUP BY NOME,
CGCCPF,
RG,
ORGAOEMISSOR,
DTNASC,
SEXO,
NATJUR,
ENDERECO,
COMPLEMENTO,
NUMERO,
BAIRRO,
MUNICIPIO,
CEP,
UF,
DDD,
TELEFONE,
DTPEDIDO
ORDER BY NOME;
v_codcli cad_cliente.codcli%type;
v_codcli1 cad_cliente.codcli%type;
v_digcli cad_cliente.digcli%type;
v_numped mov_pedido.numpedven%type;
v_preço cad_preço.preço%type;
v_fisico cad_prodloc.fisico%type;
v_aliq cad_imptribut.aliquota%type;
v_valor number(9,3):=0;
v_item cad_itprod.coditprod%type;
flag number:=0;
flag_est number:=0;
flag_pre number:=0;
flag_aliq number:=0;
CODCLI_AUX CHAR(8);
SOMA_AUX NUMBER;
CONT_AUX NUMBER;
DIGCLI_AUX NUMBER(2);
ERRO CHAR(1);
CONT_ITEM NUMBER:=0;
-- CONT NUMBER:=0;
begin
for ped in pedido loop
begin
select nvl(codcli,0)
into v_codcli1
from cad_cliente
where cgccpf = ped.cgccpf;
exception
WHEN no_data_found THEN
v_codcli1 := 0;
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20002,to_char(SQLCODE)||SQLERRM);
end;
if v_codcli1 = 0 then
begin
select seqcliente.nextval
into v_codcli
from dual;
end;
BEGIN
SOMA_AUX := 0;
CONT_AUX := 1;
DIGCLI_AUX := 0;
ERRO := 'N';
SELECT LPAD(TO_CHAR(v_CODCLI1), 8, 0) INTO CODCLI_AUX FROM DUAL;
WHILE CONT_AUX <= 8 LOOP
SOMA_AUX := SOMA_AUX + ((10 - CONT_AUX ) * TO_NUMBER(SUBSTR(CODCLI_AUX, CONT_AUX, 1 )));
CONT_AUX := CONT_AUX + 1;
END LOOP;
SELECT MOD((SOMA_AUX * 10 ), 11) INTO DIGCLI_AUX FROM DUAL ;
IF DIGCLI_AUX = 10 THEN
DIGCLI_AUX := 0;
END IF;
V_DIGCLI := DIGCLI_AUX;
END;
-- dbms_output.put_line ('vou inserir cliente novo');
-- dbms_output.put_line ('v_codcli =' || to_char(v_codcli));
-- dbms_output.put_line ('v_digcli =' || to_char(v_digcli));
begin
INSERT INTO CAD_CLIENTE
(CODCLI,
DIGCLI,
CGCCPF,
NOMCLI,
NUMDOC,
EMISSOR,
DTNASC,
DTCADAST,
SEXO,
NATJUR)
VALUES
(V_CODCLI,
V_DIGCLI,
ped.CGCCPF,
ped.NOME,
ped.rg,
ped.orgaoemissor,
ped.dtnasc,
sysdate,
ped.sexo,
ped.natjur) ;
exception
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20004,to_char(SQLCODE)||SQLERRM);
END;
BEGIN
INSERT INTO CAD_ENDCLI
(CODCLI,
CODEND,
TPENDER,
CODLOGRAD,
ENDERECO,
BAIRRO,
CIDADE,
ESTADO,
CEP,
STATUS,
COMPLEMENTO,
DDDFONE1,
FONE1,
NUMERO,
FLINT,
CODPAIS)
VALUES
(V_CODCLI,
0,
'E',
'R',
ped.ENDERECO,
ped.BAIRRO,
ped.municipio,
ped.uf,
ped.CEP,
'1',
ped.COMPLEMENTO,
ped.DDD,
ped.telefone,
ped.numero,
'N',
'55');
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20006,to_char(SQLCODE)||SQLERRM);
END;
BEGIN
INSERT INTO CAD_CLIENTE_COMPL
(CODCLI,
FLZFM,
FLINT)
VALUES
(v_codcli,
'N',
'N');
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20008,to_char(SQLCODE)||SQLERRM);
END;
end if;
begin
SELECT SEQPED.NEXTVAL INTO V_NUMPED FROM DUAL;
end;
-- dbms_output.put_line ('v_numped =' || to_char(v_numped));
-- dbms_output.put_line ('ped.dtpedido =' || to_char(ped.dtpedido, 'dd/mm/yyyy'));
FLAG := 0;
begin
insert into MOV_PEDIDO
(CODFIL,TIPOPED,NUMPEDVEN,TPPED,CONDPGTO,
CODVENDR,CODCLI,CODCLIPRES,
DTPEDIDO,DTPAGTO,DTENTREGA,
ENDCOB,ENDENT,PRACA,
FILORIG, FLUTILPEDIDO,
VLDESPACES,VLOUTDESP,VLDESPFIN,VLDESCONTO,VLENTRADA,VLFRETE,VLSEGURO,
VLMERCAD,SITCARGA,STATUS,NPEDCLI,
VLJUROSFIN,TPNOTA,VLBASEIPI,VLTOTAL)
values
(41,0,v_numped,'E','DJ1',195,
157262,decode(v_codcli1,0,v_codcli,v_codcli1),
to_char(ped.dtpedido,'DD/MM/YYYY'),
to_char(ped.dtpedido+28,'DD/MM/YYYY'),
to_char(ped.dtpedido+10,'DD/MM/YYYY'),
0,0,0,
41, NULL,
0,0,0,0,0,0,0,
v_valor,0,4,v_numped,
0,111,0,v_valor);
exception
when others then
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro)
values
(41, 0,'ERRO NA INSERCAO DO PEDIDO', sysdate);
end;
flag:=1;
end;
-- CONT := NVL(CONT,0) + 1;
begin
INSERT INTO CXA_LANCTO
( CODFIL, DATENT, NUMCXA, NUMMOV, NUMPED, CODOPER, TIPOPED, DATREF, CODEVE, NUMLAN,
VALLAN, NUMORP, INDCAR, CONDPGTO, FORMA, FILORI,FILDES, CODCLI, NUMTIT, DESTIT,
FILPED, CODORI, NUMNOT, DEPCHQ, OBSLAN, SITCXA, VALREAL, STATUS, NUMCARTAO, VALIDCARTAO,
FILNOT, SERIE, NUMPRC, DTVCTO, FLFINANC, INTEGRACRC, VLTOTAL, FLOPERAUTOM,
TPNOTA, FLDEBCRED, NUMCONTRAFIN, DIGCONTRAFIN, FLGERAER, FLREPLICA, FLINT, CODFILCRC, CODORIGCRC,
TPCLICRC,FLRECONC,FLTPCOBRANCA,VLPRINC, DTDIGIT, FLLISTCHEQ, FLENVBCO, FLDEVOLCHQCXA, FLGERAREEMB,
CODFILCXA)
values
(41,to_char(ped.dtpedido,'DD/MM/YYYY'),0,0,v_numped,0,0,to_char(ped.dtpedido,'DD/MM/YYYY'),32,0,
0,'N','N','DJ1', 32,41,41,157262,NULL,NULL,
41,NULL,0,'N','N',0,0,2,'N','N',
NULL,0,1,to_char(ped.dtpedido+28,'DD/MM/YYYY'),'N','N',0,'N',
111,'N',NULL,NULL,'N','N','N',41,19,
1,'N','N',0,to_char(ped.dtpedido,'DD/MM/YYYY'),'N','N','N','N',41);
exception
when others then
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro)
values
(41, 0,'ERRO NA INSERCAO DA CXA_LANCTO', sysdate);
end;
flag:=1;
end;
declare
cursor item is
select produto, dtpedido, sum(qtd) qtde
from int_pedido
where integra = 'N'
and cgccpf = ped.cgccpf
group by produto, dtpedido;
begin
CONT_ITEM := 0;
for ite in item loop
begin
select coditprod
into v_item
from cad_itprod
where coditprod = ite.produto;
EXCEPTION
WHEN NO_DATA_FOUND THEN
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro )
values
(41, ite.produto, 'PRODUTO não ENCONTRADO', sysdate);
end;
flag:=1;
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20011,to_char(SQLCODE)||SQLERRM);
end;
begin
select (nvl(fisico,0) - nvl(resfis,0) - nvl(mostruario,0))
into v_fisico
from cad_prodloc
where codfil = 41
and coditprod = ite.produto;
EXCEPTION
WHEN NO_DATA_FOUND THEN
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro )
values
(41, ite.produto, 'ERRO - PRODUTO SEM ESTOQUE', sysdate);
end;
flag_est :=1;
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20011,to_char(SQLCODE)||SQLERRM);
end;
if v_fisico <= 0 then
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro )
values
(41, ite.produto, 'ERRO - PRODUTO SEM ESTOQUE', sysdate);
end;
flag_est :=1;
end if;
begin
select preço
into v_preço
from cad_preço
where codfil = 41
and coditprod = ite.produto
and codembal = 0;
EXCEPTION
WHEN NO_DATA_FOUND THEN
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro)
values
(41, ite.produto, 'ERRO - PRODUTO SEM preço', sysdate);
end;
flag_pre :=1;
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20011,to_char(SQLCODE)||SQLERRM);
end;
if v_preço <= 0 then
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro )
values
(41, ite.produto, 'ERRO - PRODUTO SEM preço', sysdate);
end;
flag_pre :=1;
end if;
begin
select aliquota
into v_aliq
from cad_imptribut c
where c.tpimp = 'I'
and c.codimp = 1
and c.estorig = 'SP'
and c.estdest = 'SP'
and c.codgrptpnota = 2;
exception
WHEN NO_DATA_FOUND THEN
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro)
values
(41, ite.produto, 'ERRO - PRODUTO SEM ALIQUOTA', sysdate);
end;
flag_aliq :=1;
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20013,to_char(SQLCODE)||SQLERRM);
end;
if flag <> 1 and flag_est <> 1 and flag_pre <> 1 and flag_aliq <> 1 then
CONT_ITEM := NVL(CONT_ITEM,0) + 1;
-- dbms_output.put_line ('v_numped1 =' || to_char(v_numped));
-- dbms_output.put_line ('coditprod =' || to_char(ite.produto));
-- dbms_output.put_line ('item =' || to_char(cont_item));
-- dbms_output.put_line ('qtd =' || to_char(ite.qtde));
begin
-- dbms_output.put_line ('VOU GRAVAR MOV_ITPED');
insert into mov_itped
(codfil,tipoped,numpedven,coditprod,item,codcli,qtcomp,aliqicm,
precounit, dtpedido, qtreceb,sitcarga,qtemb,vlmontagem,
qtcompanexo,flentparc,fllibfat,flsepararetdep,flpedvenender,
fltransflog,flsegterceiro,fltrocabonif,filorig,status,codembal)
values
(41,0,v_numped,ite.produto,cont_item,157262,ite.qtde,v_aliq,
v_preço,ped.dtpedido,0,0,1,0,0,'N','S','N','N','N','N','N',41,4,0);
exception
WHEN OTHERS THEN
begin
insert into log_jequiti
(codfil, coditprod, erro, dterro)
values
(41, ite.produto,'ERRO NA INSERCAO DO ITEM DO PEDIDO', sysdate);
end;
flag :=1;
end;
-- if flag <> 1 and flag_est <> 1 and flag_pre <> 1 and flag_aliq <> 1 then
begin
update cad_prodloc
set resfis = nvl(resfis,0) + ite.qtde
where codfil = 41
and coditprod = ite.produto;
end;
-- end if;
end if;
v_valor := nvl(v_valor,0) + (nvl(v_preço,0) * nvl(ite.qtde,0));
end loop;
end;
-- dbms_output.put_line ('VALOR =' || to_char(V_VALOR));
if flag <> 1 and flag_est <> 1 and flag_pre <> 1 and flag_aliq <> 1 then
begin
update mov_pedido
set vlmercad = v_valor,
vltotal = v_valor
where codfil = 41
and numpedven = v_numped;
end;
begin
update cxa_lancto
set vallan = v_valor,
vltotal = v_valor
where codfil = 41
and numped = v_numped;
end;
v_valor := 0;
-- dbms_output.put_line ('flag =' || to_char(flag));
-- dbms_output.put_line ('flag_est =' || to_char(flag_est));
-- dbms_output.put_line ('flag_pre =' || to_char(flag_pre));
-- dbms_output.put_line ('flag_aliq =' || to_char(flag_aliq));
begin
update int_pedido
set integra = 'S'
where cgccpf = ped.cgccpf;
end;
else
begin
delete mov_pedido_compl where codfil = 41 and numpedven = v_numped;
delete mov_itped where codfil = 41 and numpedven = v_numped;
delete mov_pedido where codfil = 41 and numpedven = v_numped;
delete cxa_lancto where codfil = 41 and numped = v_numped;
end;
end if;
commit;
flag :=0;
flag_est :=0;
flag_pre :=0;
flag_aliq :=0;
END LOOP;
END;
/
-
- Rank: Programador Sênior
- Mensagens: 57
- Registrado em: Qui, 11 Jan 2007 10:26 am
- Localização: Santa Bárbaba d'Oeste
--
Juliana Cr. Cruz
Analista Desenvolvedor Oracle
Juliana Cr. Cruz
Analista Desenvolvedor Oracle
Oi the jack!
Olhando por cima do seu código, aparentemente ele deveria funcionar...
Eu só colocaria todas as declarações de cursores antes da declaração das variáveis...e dpois chamaria-os usando o open cursor... mas isso não interfere em nada no código...
Tenta executa-lo colocando return, incluindo as mesagens... executando passo a passou ou até mesmo fazendo um teste de mesa....
Num ajudei muito... mas enfim!
Até mais!!
Olhando por cima do seu código, aparentemente ele deveria funcionar...
Eu só colocaria todas as declarações de cursores antes da declaração das variáveis...e dpois chamaria-os usando o open cursor... mas isso não interfere em nada no código...
Tenta executa-lo colocando return, incluindo as mesagens... executando passo a passou ou até mesmo fazendo um teste de mesa....
Num ajudei muito... mas enfim!
Até mais!!
-
- Rank: Analista Júnior
- Mensagens: 88
- Registrado em: Sex, 22 Fev 2008 8:24 am
- Localização: Floripa - SC
desculpa, mas não entendi qual o problema que você está tendo.
uma coisa que reparei é que você faz várias vezes consulta na tabela dual e poderia fazer uma única vez e jogar em várias variáveis.
uma coisa que reparei é que você faz várias vezes consulta na tabela dual e poderia fazer uma única vez e jogar em várias variáveis.
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Qui, 29 Jan 2009 2:18 pm
- Localização: SP
Trabalho em uma empresa que presta serviços www.retailsolutions.com.br
Vi a mensagem contando sua dificuldade em relação a replicação das informações ao Gemco e caso tenha interesse em nos contactar estamos a disposição.
Vi a mensagem contando sua dificuldade em relação a replicação das informações ao Gemco e caso tenha interesse em nos contactar estamos a disposição.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes