Desabilitar campo conforme condição em um mestre/detalhe

Olá pessoal;

Estou com um problema que, por ser iniciante, não estou encontrando a solução:

Tenho um formulário (registro único) com mestre/detalhe.
No grid tenho um campo que o usuário informa o tipo do imposto: (PIS/COFINS); conforme a escolha o sistema deve desabilitar o campo PIS ou COFINS.

O campo tipo imposto é um lookup manual com Simples valor (PIS - P, COFINS - C).
Os campos PIS ou COFINS são lookup´s automáticos.

Criei um evento Ajax onChange e onClick no campo tipoImposto.

if ({NCMPISCOFImp} == “P”) //PIS
{
sc_field_readonly({NCMSitTriCOFCod}, on);
sc_field_readonly({NCMSitTriPISCod}, off);
{NCMSitTriCOFCod} = “”;
}
else
{
if ({NCMPISCOFImp} == “C”) //COFINS
{
sc_field_readonly({NCMSitTriCOFCod}, off);
sc_field_readonly({NCMSitTriPISCod}, on);
{NCMSitTriPISCod} = “”;
}
}

Quando vou para alterar o COFINS o mesmo habilita o campo PIS (que está errado, pois deveria habilitar o campo COFINS).
Estou utilizando um grid editável (view).

No momento de inclusão está funcionando, porém no momento de alteração não.

Se alguém tiver alguma ideia do que possa ser, eu agradeço.

Ou se tiver um outro caminho.

Obrigado!

Marlon.

Coloque esse mesmo código no evento onLoad

Olá amigo!

Já coloquei e também não deu certo.

Abraços!

Marlon.

É para colocar o código no OnLoadRecord já que é um GRID.

Olá!

Farei um teste e retorno.

Desde já obrigado!

Marlon.

Olá pessoal!

Fiz a alteração para o onLoadRecord por se tratar de um grid, mas não está funcionando.

No momento de inclusão ele obedece, porém em alteração não.

Salientando que o campo tipo do imposto faz parte da PK da tabela.

Quando vou escolher para alterar e o tipo está “C” (COFINS) ele abre o campo PIS para alterar.

Alguém tem alguma ideia do que possa ser?

Obrigado desde já!

Marlon.

Retire o evento ajax onClick. Deixe somente o onChange e tente novamente.

Olá Kleyber;

Nestes casos eu preciso colocar a instrução em que lugares?

Somente no onChenge?

Preciso colocar no onLoadRecord?

Estou em dúvida.

Pois após a inclusão o campo tipo imposto fica bloqueado para alterações (pois faz parte de uma PK).

Porém parece que ele não consegue ler o conteúdo do campo tipo imposto em momento de alteração.

Até alterei o comando estou testando agora com readonly:

switch({NCMPISCOFImp})
{
case “C”:
//sc_field_readonly({NCMSitTriCOFCod}, off);
//sc_field_readonly({NCMSitTriPISCod}, on);
sc_field_disabled(“NCMSitTriPISCod=true”);
sc_field_disabled(“NCMSitTriCOFCod=false”);
{NCMSitTriPISCod} = “”;
break;
case “P”:
//sc_field_readonly({NCMSitTriCOFCod}, on);
//sc_field_readonly({NCMSitTriPISCod}, off);
sc_field_disabled(“NCMSitTriPISCod=false”);
sc_field_disabled(“NCMSitTriCOFCod=true”);
{NCMSitTriCOFCod} = “”;
break;
}

Poderias, se puderes, me ajudar?

Abraços,
Marlon.

A instrução fica no OnLoadRecord. O evento ao qual me referi foi ao evento AJAX OnClick, que fizeste em cima do campo. nesse caso não precisa desse evento Ajax, somente do evento Ajax OnChange, que fizeste em cima do campo.

Entedo, porém gostaria de saber quando estou alterando o registro (lembrando que o campo tipo imposto fica desabilitado por se tratar de uma PK) o que faz com que o grid bloqueie o campo e libere outro.

Pois estaria fazendo apenas no onChange do campo tipo imposto.

Obrigado desde já pela sua atenção!

Marlon.

Marlon,

Agora eu não entendi mais nada… rsrsrs Vamos lá:

  • O campo tipo imposto é tua PK? Se sim, porque tu estás fazendo um select nele, conforme tu disseste no teu primeiro post “Criei um evento Ajax onChange e onClick no campo tipoImposto.” ?

Bom na verdade tenho uma PK composta: NCMCod, Tipo, TipoImposto.

Defino o tipo (Entrada ou Saída) e o tipo imposto (PIS ou COFINS).

Conforme o campo tipo imposto habilito ou desabilito outros campos.

Tenho na tabela o CST PIS e o CST COFINS

Conforme o tipo de imposto habilito ou desabilito.

Fiz um teste e percebi que está funcionando.

O estranho é que os registros que inserir com as definições que estavam erradas (código colocado em eventos que não precisavam) ele continua com o comportamento errado.

Tive que excluir os registros e incluir novamente para que as condições estabelecidas funcionassem.

Gostaria de enviar um print da tela para você ter uma ideia.

Obrigado!

Marlon.

Olá!

Percebi que quando fecho a tela e abro novamente as regras que habilitam/desabilitam quando vou alterar não funcionam direito.

Enquanto estou inserindo e depois faço uma alteração, funciona; após o fechamento do form na nova abertura, não funciona mais.

Alguém tem alguma ideia?

Realmente esta situação está me travando.

Mesmo porque sou iniciante em SC.

Obrigado!

Marlon.

Creio que o problema todo é que o campo TipoImposto seja parte da PK. PK não podem ser manipuladas ou alteradas e isso muda o comportamento do SC nesse sentido. Esse campo tem que ser mesmo parte de uma PK?

Olá!

Infelizmente sim, precisa fazer parte da PK.

Pelo que pude perceber, quando estou em momento de alteração o código gerado não consegue ler o campo tipo de imposto.

Será que teria como forçar uma gravação após a alteração?

Gravar ZERO no código CST PIS ou CST COFINS conforme o campo tipo de imposto?

Só não sei como fazer isso.

Abraços,

Marlon.