Minha Dica Hoje é Sobre copia programada No Hyperfile.
Esses dias, quase um cliente meu perdeu tudo.
Mas graças a essa maravilha dentro do hyperfile,de fazer
copia programada, salvou nossas vidas.
Essa aula estou refazendo, por achar ela muito importante
Nessa aula de hoje, vou mostrar como posso fazer um programa de conversão.
Nesse exemplo quero trocar o codigo da empresa das duplicatas a pagar.
Vou trocar da empresa 1 para empresa 2.
s_senha is string=""
Input("digite senha",s_senha)
IF s_senha="duplicatas" THEN
IF YesNo("Deseja Converter Para Outra Empresa, essas Duplicatas,De todos os Fornecedores") THEN
//Estou fazendo Pergunta se Quero Converter
n_numero_empresa_nova is int=0
//Vou Fazer loop, para tornar obrigatorio digitar uma empresa
LOOP
Input("Digite Nova Empresa:",n_numero_empresa_nova)
//Vou Pedir para Digitar a Empresa Nova
IF n_numero_empresa_nova<>0 THEN
BREAK
//Caso digitar empresa,vai sair do loop
END
END
FOR EACH duplicata_pagar WHERE "id_empresa="+gnEmpresaCodigo
//Percorrer tabela somente que seja dessa empresa
Trace(duplicata_pagar.id_duplicata_pagar)
//Mostrando na tela o que esta fazendo
IF duplicata_pagar.Id_empresa_cliente=TABLE_cliente.COL_id_empresa_fornecedor THEN
duplicata_pagar.id_empresa=n_numero_empresa_nova
HModify(duplicata_pagar)
//Estou Regravando o dado
END
END
END
TraceEnd() // apagar informacoes do trace da tela
Info("Conversao Concluida")
END
//Nessa dica de hoje,
//Vou mostrar como resolvi um problema
//nos filtros
//depois de usar o tableenablefilter e mudar
//o tipo de ordem dava problema
//ai usei o tableenablefilter
gn_classificacao=COMBO_Ordem // Razao social =1 // Codigo =2
EDT_PROCURA=""
//Control Alt Espaco
SWITCH gn_classificacao
CASE 1 // Razão Social
//EDT_PROCURA..Caption="Nome:"
TableEnableFilter(TABLE_cliente.COL_razao_social_nome,filterStartsWith,EDT_PROCURA)
CASE 2 // codigo
//EDT_PROCURA..Caption="Código:"
TableEnableFilter(TABLE_cliente.COL_Id_empresa_cliente,filterGreaterOrEqual,0)
CASE 3 // nome fantasia
//EDT_PROCURA..Caption="Fantasia:"
TableEnableFilter(TABLE_cliente.COL_nome_fantasia,filterStartsWith,EDT_PROCURA)
CASE 4 // cnpjf/cpf
//EDT_PROCURA..Caption="Cnpj/Cpf:"
TableEnableFilter(TABLE_cliente.COL_cnpj_cpf,filterStartsWith,EDT_PROCURA)
CASE 5 // inscricao estadual
//EDT_PROCURA..Caption="Inscrição:"
TableEnableFilter(TABLE_cliente.COL_InsEst,filterStartsWith,EDT_PROCURA)
CASE 6 // Telefone
//EDT_PROCURA..Caption="Fone:"
TableEnableFilter(TABLE_cliente.COL_Telefone,filterStartsWith,EDT_PROCURA)
OTHER CASE
END
mostra_cli(gn_classificacao)
ReturnToCapture(EDT_PROCURA)
//--------------------
PROCEDURE mostra_cli(n_tipo_ordem is int=1)
SWITCH n_tipo_ordem
CASE 1 // Nome
QRY_cliente_ler.parametro_ordem="cliente.razao_social_nome "+gs_ordem_consulta // "cliente.razao_social_nome asc"
CASE 2 // Codigo
QRY_cliente_ler.parametro_ordem="cliente.id_empresa_cliente "+gs_ordem_consulta
CASE 3 // Fantasia
QRY_cliente_ler.parametro_ordem="cliente.nome_fantasia "+gs_ordem_consulta
CASE 4 // cnpjf/cpf
QRY_cliente_ler.parametro_ordem="cliente.cnpj_cpf "+gs_ordem_consulta
CASE 5 // inscricao estadual
QRY_cliente_ler.parametro_ordem="cliente.inscricao_estadual "+gs_ordem_consulta
CASE 6 // Telefone
QRY_cliente_ler.parametro_ordem="cliente.telefone "+gs_ordem_consulta
OTHER CASE
QRY_cliente_ler.parametro_ordem="cliente.razao_social_nome "+gs_ordem_consulta
END
IF filtro_somente_cliente_fornecedor=1 THEN
QRY_cliente_ler.param_somente_cliente=Null
QRY_cliente_ler.param_somente_fornecedor=Null
ELSE
IF filtro_somente_cliente_fornecedor=2 THEN
QRY_cliente_ler.param_somente_cliente=1
QRY_cliente_ler.param_somente_fornecedor=Null
ELSE
QRY_cliente_ler.param_somente_cliente=Null
QRY_cliente_ler.param_somente_fornecedor=1
END
END
// gn_somente_cliente_fornecedor=1 // 1=todos 2=Somente Cliente 3=Somente Fornecedore
//1-Normal
//2-Inativo
//3-Bloqueado
//4-Sem Contrato
//5-Todos
IF filtro_situacao=5 THEN // 5=Todos
ELSE
IF filtro_somente_cliente_fornecedor=1 // todos THEN
QRY_cliente_ler.param_situacao_cliente=filtro_situacao
QRY_cliente_ler.param_situacao_fornecedor=filtro_situacao
ELSE
IF filtro_somente_cliente_fornecedor=2 THEN //somente clientes
QRY_cliente_ler.param_situacao_cliente=filtro_situacao
QRY_cliente_ler.param_situacao_fornecedor=Null
ELSE // somente fornecedore
QRY_cliente_ler.param_situacao_cliente=Null
QRY_cliente_ler.param_situacao_fornecedor=filtro_situacao
END
END
END
IF filtro_id_representante=0 THEN
ELSE
QRY_cliente_ler.Param_representante_inicial=filtro_id_representante // caso nao informar nao executara esse filtro
QRY_cliente_ler.Param_representante_final=filtro_id_representante
END
cy_valor_receber is currency=0
cy_valor_pagar is currency=0
cy_valor_diferenca is currency=0
//QRY_cliente_ler
SELECT
cliente.id_cliente AS cli_id_cliente,
cliente.foto AS cli_foto,
cliente.id_empresa_cliente AS cli_id_empresa_cliente,
cliente.juridica_fisica AS cli_juridica_fisica,
cliente.cnpj_cpf AS cli_cnpj_cpf,
cliente.inscricao_estadual AS cli_inscricao_est,
cliente.razao_social_nome AS cli_razao_social,
cliente.nome_fantasia AS cli_fantasia,
cliente.data_cadastro AS cli_data_cadastro,
cliente.telefone AS cli_telefone,
cliente.id_empresa_representante AS cli_id_empresa_representante,
representante.nome AS rep_nome,
cliente.endereco_cidade AS cli_cidade,
cliente.endereco_uf AS cli_uf,
cliente.tabela_cliente AS tab_cli,
cliente.valor_contrato AS cli_valor_contrato,
cliente.valor_receber AS cli_valor_receber,
cliente.valor_pagar AS cli_valor_pagar,
cliente.tabela_fornecedor AS tab_for,
cliente.id_centro_custo AS cli_centro_custo,
cliente.endereco_cmun AS cli_cmun,
CASE cliente.situacao_cliente
WHEN 1 THEN ''
WHEN 2 THEN 'inat.'
WHEN 3 THEN 'bloq.'
WHEN 4 THEN 'monit'
WHEN 5 THEN 's/con'
END,
CASE cliente.situacao_fornecedor
WHEN 1 THEN ''
WHEN 2 THEN 'inat.'
WHEN 3 THEN 'bloq.'
WHEN 4 THEN 'monit'
WHEN 5 THEN 's/con'
END
FROM
cliente
LEFT OUTER JOIN
representante
ON cliente.id_empresa_representante=representante.id_Empresa_representante
WHERE
( cliente.situacao_cliente={param_situacao_cliente}
OR
cliente.situacao_fornecedor={param_situacao_fornecedor} )
AND
cliente.id_empresa_representante BETWEEN {Param_representante_inicial} AND {Param_representante_final}
AND
cliente.tabela_cliente={param_somente_cliente}
AND
cliente.tabela_fornecedor={param_somente_fornecedor}
ORDER BY {parametro_ordem}