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
|