ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ajuda para bolar a regra de negocio? **Concluído**

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 14, 2010 9:53 pm    Assunto: Ajuda para bolar a regra de negocio? **Concluído** Responder com Citação

Pessoal, estou com um problema numa regra de negocio que preciso fazer aqui em um form de ordem de serviço...

Tenho que alimentar este form da segunte maneira

Chamo um nova OS.

Se não for cliente cadastrado é acionado uma tabela de preços chamada TABELA PREÇO GLOBAL

Se a OS for para algum cliente que tenha vinculado a ele a tabela de preço então o Sistema busca a TABELA DE PREÇO INDIVIDUAL pois cada cliente tem preços diferenciados.

Então neste caso temos dois tipos de tabelas diferente que o formulario de OS deve tratar. Isso o sistema ja faz com precisão.

Agora, um cliente me pediu para ver se tem como fazer outra regra neste OS.

Por exemplo nast tabelas de preços tanto global quanto individual, existe um indice que é do condutor que entrga a mercadoria. Porém este cliente quer trabalhar com preços diferenciados, dependendo do condutor do veiculo. Ou seja uns ganham porcentagem X e outros porcentagem Y.

Ai é que esta, não estou sabendo montar a regra de negocio para este caso ai.

Cheguei a abrir um campo novo no Cadastro de Condutor e colocar o valor do indice no cadastro do condutor.

Ai o sistema na hora de incluir um OS verificar se o condutor tem um indice de porcentagem ai calcular o valor do frete dele cfe o indice de seu cadastro.

Funcionou novamente. Mais ai fiquei barrado em uma questão que complicou.

Estes OS, são pré-preenchidos e em alguns casos define um condutor para fazer o frete e grava no banco, mais a qualquer momento pode alterar o condutor neste OS, e ai que o "bixo pega"... Como alterar varios pedidos desta ordem novamente? Pois quando estou fazendo um a um o sistema verifica todas as chaves das tabelas envolvidas, mais depois de gravado em outra tabela chamada serviços isso ja fica impossivel de fazer a verificação, pois na época que foi crado não foi bolado para este tipo de rergra.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree


Editado pela última vez por adriano_servitec em Dom Out 17, 2010 10:29 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
cyberdisk
Colaborador
Colaborador


Registrado: Domingo, 4 de Julho de 2010
Mensagens: 2391
Localização: São José dos Campos - SP

MensagemEnviada: Qui Out 14, 2010 10:39 pm    Assunto: Responder com Citação

Citação:
Estes OS, são pré-preenchidos e em alguns casos define um condutor para fazer o frete e grava no banco, mais a qualquer momento pode alterar o condutor neste OS, e ai que o "bixo pega"... Como alterar varios pedidos desta ordem novamente? Pois quando estou fazendo um a um o sistema verifica todas as chaves das tabelas envolvidas, mais depois de gravado em outra tabela chamada serviços isso ja fica impossivel de fazer a verificação, pois na época que foi crado não foi bolado para este tipo de rergra.


de uma maneira bem simples, basta colocar na tabela serviços, mais um campo de controle e montar um código para tratar especificamente desse controle

abraço
_________________
O conhecimento abre muitas portas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 14, 2010 10:58 pm    Assunto: Responder com Citação

Ola amigo, poderia me explicar melhor?
Vou mostrar a imagem, para mostrar como é calculado estes valores na grid


Uploaded with ImageShack.us

Se vc reparar existe um calculo na hora que estou incluindo na grade, que vai pra tabela servicos.

Ai depis se eu precisar alterar o nome do condutor eu não estou conseguindo alterar os serviços, pois alguns condutores vão ter indice na tabela, mais outros não. Então não estou sabendo deonde pegar estas informações para o recalculo.

Obrigado pela ajuda.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
cyberdisk
Colaborador
Colaborador


Registrado: Domingo, 4 de Julho de 2010
Mensagens: 2391
Localização: São José dos Campos - SP

MensagemEnviada: Qui Out 14, 2010 11:06 pm    Assunto: Responder com Citação

no meu caso tenho algo parecido, e para isso utilizei um dbnavigator especificamente para essa tabela ( incluir, editar, excluir e salvar )

dessa maneira da para mexer em todos os campos dessa tabela sem problemas

abraço
_________________
O conhecimento abre muitas portas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 14, 2010 11:07 pm    Assunto: Responder com Citação

Fora esta tabela que é a TABELA DE PREÇO IDIVIDUAL


Uploaded with ImageShack.us

Ainda existe a TABELA DE PREÇO GLOBAL e pode ter condutores que tenham seus indice de peço diferenciados.

Repare que ai na imagem ja tem o valor para o condutor, só que em algum momento pode existir um condutor na lista que tenha este valor diferenciado, como ja citei.


Grato pela ajuda.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 14, 2010 11:09 pm    Assunto: Responder com Citação

cyberdisk escreveu:
no meu caso tenho algo parecido, e para isso utilizei um dbnavigator especificamente para essa tabela ( incluir, editar, excluir e salvar )

dessa maneira da para mexer em todos os campos dessa tabela sem problemas

abraço
Mais aqui neste form cyberdisk, o calculo ja é efetuado logo que o usuario escolhe o destino cfe a imagem da BUSCA DA TABELA DE PREÇO.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
cyberdisk
Colaborador
Colaborador


Registrado: Domingo, 4 de Julho de 2010
Mensagens: 2391
Localização: São José dos Campos - SP

MensagemEnviada: Qui Out 14, 2010 11:15 pm    Assunto: Responder com Citação

tambem é facil de solucionar ... crie campos como

valor1, valor2, valor3 ... etc ou outro nome

dessa maneira voce pode colcar os preços que quiser diferenciados pelos valores ... ai voce pode criar um diferenciador para o serviço ou condutor
que deverá ser solicitado no cadastro

abraço
_________________
O conhecimento abre muitas portas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 14, 2010 11:20 pm    Assunto: Responder com Citação

cyberdisk escreveu:
tambem é facil de solucionar ... crie campos como

valor1, valor2, valor3 ... etc ou outro nome

dessa maneira voce pode colcar os preços que quiser diferenciados pelos valores ... ai voce pode criar um diferenciador para o serviço ou condutor
que deverá ser solicitado no cadastro

abraço
Desculpe, mais não entendi o seu raciocinio.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
cyberdisk
Colaborador
Colaborador


Registrado: Domingo, 4 de Julho de 2010
Mensagens: 2391
Localização: São José dos Campos - SP

MensagemEnviada: Qui Out 14, 2010 11:24 pm    Assunto: Responder com Citação

Citação:
o calculo ja é efetuado logo que o usuario escolhe o destino


crie colunas com valores diferenciados, depois é só optar por qual coluna voce vai usar para um detrminado destino ... consegui entender ?

abraço
_________________
O conhecimento abre muitas portas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 14, 2010 11:31 pm    Assunto: Responder com Citação

cyberdisk escreveu:
Citação:
o calculo ja é efetuado logo que o usuario escolhe o destino


crie colunas com valores diferenciados, depois é só optar por qual coluna voce vai usar para um detrminado destino ... consegui entender ?

abraço
Vc diz criar colunas diferienciadas aonde? Na tabela de preço?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
cyberdisk
Colaborador
Colaborador


Registrado: Domingo, 4 de Julho de 2010
Mensagens: 2391
Localização: São José dos Campos - SP

MensagemEnviada: Qui Out 14, 2010 11:34 pm    Assunto: Responder com Citação

Exatamente ... com isso vai resolver esse problema
_________________
O conhecimento abre muitas portas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 14, 2010 11:37 pm    Assunto: Responder com Citação

cyberdisk escreveu:
Exatamente ... com isso vai resolver esse problema
Mais esta tabela é do cliente e não do condutor...

Se eum mudo de condutor ai como fica?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
cyberdisk
Colaborador
Colaborador


Registrado: Domingo, 4 de Julho de 2010
Mensagens: 2391
Localização: São José dos Campos - SP

MensagemEnviada: Qui Out 14, 2010 11:40 pm    Assunto: Responder com Citação

aplique a mesma regra para o condutor
_________________
O conhecimento abre muitas portas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 14, 2010 11:55 pm    Assunto: Responder com Citação

cyberdisk escreveu:
aplique a mesma regra para o condutor
Se vc reparar tenho na imagem acima a tabela de preço de um dos clientes, e tem o indice de 65% para cada serviço - o serviço - o valor do serviço e o valor do condutor. Isso foi uma regra que o usuario colocou para este cliente. Então este cliente paga o serviço desta forma ai.

Mais neste caso não diz que o condutor x tem que receber 85% e o condutor Y 70%, diz que todos condutores receberão 65%.

Só que tenho um condutor diferenciado que no serviços executados ele recebe 85% e não 65%, ai é que eu criei este novo campo na tabela do condutor.

Ai neste form o sistema verifica se o condutor tem este indice diferenciado e aplica na tabela de serviço, na grid que mostra no primeira imagem.

então inclui no codigo que faz este tratamento
Código:
procedure Tfrmcadordserv.tabpreco_cfe_tipo_clie;
var
  _ChamaFrm : TfrmPesq;
  qryTemp: TZQuery;
  sTipoServ: String;
  cPercServ, cVlrMotoboy: Real;
begin

  //faço uma verificação se for cliente avuslo abro a lista de precos da tabela de precos
  //frmPesq.qryTabserv.Connection := dm.connection;
  _ChamaFrm := TfrmPesq.Create(Application);
  qryTemp := TZQuery.Create(nil);
  try
    //Autor: Adriano
    //Data: 12/10/2010
    //Para tratar os condutores que tem valor diferenciado de seu salario dentro do form cadmotoboy
    with qryTemp do
    begin
      if condutor.KeyValue <> null then
      begin
        Connection := dm.connection;
        Close;
        SQL.Clear;
        SQL.Add(' select TIPOSERV, PERCSERV, VLRMOTOBOY  ');
        SQL.Add(' from motoboy where idmotoboy = :iBusca ');
        ParamByName('iBusca').AsInteger := condutor.KeyValue;
        Open;
        if not IsEmpty then //Se não estiver vazio
        begin
          sTipoServ := qryTemp.FieldByName('TIPOSERV').AsString;
          if Trim(sTipoServ) <EmptyStr> 0 then
            cPercentual := cPercServ; //Variavel publica recebe o valor do motoboy individual
          cValorMotoboy := 0; //Quando usar variavel publica, global etc...sempre limpar antes de iniciar para não ficar dados alocados.
          if cVlrMotoboy > 0 then
            cValorMotoboy := cVlrMotoboy; //Variavel publica recebe o valor do motoboy individual
        end;
      end;
    end;
    /////////-------------------------------------------////////////
    if (trim(dbtext2.Caption) = EmptyStr) or (dbtext2.caption = '0') and (resultpesq = EmptyStr) then
    begin
      //precolocal := nil;
      //CriaQuery(TComponent(Self), precolocal, dm.connection, dsprecolocal);
      _resultLabel_Pesq('Listagem de preços [Modo Global]');
      with qryTabserv do
      begin
        close;
        SQL.clear;
        SQL.Add (' select * from preco  ');
        open;
      end;
    end else
    begin
      //se for cliente cadastrado então abro a tabela preco e serviços local do proprio cliente
      //precoservlocal := nil;
      //CriaQuery(TComponent(Self), precoservlocal, dm.connection, dsprecoservlocal);
      _resultLabel_Pesq('Listagem de preços [Modo Individual] '+lblcliente.Caption);
      with qryTabserv do
      begin
        close;
        SQL.clear;
        SQL.Add (' select * from preserv           ');
        SQL.Add (' where idclientes = :pidclientes ');
        SQL.Add (' and ativar = '+ QuotedStr('T')   ); //carrega somente os preços marcados na tabela de preco
        ParamByName('pidclientes').asinteger := strtoint(DBText2.Caption); // Pega a ID do cliente
        open;
      end;
    end;
  finally
     _ChamaFrm.Free;
     qryTemp.Free;
  end;
end;


Funciona...Mais como disse anteriormente, os condutores são mudados constantemente depois que ja encerrou a ordem de serviço.

Desculpe...Mas não vejo como sua ideia funcionaria aqui amigo.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Dom Out 17, 2010 10:28 pm    Assunto: Responder com Citação

Este post eu ja resolvi...

Não presiso mais de ajuda...

Obrigado pessoal.

Topico encerrado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB