Árvore de páginas

Versões comparadas

Chave

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

...

Produto:

Protheus

Versões:

Todas

Ocorrência:

Rotina Automática - VEIXX000 Entrada de Veículos (Execauto)

Ambiente:

SIGAVEI - Veículos

Descrição:Rotina automática que permite a entrada de veículos).
Parâmetros:
NomeTipoDescriçãoConteúdo Default
ExpA1ArrayArray contendo os dados do cabeçalho da Entrada de Veículos.
ExpA2

Array

Array contendo os itens da Entrada 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: 3-Inclusão; 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:

//Inclusão de uma entrada de veículos por compra gerando nota fiscal

#include #include "totvs.ch"
User Function INTVX0NF
User Function INCVX0NF()
Local xAutoCab     Local xEAutoCab     := {} // Campos Cabecalho Campos Cabecalho
Local xAutoItens     Local xEAutoItens   := {} // Campos Itens Campos Itens
Local xAutoIt     Local xAutoIt       := {}
//Local xTIPDOCLocal aParParamBox := {}
Local aRetParamBox := {}
AADD( aParParamBox , { 1 , RetTitle("F1_DOC") , Space(TamSX3("F1_DOC" )[1]) , "" , "" , "" , "" , 60 , .T. } ) // 1
AADD( aParParamBox , { 1 , RetTitle("F1_SERIE") , Space(TamSX3("F1_SERIE" )[1]) , "" , "" , "" , "" , 40 , .T. } ) // 2
AADD( aParParamBox , { 1 , RetTitle("F1_FORNECE") , Space(TamSX3("F1_FORNECE")[1]) , "" , "" , "" , "" , 40 , .T. } ) // 3
AADD( aParParamBox , { 1 , RetTitle("F1_LOJA") , Space(TamSX3("F1_LOJA" )[1]) , "" , "" , "" , "" , 40 , .T. } ) // 4
AADD( aParParamBox , { 1 , RetTitle("VV1_CHASSI") , Space(TamSX3("VV1_CHASSI")[1]) , "" , "" , "" , "" , 120 , .T. } ) // 5
//AADD( aParParamBox , { 2 , RetTitle("VVF_TIPDOC") , 2 , {"1=NF","3=Integracao SIGAEIC"} , 80 , "", .T. } ) // 6

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

//xTIPDOC := IIf (aRetParamBox[6] == 1 , "1" , "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

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

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    Private lMsErroAuto := .f.

    //////////////////////////
    // NF ENTRADA          //
    /////////////////////////
    aAdd(xEAutoCab,{"VVF_FILIAL"  , xFilial("VVF")  ,Nil})
    aAdd(xEAutoCab,{"VVF_FORPRO"  , "01"             ,Nil})
aAdd    aAdd(xAutoCabxEAutoCab,{"VVF_OPEMOVCLIFOR"  , "0F"             ,Nil})
aAdd    aAdd(xAutoCabxEAutoCab,{"VVF_DATMOVCODFOR"  ,dDataBase  "000001"        ,Nil})
aAdd    aAdd(xAutoCabxEAutoCab,{"VVF_DATEMILOJA " ,SF1->F1_EMISSAO    , "01"            ,Nil})
aAdd    aAdd(xAutoCabxEAutoCab,{"VVF_CODFORDATEMI"  ,SF1->F1_FORNECE  dDataBase       ,Nil})
aAdd    aAdd(xAutoCabxEAutoCab,{"VVF_LOJAFORPAG" ,SF1->F1_LOJA   , "001"           ,Nil})
aAdd    aAdd(xAutoCabxEAutoCab,{"VVF_FORPAGNATURE" ,RetCondVei()   , "9999999999"    ,Nil})
aAdd    aAdd(xAutoCabxEAutoCab,{"VVF_ESPECI" ,SF1->F1_ESPECIE   , "SPED"          ,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
    //ITEM
    xAutoIt := {}
    aAdd(xAutoIt,{"VVG_FILIAL"  , xFilial("VVG")    ,Nil})
    aAdd(xAutoIt,{"VVG_CHASSI"  , "CHASSI_TESTE"   ,Nil})
aAdd    aAdd(xAutoCabxAutoIt,{"VVFVVG_CHVNFECHAINT" ,SF1->F1_CHVNFE   , "000000"          ,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    aAdd(xAutoIt,{"VVG_CODTES"  , "001"             ,Nil})
    aAdd(xAutoIt,{"VVG_CHASSILOCPAD" ,VV1->VV1_CHASSI   , "MN"              ,Nil})
aAdd    aAdd(xAutoIt,{"VVG_CODTESVALUNI" ,SD1->D1_TES   , 999999.99         ,Nil})
aAdd    aAdd(xAutoIt,{"VVG_LOCPADESTVEI" ,VV1->VV1_LOCPAD   , "0"               ,Nil})
aAdd    aAdd(xAutoIt,{"VVG_VALUNICODORI" ,SD1->D1_TOTAL   , "0"               ,Nil})
aAdd    aAdd(xAutoIt,{"VVG_PICOSBSITTRI"  , "0"               ,Nil}) // Pis/Cof Subs
aAdd(xAutoItens,xAutoIt)

SD1->(dbSkip())
End

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


    aAdd(xEAutoItens,aClone(xAutoIt))

    cBkpFunName := FunName()
    SetFunNamecBkpFunName := FunName()
nBkpModulo := nModulo
SetFunName('VEIXA001')
nModulo := 11
MSExecAuto( {
    MSExecAuto( { |a,b,c,d,e,f,g,h,i| VEIXX000 VEIXX000(a,b,c,d,e,f,g,h,i) }, xAutoCab xEAutoCab,xAutoItensxEAutoItens,{} ,3 ,"0", ,.f. , ,"3"  )
SetFunName
    SetFunName(cBkpFunName)
nModulo := nBkpModuloIf lMsErroAuto
MostraErro
    If lMsErroAuto
        MostraErro()
Else    Else
MsgInfo        MsgInfo("Movimento criado com sucessoMovimento criado com sucesso")
EndIf    EndIf

Return


//Cancelamento de uma entrada de veículos

#include "totvs.ch"

User Function DELVX0NF()

Local xAutoCab     Local xAutoCab := {} // Campos Cabecalho Campos Cabecalho
Local xAutoItens     Local xAutoItens := {} // Campos Itens Campos Itens
Local xAutoIt     Local xAutoIt := {}



Local aParParamBox     Local aParParamBox := {}
Local aRetParamBox     Local aRetParamBox := {}
AADD( aParParamBox , { 1 , RetTitle

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

    AADD( aParParamBox , { 1 , RetTitle("F1_DOC") , Space Space(TamSX3("F1_DOC" )[1]) , "" , "" , "" , "" , 40  40 , .T. } )
AADD    AADD( aParParamBox  aParParamBox , { 1  1 , RetTitle RetTitle("F1_SERIE") , Space Space(TamSX3("F1_SERIE" )[1]) , "" , "" , "" , "" , 40  40 , .T. } )
AADD    AADD( aParParamBox  aParParamBox , { 1  1 , RetTitle RetTitle("F1_FORNECE") , Space Space(TamSX3("F1_FORNECE")[1]) , "" , "" , "" , "" , 40  40 , .T. } )
AADD    AADD( aParParamBox  aParParamBox , { 1  1 , RetTitle RetTitle("F1_LOJA") , Space Space(TamSX3("F1_LOJA" )[1]) , "" , "" , "" , "" , 40  40 , .T. } )
If
    If ! ParamBox ParamBox(aParParamBox,"Entrada Veiculo Entrada Veiculo - NF NF",@aRetParamBox,,,,,,,, .f., .f.)
Return        Return
EndIf    EndIf

    // F1 F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO
    //cNota cNota := "1812110021 000016011812110021 00001601"
cNota     cNota := aRetParamBox aRetParamBox[1] + aRetParamBox aRetParamBox[2] + aRetParamBox aRetParamBox[3] + aRetParamBox aRetParamBox[4]
    //cNota cNota := FMX FMX_INPUTBOX("Numero da nota fiscal de entradaNumero da nota fiscal de entrada", Space Space(TamSX3("F1_DOC")[1] + TamSX3 TamSX3("F1_SERIE")[1]))
    //cNota cNota := FMX FMX_INPUTBOX("Numero da nota fiscal de entradaNumero da nota fiscal de entrada", cNota  cNota )
SF1
    SF1->(dbSetOrder(1))
If     If ! SF1 SF1->(dbSeek(xFilial("SF1") + cNota  cNota ))
MsgStop        MsgStop("Nota fiscal não encontradaNota fiscal não encontrada")
Return        Return
EndIf    EndIf
cPergunta
    cPergunta := "Nota: " + SF1 SF1->F1_SERIE SERIE + " - " + SF1 SF1->F1_DOC DOC + CHR CHR(13) + CHR CHR(10) + ;
        "Fornecedor: " + sf1 sf1->F1_FORNECE FORNECE + " - " + sf1 sf1->F1_LOJA
cNumTraDig := ""
If ! MsgYesNo("Confirma Cancelamento da nota fiscal " + chr
    If ! MsgYesNo("Confirma Cancelamento da nota fiscal " + chr(13) + chr chr(10) + chr chr(13) + chr chr(10) + cPergunta  cPergunta )
Return         Return
EndIfIf !Empty(cNumTraDig)
aAdd    EndIf

    aAdd(xAutoCab, { 'VVF_NUMTRANUMNFI' , cNumTraDig , NIL } )
Else
aAdd(xAutoCab, { 'VVF_CODFOR' , SF1   , SF1->F1_FORNECE DOC , NIL  NIL } )
aAdd    aAdd(xAutoCab, { 'VVF_LOJASERNFI'   , SF1 SF1->F1_LOJA SERIE , NIL  NIL } )
aAdd    aAdd(xAutoCab, { 'VVF_NUMNFICODFOR'   , SF1 SF1->F1_DOC FORNECE , NIL  NIL } )
aAdd    aAdd(xAutoCab, { 'VVF_SERNFILOJA'     , SF1 SF1->F1_SERIE LOJA , NIL  NIL } )
EndIf
Private lMsHelpAuto := .t.
Private lMsErroAuto := .f.
MSExecAuto    MSExecAuto(;
        { |a,b,c,d,e,f,g,h,i| ;
VEIXX000        VEIXX000(a ,b ,c ,d ,e ,f ,g ,h ,i ) },;
xAutoCab        xAutoCab,{} ,{} ,5 ,"0" , ,.f. , , )
If lMsErroAuto    If lMsErroAuto
MostraErro        MostraErro()
Else    Else
MsgInfo        MsgInfo("Movimento cancelado com sucessoMovimento cancelado com sucesso.")
EndIf    EndIf

Return

Observações:

Esta rotina de Execução Automática se aplica as rotinas abaixo:

Entrada Por Compra (VEIXA001)

Entr. Por Remessa (VEIXA003)

Entr Retorno Remes (VEIXA006)

Entr. devol. Venda (VEIXA002)

Entr. Por Consig. (VEIXA005)

Entrada Por Transf (VEIXA004)

Entr Remess Consig (VEIXA008)

Entr. Ret. Consig. (VEIXA007) Não há.