Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

EXECAUTO

...

VEIXX000 -

...

Entrada de

...

Veículos

Produto:

Protheus

Versões:

Todas

Ocorrência:

Rotina Automática - OFIOM030 Requisição VEIXX000 Entrada de Serviços Veículos (Execauto)

Ambiente:

SIGAOFI SIGAVEI - OficinaVeículos

Descrição:Rotina automática que permite a requisição de serviços (apontamento não está contempladoentrada de veículos).
Parâmetros:
Lógico
NomeTipoDescriçãoConteúdo DefaultExpC1CaractereParâmetro de uso interno da TOTVS.ExpL1Parâmetro de uso interno da TOTVS.
ExpA1ArrayArray contendo os dados do cabeçalho da Requisição Entrada de ServiçosVeículos.
ExpA2

Array

Array contendo os itens da Requisição de ServiçosEntrada de Veículos.
ExpA3ArrayArray contendo a forma de pagamento da Entrada de Veículos. Caso não haja, informe um array vazio.
ExpN1NuméricoOpção desejada: 23-Inclusão (opção Requisitar); 3-Alteração (opção Alterar).; 5-Cancelamento.
ExpC1Caractere

Tipo de Entrada desejado:

"0"=Normal (entrada por compra)
"1"=Ped.Fabrica
"2"=Remessa
"3"=Transferencia
"4"=Consignacao
"5"=Devolucao
"6"=Frete
"7"=Retorno de Remessa
"8"=Retorno de Consignacao


ExpA4ArrayUso interno
ExpL1LógicoBooleano que define se deve exibir mensagens padrão da rotina..t.
ExpA5BooleanoArray contendo as informações da nota fiscal já gerada. Caso não haja, não informe nenhum conteúdo.{.t.,"",""}
ExpC2Caractere

Tipo do Documento a ser considerado:

"1" = Gera nota fiscal de Entrada - SD1/SF1
"2" = Gera movimentacao interna - SD3
"3" = Nao gera movimentacao de entrada Back Office (Nota Fiscal de Entrada / Mov. Interna de Estoque)
Neste caso o veiculo pode ser importado do mercado internacional e a nota fiscal já foi digitada no BackOffice
"4" = Nao gera movimentacao de entrada Back Office (Nota Fiscal de Entrada / Mov. Interna de Estoque)
Neste caso o veiculo foi produzido pela montadora através de uma Ordem de Produção no PCP

"1"

Passo a passo:

//Requisição de Serviço - Opções Requisitar (2) e Alterar (3)Inclusão de uma entrada de veículos por compra gerando nota fiscal

#include "Protheustotvs.ch"

User Function TST030REQINTVX0NF()
Local cSQL xAutoCab := ""{} // Campos Cabecalho
Local aParamBox xAutoItens := {} // Campos Itens
Local aRetParam xAutoIt := {}
Local aCabVO4 := {}//Local xTIPDOC

Local aAuxIteVO4 aParParamBox := {}
Local aIteVO4 aRetParamBox := {}
Local lRetExec := .t.
Local nOpcAviso

Private lMSHelpAuto
Private lMsErroAuto


AADD( aParamBoxaParParamBox , { 1 , RetTitle("OSF1_DOC") , "00000052" ,"@!Space(TamSX3("F1_DOC" )[1]) , "" , "" , "" , "" , 2060 , .T. } ) // 1
AADD( aParamBoxaParParamBox , { 1 , "Tipo de Tempo" ,"CS " ,"@!RetTitle("F1_SERIE") , Space(TamSX3("F1_SERIE" )[1]) , "" , "" , "" , "" , 2040 , .T. } ) // 2
AADD( aParamBoxaParParamBox , { 1 , "Grupo Servico" ,"01" ,"@!RetTitle("F1_FORNECE") , Space(TamSX3("F1_FORNECE")[1]) , "" , "" , "" , "" , 40 , .T. } ) // 3
AADD( aParamBoxaParParamBox , { 1 , RetTitle("ServicoF1_LOJA") , "10-020-018 " ,"@!Space(TamSX3("F1_LOJA" )[1]) , "" , "" , "" , "" , 40 , .T. } ) // 4
AADD( aParamBoxaParParamBox , { 1 , "Tipo de Servico" ,"SRI" ,"@!RetTitle("VV1_CHASSI") , Space(TamSX3("VV1_CHASSI")[1]) , "" , "" , "" , "" , 20120 , .fT. } ) // 5
//AADD( aParamBoxaParParamBox , { 12 , "Tempo Padrao" ,0 ,"@R 999:99RetTitle("VVF_TIPDOC") , 2 , {"1=NF","3=Integracao SIGAEIC"} , ""80 , "", 20, .fT. } ) // 6AADD

If ! ParamBox(aParamBoxaParParamBox,{1,"Secao" ,"MEC" ,"@!" ,"","","",20"Entrada Veiculo - NF",@aRetParamBox,,,,,,,, .f., .f.})
Return
EndIf

// 7
AADD(aParamBox,{xTIPDOC := IIf (aRetParamBox[6] == 1 , "Valor Fixo1" , 0 ,"@E 9999.99" ,"","","",20,.f.}) // 8
AADD(aParamBox,{1,"Valor Venda" ,0 ,"@E 9999.99" ,"","","",20,.f.}) // 9
aRetParam := {}
If !ParamBox(aParamBox,"ExecAuto Req. Servico",@aRetParam,,,,,,,,.f.)
lRetExec := .f.
EndIf"3" )

//cNota := "1812110021 00001601"
cNota := aRetParamBox[1] + aRetParamBox[2] + aRetParamBox[3] + aRetParamBox[4]
//cNota := FMX_INPUTBOX("Numero da nota fiscal de entrada", Space(TamSX3("F1_DOC")[1] + TamSX3("F1_SERIE")[1]))
//cNota := FMX_INPUTBOX("Numero da nota fiscal de entrada", cNota )
// F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO

SF1If lRetExec
DbSelectArea("VO1")
VO1->(dbSetOrder(1))
VO1If ! SF1->(dbSeek(xFilial("VO1SF1") + aRetParam[1] cNota ))
cSQL := "SELECT COUNT(*) "
cSQL += "FROM " + RetSQLName("VO4") + " VO4 "
cSQL += "WHERE VO4.VO4_FILIAL = '" + xFilial("VO4") + "' "
cSQL += "AND VO4.VO4_NUMOSV = '" + aRetParam[1] + "' "
cSQL += "AND VO4.VO4_TIPTEM = '" + aRetParam[2] + "' "
cSQL += "AND VO4.VO4_CODSER = '" + aRetParam[4] + "' "
cSQL += "AND VO4.D_E_L_E_T_ = ' ' "
nOpcAviso := Aviso("Escolha a opção", "Selecione o que deseja fazer:", { "Requisição", "Alteração", "Fechar" }, 1)If nOpcAviso == 1 // Requisicao
If FM_SQL(cSQL) > 0 // O servico esta requisitado, vamos excluir a linha e incluir uma nova
AADD(aAuxIteVO4, { "LINPOS" , "VO4_TIPTEM+VO4_CODSER",aRetParam[2] , aRetParam[4] })
// Deleta a linha na aCols
AADD(aAuxIteVO4, { "AUTDELETA" , "S" , NIL } )
AADD( aIteVO4 , aClone( aAuxIteVO4 ) )
EndIf
aAuxIteVO4 := {}
// Inclui a linha no aCols
AADD(aAuxIteVO4, { "VO4_NUMOSV" , VO1->VO1_NUMOSV , nil } )
AADD(aAuxIteVO4, { "VO4_TIPTEM" , aRetParam[2] , nil } )
AADD(aAuxIteVO4, { "VO4_GRUSER" , aRetParam[3] , nil } )
AADD(aAuxIteVO4, { "VO4_CODSER" , aRetParam[4] , nil } )
AADD(aAuxIteVO4, { "VO4_TIPSER" , aRetParam[5] , nil } )
If aRetParam[6] <> 0
AADD(aAuxIteVO4, { "VO4_TEMPAD" , aRetParam[6] , nil } )
EndIf
AADD(aAuxIteVO4, { "VO4_CODSEC" , aRetParam[7] , nil } )
If aRetParam[8] <> 0
AADD(aAuxIteVO4, { "VO4_VALSER" , aRetParam[8] , nil } )
EndIf
If aRetParam[9] <> 0 .AND. aRetParam[5] == 'TER'
AADD(aAuxIteVO4, { "VO4_VALCUS" , aRetParam[9] , nil } )
AADD(aAuxIteVO4, { "VO4_VALVEN" , aRetParam[9] , nil } )
EndIf
AADD( aIteVO4 , aClone( aAuxIteVO4 ) )
lMSHelpAuto := .t.
lMsErroAuto := .f.
MSExecAuto({|x,y,z| OFIOM030(,,x,y,z)},{},aIteVO4,2)
If lMsErroAuto
DisarmTransaction()
RollbackSx8()
MsUnlockAll()
MostraErro()
lRetExec := .f.
Endif
ElseIf nOpcAviso == 2 // Alteracao
If FM_SQL(cSQL) > 0 // O servico foi localizado, vamos altera-lo
aAdd(aCabVO4 ,{"NUMOSV" , VO1->VO1_NUMOSV , Nil })
aAdd(aCabVO4 ,{"TIPTEM" , aRetParam[2] , Nil }) // Tipo de Tempo Novo
//AADD(aCabVO4 , { "FATPAR" , , NIL } )
//AADD(aCabVO4 , { "LOJA " , , NIL } )
//AADD(aCabVO4 , { "DEPINT" , , NIL } )
//AADD(aCabVO4 , { "DEPGAR" , , NIL } )
AADD(aCabVO4 , { "TIPSER" , "SRT" , NIL } ) // Tipo de Servico Novo

AADD(aAuxIteVO4, { "VO4_NUMOSV" , VO1->VO1_NUMOSV , nil } )
AADD(aAuxIteVO4, { "VO4_TIPTEM" , aRetParam[2] , nil } )
AADD(aAuxIteVO4, { "VO4_CODSER" , aRetParam[4] , nil } )
AADD( aIteVO4 , aClone( aAuxIteVO4 ) )

MSExecAuto({|x,y,z| OFIOM030(,,x,y,z)},aCabVO4,aIteVO4,3)

MsgStop("Nota fiscal não encontrada")
Return
EndIf

cPergunta := "Nota: " + SF1->F1_SERIE + " - " + SF1->F1_DOC + CHR(13) + CHR(10) + ;
"Fornecedor: " + sf1->F1_FORNECE + " - " + sf1->F1_LOJA

If ! MsgYesNo("Confirma importacao da nota fiscal " + chr(13) + chr(10) + chr(13) + chr(10) + cPergunta )
Return
EndIf


aAdd(xAutoCab,{"VVF_CLIFOR" ,"F" ,Nil})
aAdd(xAutoCab,{"VVF_FORPRO" ,"0" ,Nil})
aAdd(xAutoCab,{"VVF_OPEMOV" ,"0" ,Nil})
aAdd(xAutoCab,{"VVF_DATMOV" ,dDataBase ,Nil})
aAdd(xAutoCab,{"VVF_DATEMI" ,SF1->F1_EMISSAO ,Nil})
aAdd(xAutoCab,{"VVF_CODFOR" ,SF1->F1_FORNECE ,Nil})
aAdd(xAutoCab,{"VVF_LOJA" ,SF1->F1_LOJA ,Nil})
aAdd(xAutoCab,{"VVF_FORPAG" ,RetCondVei() ,Nil})
aAdd(xAutoCab,{"VVF_ESPECI" ,SF1->F1_ESPECIE ,Nil})
aAdd(xAutoCab,{"VVF_NUMNFI" ,SF1->F1_DOC ,Nil})
aAdd(xAutoCab,{"VVF_SERNFI" ,SF1->F1_SERIE ,Nil})
aAdd(xAutoCab,{"VVF_NATURE" ,'1010101 ' ,Nil})
// aAdd(xAutoCab,{"VVF_VALMOV" ,SF1->F1_VALBRUT ,Nil})
aAdd(xAutoCab,{"VVF_CHVNFE" ,SF1->F1_CHVNFE ,Nil})

xAutoItens:= {} // Campos Itens

VV1->(dbSetOrder(2))

SD1->(dbSetOrder(1))
SD1->(dbSeek(xFilial("SD1") + cNota))
While !SD1->(Eof()) .and. SD1->D1_FILIAL == xFilial("SD1") .and. SD1->(D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA) == cNota

//cChassi := "CHASSI_MVC_EXECAUTO_001 "
cChassi := aRetParamBox[5]

VV1->(dbSeek(xFilial("VV1") + cChassi))

xAutoIt := {}
aAdd(xAutoIt,{"VVG_CHASSI" ,VV1->VV1_CHASSI ,Nil})
aAdd(xAutoIt,{"VVG_CODTES" ,SD1->D1_TES ,Nil})
aAdd(xAutoIt,{"VVG_LOCPAD" ,VV1->VV1_LOCPAD ,Nil})
aAdd(xAutoIt,{"VVG_VALUNI" ,SD1->D1_TOTAL ,Nil})
aAdd(xAutoIt,{"VVG_PICOSB" ,"0" ,Nil}) // Pis/Cof Subs
aAdd(xAutoItens,xAutoIt)

SD1->(dbSkip())
End

Private lMsHelpAuto := .t.
Private lMsErroAuto := .f.

cBkpFunName := FunName()
nBkpModulo := nModulo
SetFunName('VEIXA001')
nModulo := 11
MSExecAuto( { |a,b,c,d,e,f,g,h,i| VEIXX000(a,b,c,d,e,f,g,h,i) }, xAutoCab,xAutoItens,{} ,3 ,"0" , ,.f. , ,"3" )
SetFunName(cBkpFunName)
nModulo := nBkpModulo

If lMsErroAuto
MostraErro()
Else
MsgInfo("Movimento criado com sucesso")
EndIf


Return


//Cancelamento de uma entrada de veículos

#include "totvs.ch"

User Function DELVX0NF()
Local xAutoCab := {} // Campos Cabecalho
Local xAutoItens := {} // Campos Itens
Local xAutoIt := {}

Local aParParamBox := {}
Local aRetParamBox := {}

AADD( aParParamBox , { 1 , RetTitle("F1_DOC") , Space(TamSX3("F1_DOC" )[1]) , "" , "" , "" , "" , 40 , .T. } )
AADD( aParParamBox , { 1 , RetTitle("F1_SERIE") , Space(TamSX3("F1_SERIE" )[1]) , "" , "" , "" , "" , 40 , .T. } )
AADD( aParParamBox , { 1 , RetTitle("F1_FORNECE") , Space(TamSX3("F1_FORNECE")[1]) , "" , "" , "" , "" , 40 , .T. } )
AADD( aParParamBox , { 1 , RetTitle("F1_LOJA") , Space(TamSX3("F1_LOJA" )[1]) , "" , "" , "" , "" , 40 , .T. } )

If ! ParamBox(aParParamBox,"Entrada Veiculo - NF",@aRetParamBox,,,,,,,, .f., .f.)
Return
EndIf

// F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO
//cNota := "1812110021 00001601"
cNota := aRetParamBox[1] + aRetParamBox[2] + aRetParamBox[3] + aRetParamBox[4]
//cNota := FMX_INPUTBOX("Numero da nota fiscal de entrada", Space(TamSX3("F1_DOC")[1] + TamSX3("F1_SERIE")[1]))
//cNota := FMX_INPUTBOX("Numero da nota fiscal de entrada", cNota )

SF1->(dbSetOrder(1))
If ! SF1->(dbSeek(xFilial("SF1") + cNota ))
MsgStop("Nota fiscal não encontrada")
Return
EndIf

cPergunta := "Nota: " + SF1->F1_SERIE + " - " + SF1->F1_DOC + CHR(13) + CHR(10) + ;
"Fornecedor: " + sf1->F1_FORNECE + " - " + sf1->F1_LOJA

cNumTraDig := ""
If ! MsgYesNo("Confirma Cancelamento da nota fiscal " + chr(13) + chr(10) + chr(13) + chr(10) + cPergunta )
Return
EndIf

If !Empty(cNumTraDig)
aAdd(xAutoCab, { 'VVF_NUMTRA' , cNumTraDig , NIL } )
Else
aAdd(xAutoCab, { 'VVF_CODFOR' , SF1->F1_FORNECE , NIL } )
aAdd(xAutoCab, { 'VVF_LOJA' , SF1->F1_LOJA , NIL } )
aAdd(xAutoCab, { 'VVF_NUMNFI' , SF1->F1_DOC , NIL } )
aAdd(xAutoCab, { 'VVF_SERNFI' , SF1->F1_SERIE , NIL } )
EndIf

Private lMsHelpAuto := .t.
Private lMsErroAuto := .f.
MSExecAuto(;
{ |a,b,c,d,e,f,g,h,i| ;
VEIXX000(a ,b ,c ,d ,e ,f ,g ,h ,i ) },;
xAutoCab,{} ,{} ,5 ,"0" , ,.f. , , )
If lMsErroAuto
MostraErro()
Else
MsgInfo("Movimento cancelado com sucesso.")
EndIf


ReturnIf lMsErroAuto
DisarmTransaction()
RollbackSx8()
MsUnlockAll()
MostraErro()
lRetExec := .f.
Endif
Else // O servico nao foi localizado na OS, impossivel alterar
ConOut("O servico nao foi localizado na OS, impossivel alterar")
lRetExec := .f.
EndIf
EndIf
EndIfReturn lRetExec

Observações:

Não há.