Árvore de páginas

Ponto-de-Entrada: VX007RMC - Validação de percentual do resultado minimo comercial.
Abrangências: Microsiga Protheus 10 , Microsiga Protheus 11
Versões: Microsiga Protheus 10 , Microsiga Protheus 11
Compatível Países: Todos
Sistemas Operacionais: Todos
Compatível às Bases de Dados: Todos
Idiomas: Português (Brasil)
Descrição:
Este ponto de entrada está localizado na rotina Atend. Modelo 2 (VEIXA018). Tem como finalidade validar o percentual de resultado mínimo comercial permitindo a criação de  validações customizadas retornando o percentual conforme desejar.
Eventos

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma  ³ VEIXX007 º Autor ³ Andre Luis Almeida º Data ³  08/04/10   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Minimo Comercial Valor de Venda e Resultado x Margem Lucro º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºParametros³ nOpcao ( 1-Valor de Venda / 2-Resultado )                  º±±
±±º          ³ aMinCom  (Vetor de Parametros/Retorno)                     º±±
±±º             ³     aMinCom[01] = Chassi Interno (CHAINT)                    º±±
±±º             ³     aMinCom[02] = Marca do Veiculo                           º±±
±±º             ³     aMinCom[03] = Modelo do Veiculo                          º±±
±±º             ³     aMinCom[04] = Segmento do Modelo                         º±±
±±º             ³     aMinCom[05] = Cor do Veiculo                             º±±
±±º             ³     aMinCom[06] = Valor Negociacao                           º±±
±±º             ³     aMinCom[07] = Valor Sugerido Venda                       º±±
±±º             ³     aMinCom[08] = % de Valor de Venda do Minimo Comercial    º±±
±±º             ³     aMinCom[09] = % do Resultado na Negociacao               º±±
±±º             ³     aMinCom[10] = % do Resultado Minimo Comercial permitido  º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ Veiculos -> Novo Atendimento                               º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Function VEIXX007(nOpcao,aMinCom)
Local nVlrVdaM := 0 // Valor Minimo Comercial
Local nVlrDiff := 0
If !Empty(aMinCom[1])
    VV1->(DbSetOrder(1))
    VV1->(DbSeek(xFilial("VV1")+aMinCom[01]))
    aMinCom[02] := VV1->VV1_CODMAR
    aMinCom[03] := VV1->VV1_MODVEI
    aMinCom[04] := VV1->VV1_SEGMOD
    aMinCom[05] := VV1->VV1_CORVEI
    aMinCom[07] := FGX_VLRSUGV( aMinCom[1] , aMinCom[02] , aMinCom[03] , aMinCom[04] , aMinCom[05] , .t. ) // Valor Sugerido para Venda do Veiculo ( VVP (vlr tabela) + VVC (vlr cor adicional) )
    aMinCom[08] := VV1->VV1_MNVLVD // % de Valor de Venda do Minimo Comercial
    aMinCom[10] := VV1->VV1_MNCOMV // % do Resultado Minimo Comercial permitido
EndIf
VV2->(DbSetOrder(1))
If VV2->(DbSeek(xFilial("VV2")+aMinCom[02]+aMinCom[03]))

    If nOpcao == 1 // Valor de Venda Minimo Comercial

        If aMinCom[07] == 0
            aMinCom[07] := FGX_VLRSUGV( "" , aMinCom[02] , aMinCom[03] , aMinCom[04] , aMinCom[05] , .t. ) // Valor Sugerido para Venda do Veiculo ( VVP (vlr tabela) + VVC (vlr cor adicional) )
        EndIf
        If left(GetNewPar("MV_MINCVDU","0"),1) $ "1/S" // Utiliza Minimo Comercial como Valor Sugerido de Venda
            aMinCom[08] := 0
        Else
            If aMinCom[08] == 0
                aMinCom[08] := VV2->VV2_MNVLVD // % de Valor de Venda do Minimo Comercial do Modelo do Veiculo
                If aMinCom[08] == 0
                    aMinCom[08] := GetNewPar("MV_MINCVLV",0) // % de Valor de Venda do Minimo Comercial Geral
                EndIf
            EndIf
        EndIf
        nVlrVdaM := ( aMinCom[07] * ( aMinCom[08] / 100 ) ) // Valor Minimo Comercial (Vlr de Venda - % Minimo Comercial)
        nVlrDiff := ( aMinCom[06] - nVlrVdaM )
        DEFINE MSDIALOG oDlgMinCom TITLE "Minimo Comercial" FROM  00,00 TO 15,44 OF oMainWnd // Minimo Comercial
            @ 011,018 SAY ("Valor de Tabela"+":") SIZE 80,20 OF oDlgMinCom PIXEL COLOR CLR_BLUE // Valor de Tabela
            @ 010,085 MSGET oVlTabel VAR aMinCom[07] PICTURE "@E 999,999,999.99" SIZE 70,08 OF oDlgMinCom PIXEL COLOR CLR_BLUE WHEN .f.
            @ 026,018 SAY ("% Minimo Comercial"+":") SIZE 80,20 OF oDlgMinCom PIXEL COLOR CLR_BLUE // % Minimo Comercial
            @ 025,085 MSGET oPerVdaM VAR aMinCom[08] PICTURE "@E 9999.99 %" SIZE 70,08 OF oDlgMinCom PIXEL COLOR CLR_BLUE WHEN .f.
            @ 041,018 SAY ("Valor Minimo Comercial"+":") SIZE 80,20 OF oDlgMinCom PIXEL COLOR CLR_BLUE // Valor Minimo Comercial
            @ 040,085 MSGET oVlrVdaM VAR nVlrVdaM PICTURE "@E 999,999,999.99" SIZE 70,08 OF oDlgMinCom PIXEL COLOR CLR_BLUE WHEN .f.
            @ 056,018 SAY ("Valor Negociado"+":") SIZE 80,20 OF oDlgMinCom PIXEL COLOR CLR_BLUE // Valor Negociado
            @ 055,085 MSGET oValMov VAR aMinCom[06] PICTURE "@E 999,999,999.99" SIZE 70,08 OF oDlgMinCom PIXEL COLOR CLR_BLUE WHEN .f.
            If nVlrDiff == 0
                @ 071,070 BITMAP oxBranMC RESOURCE "BR_BRANCO" OF oDlgMinCom NOBORDER SIZE 10,10 when .f. PIXEL
            ElseIf nVlrDiff > 0
                @ 071,070 BITMAP oxVerdMC RESOURCE "BR_VERDE" OF oDlgMinCom NOBORDER SIZE 10,10 when .f. PIXEL
            Else
                @ 071,070 BITMAP oxVermMC RESOURCE "BR_VERMELHO" OF oDlgMinCom NOBORDER SIZE 10,10 when .f. PIXEL
            EndIf
            @  070,085 MSGET oVlrDiff VAR nVlrDiff PICTURE "@E 999,999,999.99" SIZE 70,08 OF oDlgMinCom PIXEL COLOR CLR_BLUE WHEN .f.
            DEFINE SBUTTON FROM 091,130 TYPE 1 ACTION (oDlgMinCom:End()) ENABLE OF oDlgMinCom // Botao OK
        ACTIVATE MSDIALOG oDlgMinCom CENTER

    ElseIf nOpcao == 2 // Resultado do Minimo Comercial

        If aMinCom[10] == 0
            aMinCom[10] := VV2->VV2_MNCOMV // % do Resultado Minimo Comercial permitido do Modelo do Veiculo
            If aMinCom[10] == 0
                aMinCom[10] := GetNewPar("MV_MINCOMV",0) // % do Resultado Minimo Comercial permitido Geral
            EndIf
        EndIf
        ///////////////////////////////////////////////////////////
        // Customiza o % do Resultado Minimo Comercial permitido //
        ///////////////////////////////////////////////////////////
        If ExistBlock("VX007RMC")
            aMinCom[10] := ExecBlock("VX007RMC",.f.,.f.,{aMinCom[10]})
        EndIf

Programa Fonte
VEIXA018, VX007RMC
Sintaxe

VX007RMC - Validação de percentual do resultado minimo comercial. ( [ aMinCom[10] ] ) --> nPercRet

Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
aMinCom[10] Vetor Percentual do resultado do minimo comercial padrão calculado pelo sistema.
Retorno
    nPercRet(numerico)
  • Percentual do resultado do minimo comercial padrão calculado de acordo com o ponto de entrada.
Exemplos
#include "Protheus.ch"/*===============================================================================#################################################################################+----------+----------+-------+-------------------------+------+----------+####|Funcao    | VX007RMC | Autor | Otavio Favarelli        | Data | 25/03/11 |####+----------+----------+-------+-------------------------+------+----------+####|Descricao | Ponto de Entrada para retornar o % de Resultado do Minimo    |####|          | Comercial permitido a ser validado no Atendimento de Veiculo |####+----------+--------------------------------------------------------------+####|Uso       | Atendimento Veiculo                                          |####+----------+--------------------------------------------------------------+#################################################################################===============================================================================*/User Function VX007RMC()Local nPercRet := ParamIxb[1] // % levantado pela rotina padrao VEIXX007MsgInfo("O ponto de entrada VX007RMC foi executado! 25/03/2011.","Atencao!")Return nPercRet // Retorna o % minimo permitido
Variáveis
Nome Tipo Escopo Pode Alterar descrição
Array of Record Global Não