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) |
Este ponto de entrada está localizado na rotina Agendamento (OFIOM350). Ao incluir um agendamento, é possível informar a kilometragem do veículo através do campo Km Veiculo (VSO_KILOME), (UPDOFIFS), e no momento de exportá-lo para um novo orçamento, a kilometragem também será exportada.
/*
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³ Funcao ³ FS_EXPAGEND ³ Autor ³ Rubens ³ Data ³ 18/01/10 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Descricao³ Verifica se pode exportar o agendamento ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*/
Static Function FS_EXPAGEND()
Local nCntFor, nCntFor2, nAuxPos
Local aTTFatPar := {} // Matriz contendo todos os TT e Faturar Para { TT Peca , TT Servico , Cliente, Loja }
Local lAddFatPar
Local cAuxSeqInc, nAuxSeqVS3, nAuxSeqVS4
Local nValPec, nMarLuc
Local lKilometragem, nValHor
Local aTempPro, cCenCus
Local lVAJGRUMOD := (VAJ->(FieldPos("VAJ_GRUMOD")) > 0)
Local lVAJAPLICA := (VAJ->(FieldPos("VAJ_APLICA")) > 0)
Local lVS4SEQSER := (VS4->(FieldPos("VS4_SEQSER")) > 0 .and. VO7->(FieldPos("VO7_SEQSER")) > 0)
Local cSeqSer
Local lIncSer := .f.
Local cGruMod := ""
Local cAuxChaInt := Space(TamSX3("VV1_CHAINT")[1])
Private cFormulPeca := ""
// Levanta todos os TT e Fat. Para possiveis
For nCntFor := 1 to Len(aIncAg)
// Pecas
If aIncAg[nCntFor,11] == "1"
nAuxPos := aScan(aTTFatPar,{ |x| x[1] == aIncAg[nCntFor,6] .and. x[3] == aIncAg[nCntFor,7] .and. x[4] == aIncAg[nCntFor,8] } )
// Servicos
ElseIf aIncAg[nCntFor,11] == "2"
nAuxPos := aScan(aTTFatPar,{ |x| x[2] == aIncAg[nCntFor,6] .and. x[3] == aIncAg[nCntFor,7] .and. x[4] == aIncAg[nCntFor,8] } )
EndIf
lAddFatPar := .t. // Adiciona na matriz ...
If nAuxPos == 0
For nAuxPos := 1 to Len(aTTFatPar)
// Se for o mesmo faturar para ...
If aTTFatPar[nAuxPos,3] == aIncAg[nCntFor,7] .and. aTTFatPar[nAuxPos,4] == aIncAg[nCntFor,8]
// Pecas
If aIncAg[nCntFor,11] == "1" .and. empty(aTTFatPar[nAuxPos,1])
aTTFatPar[nAuxPos,1] := aIncAg[nCntFor,6]
lAddFatPar := .f.
exit
EndIf
// Servicos
If aIncAg[nCntFor,11] == "2" .and. empty(aTTFatPar[nAuxPos,2])
aTTFatPar[nAuxPos,2] := aIncAg[nCntFor,6]
lAddFatPar := .f.
exit
EndIf
EndIf
Next nAuxPos
If lAddFatPar
AADD( aTTFatPar, { "", "", aIncAg[nCntFor,7], aIncAg[nCntFor,8] } )
// Atualiza TT de Peca ou Servico ...
aTTFatPar[Len(aTTFatPar), Val(aIncAg[nCntFor,11])] := aIncAg[nCntFor,6]
EndIf
EndIf
Next
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Gera Orcamentos³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Begin Transaction
For nAuxPos := 1 to Len(aTTFatPar)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Verifica se nao ficou algum TT em branco, e atualiza ele..³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
// Se o TT de Peca estiver vazio, grava o TT de Servico
If empty(aTTFatPar[nAuxPos,1])
aTTFatPar[nAuxPos,1] := aTTFatPar[nAuxPos,2]
EndIf
// Se o TT de Servico estiver vazio, grava o TT de Peca
If empty(aTTFatPar[nAuxPos,2])
aTTFatPar[nAuxPos,2] := aTTFatPar[nAuxPos,1]
EndIf
//
// Posiciona Cliente
dbSelectArea("SA1")
dbSetOrder(1)
dbSeek(xFilial("SA1")+aTTFatPar[nAuxPos,3]+aTTFatPar[nAuxPos,4])
// Posiciona Veiculo
dbSelectArea("VV1")
dbSetOrder(2)
dbSeek(xFilial("VV1")+VSO->VSO_GETKEY)
// Procura Modelo do veiculo
cGruMod := FM_SQL("SELECT VV2_GRUMOD FROM "+RetSQLName("VV2")+" WHERE VV2_FILIAL = '"+xFilial("VV2")+"' AND VV2_CODMAR = '"+VV1->VV1_CODMAR+"' AND VV2_MODVEI = '"+VV1->VV1_MODVEI+"' AND D_E_L_E_T_ = ' '")
// Posiciona o TT de Peca
dbSelectArea("VOI")
dbSetOrder(1)
dbSeek(xFilial("VOI")+aTTFatPar[nAuxPos,1])
// Formula para calculo do valor das pecas
cFormulPeca := iif( !Empty(VOI->VOI_VALPEC) , VOI->VOI_VALPEC , &(GETMV("MV_FMLPECA")) )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Cabecalho do Orcamento³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("VS1")
RecLock("VS1",.T.)
VS1->VS1_FILIAL := xFilial("VS1")
VS1->VS1_NUMORC := GetSXENum("VS1","VS1_NUMORC")
VS1->VS1_TIPORC := "2" // Orcamento de Oficina
VS1->VS1_NUMAGE := VSO->VSO_NUMIDE
VS1->VS1_CLIFAT := aTTFatPar[nAuxPos,3]
VS1->VS1_LOJA := aTTFatPar[nAuxPos,4]
VS1->VS1_NCLIFT := SA1->A1_NOME
VS1->VS1_TIPCLI := SA1->A1_TIPO
VS1->VS1_OBSMEM := VSO->VSO_OBSMEM
VS1->VS1_CODMAR := VSO->VSO_CODMAR
VS1->VS1_DATORC := CriaVar("VS1_DATORC")
VS1->VS1_HORORC := CriaVar("VS1_HORORC")
VS1->VS1_CODVEN := CriaVar("VS1_CODVEN")
VS1->VS1_DATVAL := CriaVar("VS1_DATVAL")
VS1->VS1_TIPTEM := aTTFatPar[nAuxPos,1] // TT de Peca
VS1->VS1_TIPTSV := aTTFatPar[nAuxPos,2] // TT de Servico
//VS1->VS1_FORPAG
//VS1->VS1_CODBCO
VS1->VS1_FORMUL := cFormulPeca
VS1->VS1_CHAINT := VV1->VV1_CHAINT
VS1->VS1_TIPVEN := "1" // Varejo
//VS1->VS1_NATURE
VS1->VS1_STATUS := "0"
VS1->VS1_CFNF := "1" // Gera Nota Fiscal
VS1->VS1_KILOME := VSO->VSO_KILOME
//VS1_PGTFRE
//Ponto de entrada para gravacao do agendamento no orcamento.
if ExistBlock("OF350GRORC")
ExecBlock("OF350GRORC",.f.,.f.)
Endif
MsUnLock()
OFIOM350, OF350GRORC
OF350GRORC - Exportação de campos para o orçamento. ( [ ] )
Nome | Tipo | Descrição | Default | Obrigatório | Referência | ||||||||||||
Array of Record |
-
()
#INCLUDE "PROTHEUS.CH"/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜܱ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±±±ºPrograma ³OF350GRORCºAutor ³ Otavio Favarelli º Data ³ 24/03/11 º±±±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±±±ºDesc. ³ Ponto de entrada para gravacao de campos do agendamento no orcamento º±±±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±±±ºUso ³ SIGAOFI º±±±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/User Function OF350GRORC()//VS1->VS1_DEPTO := GETMV("MV_DEPTOAG")//VS1->VS1_NATURE := GETMV("MV_NATUREZ")MsgInfo("O ponto de entrada OF350GRORC foi executado!","Atencao!")Return
Nome | Tipo | Escopo | Pode Alterar | descrição | ||||||||||
Array of Record | Global | Não |