Produto: | TOTVS CRM Automação da Força de Vendas |
---|---|
Linha de Produto: | Linha TOTVS CRM SFA |
Módulo: | Venda |
Função: | Pedido |
Ticket: | |
Requisito/Story/Issue: |
Referência textual | Descrição detalhada |
---|---|
lógicas de permitir exceder limite de crédito | As lógicas citadas estão melhor detalhadas na seguinte documentação: Percentual de tolerância ao exceder limite de crédito no pedido |
sistema offline | As informações contidas em uma aplicação offline representam o estado delas no momento da última sincronização, podendo haver uma diferença entre a informação no dispositivo com relação à informação no servidor (banco de dados atualizado) |
No ambiente Mobile,
Atualmente,
Ao finalizar um pedido de venda, o sistema valida se o pedido de venda pode ser realizado em função das lógicas de permitir exceder limite de crédito.
Entretanto, por se tratar de um sistema offline, ao sincronizar o pedido de venda, ainda que a informação do limite de crédito atualizada não fosse mais suficiente para permitir o envio do pedido ao ERP, o pedido de venda é sincronizado sem restrições, visto que não há um bloqueio de sincronizações validando se o saldo de limite de crédito continua válido.
Agora,
Ao sincronizar as informações do dispositivo com o servidor, o sistema deverá realizar novamente a validação das lógicas de permitir exceder limite de crédito.
Caso haja alguma validação de bloqueio do pedido considerando o limite de crédito atualizado, o pedido deverá ser reaberto (não finalizado) para o usuário ajustar o pedido.
Contexto / Gatilho:
Lógica:
Inserir os seguintes registros na tabela pluginintegracao:
<changeSet author="systemScript" failOnError="false" id="" runOnChange="true"> <preConditions onError="HALT" onFail="MARK_RAN" onSqlOutput="IGNORE"> <customPrecondition className="com.wealthsystems.sim3g.dao.hibernate.api.liquibase.custom.precondition.RegisterExistsPrecondition"> <param name="table" value="pluginintegracao"/> <param name="column" value="codigo"/> <param name="value" value="'WEBHOOK'"/> </customPrecondition> </preConditions> <insert tableName="pluginintegracao"> <column name="IDPLUGININTEGRACAO" valueSequenceNext="SEQPKPLUGININTEGRACAO"/> <column name="CODIGO" valueComputed="'WEBHOOK'"/> <column name="IDNATIVO" valueComputed="0"/> <column name="IDNCUSTOMIZADO" valueComputed="0"/> </insert> </changeSet>
Contexto / Gatilho:
Lógica:
Inserir os seguintes registros na tabela pedido:
<changeSet author="System (generated)" failOnError="false" id="" objectQuotingStrategy="LEGACY"> <addColumn tableName="Pedido"> <column name="sglstatuswebhook" type="VARCHAR(20)"/> </addColumn> </changeSet>
Contexto / Gatilho:
Lógica:
Criar a tabela credencial, com os seguintes campos:
<changeSet author="systemScript" failOnError="false" id="" objectQuotingStrategy="LEGACY"> <createTable tableName="Credencial"> <column name="idCredencial" type="LONG"> <constraints nullable="false"/> </column> <column name="descricao" type="VARCHAR(80)"> <constraints nullable="false"/> </column> <column name="sgltipoautenticacao" type="VARCHAR(20)"> <constraints nullable="false"/> </column> <column name="usuario" type="VARCHAR(120)"/> <column name="senha" type="VARCHAR(200)"/> <column defaultValue="0" name="idnAtivo" type="byte"/> <column name="codigoerp" type="VARCHAR(80)"/> <column name="wsVersao" type="LONG"/> </createTable> </changeSet>
Contexto / Gatilho:
Lógica:
Criar a coluna sglagrupador, nullable, para servir de agrupamento de registros para mostrar em uma ou outra grid do mesmo plugin
<changeSet author="System (generated)" failOnError="false" id="" objectQuotingStrategy="LEGACY"> <addColumn tableName="PluginIntVinculos"> <column name="sglagrupador" type="varchar(20)"/> </addColumn> </changeSet>
Criar a coluna idcredencial, nullable, FK para tabela credencial
<changeSet author="System (generated)" failOnError="false" id="" objectQuotingStrategy="LEGACY"> <addColumn tableName="PluginIntVinculos"> <column name="idCredencial" type="long"/> </addColumn> </changeSet> <changeSet author="System (generated)" failOnError="false" id="" objectQuotingStrategy="LEGACY"> <addForeignKeyConstraint baseColumnNames="idCredencial" baseTableName="PluginIntVinculos" constraintName="" deferrable="false" initiallyDeferred="false" referencedColumnNames="idCredencial" referencedTableName="Credencial"/> </changeSet>
Criar colunas genéricas para receber colunas da grid, juntamente com suas descrições:
<changeSet author="" failOnError="false" id="" objectQuotingStrategy="LEGACY"> <addColumn tableName="PluginIntVinculos"> <column name="texto1" type="varchar(400)"/> <column name="descricaotexto1" type="varchar(40)"/> <column name="texto2" type="varchar(400)"/> <column name="descricaotexto2" type="varchar(40)"/> <column name="texto3" type="varchar(400)"/> <column name="descricaotexto3" type="varchar(40)"/> <column name="int1" type="LONG"/> <column name="descricaoint1" type="varchar(40)"/> <column name="int2" type="LONG"/> <column name="descricaoint2" type="varchar(40)"/> <column name="decimal1" type="decimal(18,6)"/> <column name="descricaodecimal1" type="varchar(40)"/> <column name="decimal2" type="decimal(18,6)"/> <column name="descricaodecimal2" type="varchar(40)"/> <column name="byte1" type="byte"/> <column name="descricaobyte1" type="varchar(40)"/> <column name="byte2" type="byte"/> <column name="descricaobyte2" type="varchar(40)"/> </addColumn> </changeSet>
Contexto / Gatilho:
Lógica:
Contexto / Gatilho:
Lógica:
Contexto / Gatilho:
Lógica:
Valor persistido | Gatilho |
---|---|
SYNC_AUTO_PEDIDO_PP | Sincronização automática de pedido finalizado |
SYNC_PEDIDO_PP | Sincronização manual de pedido finalizado |
select idcredencial as valor, descricao as descricao from credencial where idnativo = 1
Valor | Descrição | Padrão | Obs |
---|---|---|---|
2XX | HTTP Status 2XX - Sem conteúdo | X | |
CARTE | XML Pentaho Carte - Sem conteúdo | a URL exigida no modelo pentaho carte será no formato: http://host:8090/kettle/executeJob/?rep=COMMON_SERVICES&job=API_CALCULO_IRT_PLASTILIST |
Contexto / Gatilho:
Lógica:
Body
[ { "idpedido": 1, //pedido.idpedido "idusuario": 1, //pedido.idusuarioprofissional "idparceiro": 1, //pedido.idparceiro "idlocal": 2, //pedido.idlocal "idlocalcobranca": 3, //pedido.idlocalcobranca "idfilialvenda": 3, //pedido.idlocalfilialvenda "idfilialretira": 4, //pedido.idlocalfilialretirada "idfilialfaturamento": 5, //pedido.idlocalfilialfaturamento "idtipopedido": 4, //pedido.idtipopedido "idtipocobranca": 5, //pedido.idtipocobranca "idtabelapreco": 6, //pedido.idtabelapreco "idcondicaopagamento": 5, //pedido.idcondicaopagamento "idsegmento": 8, //pedido.idsegmento "idtipologia": 8, //pedido.idtipologia "idoperacao": 8, //pedido.idoperacao "idmoeda": 8, //pedido.idindexador "idtipoestoque": 8, //pedido.idtipoestoque "valortotalbruto": 8.00, //Campo "Valor total bruto do resumo" "valortotalliquido": 9.00, //Campo "Valor total liquido do resumo", "observacaopedido": "texto", //pedido.observacaopedido "observacaonotafiscal": "texto", //pedido.observacaonotafiscal "observacaosituacao": "texto", //pedido.observacaosituacao "observacaoexpedicao": "texto", //pedido.observacaoexpedicao "datapedido": "2020-01-01", //pedido.datapedido "horapedido": "08:21:00", //pedido.horapedido "datafinalizado": "2020-01-01", //pedido.datafinalizado "horafinalizado": "08:21:00", //pedido.horafinalizado "descontopedido": [ { "codigo": "8", //pedidotipodesconto.idtipodesconto > tipodesconto.codigo "percentual": 9.00, //pedidotipodesconto.percentual "valor": 10.00 //pedidotipodesconto.valor }, { "codigo": "8", //pedidotipodesconto.idtipodesconto > tipodesconto.codigo "percentual": 9.00, //pedidotipodesconto.percentual "valor": 10.00 //pedidotipodesconto.valor } ], "pedidoproduto": [ { "idpedidoproduto": 1, //pedidoproduto.idpedidoproduto "ordem": 1, //pedidoproduto.ordem "idproduto": 8, //pedidoproduto.idproduto "idembalagem": 10, //pedidoproduto.idembalagem, "quantidade": 9.00, //pedidoproduto.quantidade "precovenda": 10.00, //pedidoproduto.precovenda PS:Valor unitário "precotabela": 11.00, //pedidoproduto.precotabela PS:Valor unitário "precooriginal": 12.00, //pedidoproduto.precooriginal PS:Valor unitário "percentualdesconto": 13.00, //pedidoproduto.percentualdesconto "valordesconto": 13.00, //pedidoproduto.valordesconto PS:Valor unitário "percentualacrescimo": 13.00, //pedidoproduto.percentualacrescimo "valoracrescimo": 13.00, //pedidoproduto.valoracrescimo PS:Valor unitário "idtipopedido": 13.00, //pedidoproduto.idtipopedido "idtipoestoque": 14, //pedidoproduto.idtipoestoque "idtabelapreco": 15, //pedidoproduto.idtabelapreco }, { "idpedidoproduto": 2, //pedidoproduto.idpedidoproduto "ordem": 1, //pedidoproduto.ordem "idproduto": 8, //pedidoproduto.idproduto "idembalagem": 10, //pedidoproduto.idembalagem, "quantidade": 9.00, //pedidoproduto.quantidade "precovenda": 10.00, //pedidoproduto.precovenda PS:Valor unitário "precotabela": 11.00, //pedidoproduto.precotabela PS:Valor unitário "precooriginal": 12.00, //pedidoproduto.precooriginal PS:Valor unitário "percentualdesconto": 13.00, //pedidoproduto.percentualdesconto "valordesconto": 13.00, //pedidoproduto.valordesconto PS:Valor unitário "percentualacrescimo": 13.00, //pedidoproduto.percentualacrescimo "valoracrescimo": 13.00, //pedidoproduto.valoracrescimo PS:Valor unitário "idtipopedido": 13.00, //pedidoproduto.idtipopedido "idtipoestoque": 14, //pedidoproduto.idtipoestoque "idtabelapreco": 15, //pedidoproduto.idtabelapreco } ], "pedidoentrega": [ { "idpedidoentrega": 1, //pedidoentrega.idpedidoentrega "idtipofrete": 4, //pedidoentrega.idtipofrete "idtransportadora": 7, //pedidoentrega.idparceirotransportador "idparceiroentrega": 8, //pedidoentrega.idparceiroentrega "valorfrete": 5.00, //pedidoentrega.valorfrete "valordespesa": 6.00, //pedidoentrega.valordespesa "valorseguro": 7.00 //pedidoentrega.valorseguro }, { "idpedidoentrega": 2, //pedidoentrega.idpedidoentrega "idtipofrete": 4, //pedidoentrega.idtipofrete "idtransportadora": 7, //pedidoentrega.idparceirotransportador "idparceiroentrega": 8, //pedidoentrega.idparceiroentrega "valorfrete": 5.00, //pedidoentrega.valorfrete "valordespesa": 6.00, //pedidoentrega.valordespesa "valorseguro": 7.00 //pedidoentrega.valorseguro } ], "pedidoparcela": [ { "idpedidoparcela": 1, //pedidoentrega.idpedidoparcela "ordem": 1, //pedidoentrega.ordem "valor": 4, //pedidoentrega.valor "datavencimento": 7 //pedidoentrega.datavencimento }, { "idpedidoparcela": 2, //pedidoentrega.idpedidoparcela "ordem": 2, //pedidoentrega.ordem "valor": 4, //pedidoentrega.valor "datavencimento": 7 //pedidoentrega.datavencimento } ] }, { /* outro objeto com template acima */ }, { /* outro objeto com template acima */ } ]
Resposta esperada quando pluginintvinculos.texto3 = 'CARTE'
/* Considerando já o PARSE DA resposta do pentaho que é realizada de maneira assíncrona, retornando xml Na tag result.result-rows, o retorno será feito através de 2 campos: RETURN: string STATUS: int */ Quando bem sucedido: { "status": 200 "retorno": "" } Quando mal sucedido: { "status": ${<> 200, 201} "retorno": "Mensagem para ser anexada ao log do servidor" }
Resposta esperada quando pluginintvinculos.texto3 = '2XX'
Quando bem sucedido: http_status 2XX Body: No content Quando mal sucedido: http_status <> 2XX { "erro": "Mensagem para ser anexada ao log do servidor" }
Contexto / Gatilho:
Lógica:
Contexto / Gatilho:
Lógica:
Visto que a regra de limite de crédito validada pela integração será feita de maneira customizada, a sua descrição não estará presente no presente documento, podendo ser acessada por este link.