INSERT INTO public.wsconfigintegracao (erp,contexto,descricao,tabela,campo,valor,idnativo) VALUES ('COMUM','LIMITECREDITO','Parâmetro que define os status de pedidos que terão seus movimentos de limitecredito processados pela integração automaticamente. Valores podem ser separados por vírgula','processamovimento','sgltiposituacaopedido','PF',1);
INSERT INTO public.wsconfigintegracao (erp,contexto,descricao,tabela,campo,valor,idnativo) VALUES ('COMUM','LIMITECREDITO','Parâmetro que define os status de pedidos que terão seus movimentos de limitecredito inativados pela integração automaticamente. Valores podem ser separados por vírgula','inativamovimento','sgltiposituacaopedido','PC',1);
INSERT INTO public.wsconfigintegracao (erp,contexto,descricao,tabela,campo,valor,idnativo) VALUES ('COMUM','LIMITECREDITO','Parâmetro que define se o saldo de limitecredito será atualizado após processamento de flex. Valores podem ser: 1(sim: normalmente utilizando quando não há integração de limite de crédito com o ERP) e 0(não: normalmente utilizado quando o saldo de limite de crédito vêm do ERP)','apos_processamento','alterasaldo','0',1);
O serviço de processamento de limitecredito deverá:
Consultar quais são as movimentações de limitecredito ativas e não processadas de pedidos que possuem status dentro do definido pelo parâmetro processamovimento.
// consulta 1 select * from limitecreditomovimento lcm inner join pedido p on p.idpedido = lcm.idpedido where p.idtiposituacaopedido in (select idtiposituacaopedido from tiposituacaopedido where sgltiposituacaopedido in (${parâmetro processamovimento})) and lcm.idnativo = 1 and lcm.idnprocessado = 0
Com esses movimentos no fluxo, a integração deverá processar o movimento, com o seguinte update:
update limitecreditomovimento set idnprocessado = 1 where idcontrolelimitecreditomovimento in (${consulta 1})
Após o processamento das limitecreditos acima, a integração deverá atualizar o saldo limitecredito com o valor que foi recém processado, segundo:
update limitecredito set saldodisponível = saldodisponivel + ${movimento processado}
Essa atualização somente deve acontecer quando o parâmetro ${parametro alterasaldo} estiver marcado com valor 1.
O serviço de inativação de limitecredito deverá:
Consultar quais são as movimentações de limitecredito não processadas de pedidos que possuem status dentro do definido pelo parâmetro inativamovimento.
// consulta 2 select * from limitecreditomovimento lcm inner join pedido p on p.idpedido = lcm.idpedido where p.idtiposituacaopedido in (select idtiposituacaopedido from tiposituacaopedido where sgltiposituacaopedido in (${parâmetro inativamovimento})) and lcm.idnativo = 1 and lcm.idnprocessado = 0
Com esses movimentos no fluxo, a integração deverá processar o movimento, com o seguinte update:
update limitecreditomovimento set idnativo = 0 where idcontrolelimitecreditomovimento in (${consulta 2})