Ponto de Entrada
Descrição: | Impressão da subordem de serviço. |
Parâmetros: | N/A |
Eventos: | END TRANSACTION // --------F-I-N-A-L---D-A---T-R-A-N-S-A-C-A ConfirmSX8() MsgInfo(STR0093 ,STR0025) FG_PEDORD(VO1->VO1_NUMOSV,"N","S")
if ExistBlock("OX001DEX") // Depois da Exportacao ExecBlock("OX001DEX",.f.,.f.) Endif if ExistBlock("IMPSUBORD") // Impressao da subordem de servico ExecBlock("IMPSUBORD",.f.,.f.) Endif
oDlgXX001:End()
|
Programa Fonte: | OFIXX001.PRW |
Retorno: | N/A |
Exemplo:
User Function IMPSUBORD()
Local nImp := 0 , nAgrupN := 0 , nix := 1 , i := 0 , nTotal := 0 , nLin := 0 , nContMec := 0 , nLinTxt := 0
Local aString := {}
Local cSPF , nPos := 0 , nLBarra := 0, nCBarra := 0
Private aReturn := { OemToAnsi("Requisitar"), 1,OemToAnsi("Alterar"), 2, 2, 2,,1 } //"Requisitar"###"Alterar"
Private titulo,cabec1,cabec2,nLastKey:=0,wnrel,oPrinter,oFont
Private cAlias , cNomRel , cPerg , cTitulo , cDesc1 , cDesc2 , cDesc3 , lHabil := .f.
Private oPr
Private cTamanho := "P" // P/M/G
Private Limite := 80 // 80/132/220
Private nCaracter := 15
if MsgYesNo("Deseja imprimir sub-ordem de serviço")
cAlias := "VO4"
NomeRel:= "SUBORDEM"
cPerg := nil
cTitulo:= "Requisição De Serviços" //"Requisicao de Servicos"
cDesc1 := "Sub Ordem" //"Sub Ordem"
cDesc2 := cDesc3 := ""
//aOrdem := {"Nosso Numero","Codigo do Item"}
lHabil := .f.
NomeRel := SetPrint(cAlias,NomeRel,cPerg,@cTitulo,cDesc1,cDesc2,cDesc3,lHabil,,,cTamanho)
//NomeRel := GETMV("MV_SUBORDE")
If nlastkey == 27
Return(Allwaystrue())
EndIf
SetDefault(aReturn,cAlias)
Set Printer to &NomeRel
Set Printer On
Set device to Printer
/*
cbTxt := Space(10)
cbCont := 0
cString := "VO3"
Li := 80
m_Pag := 1
wnRel := "OFIOM030"
cTitulo:= "Sub Ordem"
cabec1 := "OS.: "+M->VO2_NUMOSV+Space(1)+"Nro Req.:"+M->VO2_NOSNUM+Space(1)+"Func: "+M->VO2_FUNREQ+"-"+Subs(M->VO2_NOMREQ,1,22)+Space(1)+"Box: "+VO1->VO1_NUMBOX
cabec2 := "Cliente: "+M->VO2_PROVEI+"-"+Subs(M->VO2_NOMPRO,1,16)+Space(1)+"Chassi: "+M->VO2_CHASSI+Space(1)+"Frota:"+M->VO2_CODFRO
//cabec2 := "--- -- ---- --------------------------- ---------------------------- ----- ------- --------- -------------- -------------- ------"
nomeprog:="OFIOM030"
tamanho:="P"
nCaracter:=15
*/
nTotal := 0
nLin := 0
//SetRegua( Len( aAgrupSer ) )
// Asort(aAgrupSer,,,{|x,y| x[1]+x[2]+x[3] < y[1]+y[2]+y[3] } )
cCodSrv := VO4->VO4_CODSER
// For nAgrupN := 1 to 2
dbSelectArea("VO4")
dbSetOrder(10)
if dbSeek(xFilial("VO4")+VO1->VO1_NUMOSV)
While !Eof() .and. xFilial("VO4") == VO4->VO4_FILIAL .and. VO4->VO4_NUMOSV == VO1->VO1_NUMOSV
// If aColsSrv[ nix , Len(aColsSrv[nix]) ] .Or. (aColsSrv[nix,FG_POSVAR("VO4_IMPSUB","aHeaderSrv")] # "1")
// Loop
// EndIf
// i := Ascan(aAgrupSer,{|x| x[1] == aColsSrv[nix,FG_POSVAR("VO4_CODSER","aHeaderSrv")] })
// If nAgrupN == 1 .And. i # 0 .Or. nAgrupN == 2 .And. i == 0
// Loop
// EndIf
If nLin > 66 .Or. i # 0
nLin := 0
Else
If nLin > 33
nLin := 0
ElseIf nLin # 0
nLin := 34
EndIf
EndIf
DbSelectArea("VO2")
DbSetOrder(1)
DbSeek(xFilial("VO2")+VO4->VO4_NOSNUM)
DbSelectArea("VAI")
DbSetOrder(1)
DbSeek(xFilial("VAI")+VO2->VO2_FUNREQ)
DbSelectArea("SA1")
DbSetOrder(1)
DbSeek(xFilial("SA1")+VO1->VO1_PROVEI+VO1->VO1_LOJPRO)
DbSelectArea("VV1")
DbSetOrder(1)
DbSeek(xFilial("VV1")+VO1->VO1_CHAINT)
DbSelectArea("VO6")
DbSetOrder(1)
DbSeek(xFilial("VO6")+VO4->VO4_CODSER)
DbSelectArea("VOD")
DbSetOrder(1)
DbSeek(xFilial("VOD")+VO4->VO4_CODSEC)
// nLin := cabec(ctitulo,cabec1,cabec2,nomeprog,tamanho,nCaracter) + 1
@ nLin++,0 PSAY Repl("_",80)
@ nLin++,0 PSAY "Sub Ordem"+": "+ALLTRIM(VO4->VO4_NOSNUM+VO4->VO4_SEQUEN)+Space(27)+"Emissao: "+Dtoc(dDataBase)+" - "+left(Time(),5) //"Sub Ordem"###"Emissao: "
@ nLin++,0 PSAY "OS.: "+VO1->VO1_NUMOSV+Space(1)+"Nro Req.:"+VO4->VO4_NOSNUM+Space(1)+"Aberta em "+Dtoc(VO1->VO1_DATABE)+" as "+Transform(VO1->VO1_HORABE,"@R 99:99")+" "+Subs(VAI->VAI_NOMTEC ,1,11)+" "+"Box: "+VO1->VO1_NUMBOX //"OS.: "###"Nro Req.:"###"Aberta em "###" as "###"Box: "
@ nLin++,0 PSAY Repl("_",80)
@ nLin++,0 PSAY VV1->VV1_CODMAR+" "+left(Posicione("VV2",1,xFilial("VV2")+VV1->VV1_CODMAR+VV1->VV1_MODVEI,"VV2_DESMOD"),29)+" "+"Placa: "+Transform(VV1->VV1_PLAVEI,"@R AAA-9999")+" "+Transform(VO1->VO1_KILOME,"@E 99,999,999,999")+" Km"+" "+"Frota:"+VV1->VV1_CODFRO //"Marca: "###"Modelo: "###"Placa: "###" Km" ### Frota
If !Empty(VO1->VO1_CODMOT)
@ nLin++,0 PSAY "Motorista: "+Posicione("VOG",1,xFilial("VOG")+VO1->VO1_CODMOT ,"VOG_NOMMOT") //"Motorista: "
EndIf
@ nLin++,0 PSAY "Cliente: "+VO1->VO1_PROVEI+"-"+VO1->VO1_LOJPRO+" "+left(SA1->A1_NOME,25)+Space(1)+"Chassi: "+VV1->VV1_CHASSI //"Cliente: "###"Chassi: "###"Frota:"
@ nLin++,0 PSAY Repl("_",80)
If i == 0
aString := {}
DbSelectArea("VOC")
DbSetOrder(2)
DbSeek(xFilial("VOC")+VV1->VV1_CODMAR+VO4->VO4_CODSER)
For nContMec := 1 to 12
If !Eof() .And. VOC->VOC_CODMAR == VV1->VV1_CODMAR .And. VOC->VOC_CODSER == VO4->VO4_CODSER
Aadd(aString,{VOC->VOC_QTDEXE,VOC->VOC_CODPRO,Subs(Posicione("VAI",1,xFilial("VAI")+VOC->VOC_CODPRO,"VAI_NOMTEC"),1,09) })
DbSelectArea("VOC")
DbSkip()
Else
Aadd(aString,{0,Space(6),Space(09) })
EndIf
Next
Asort(aString,,,{|x,y| Str(x[1],6)+x[2] > Str(y[1],6)+y[2] })
@ nLin++,0 PSAY Repl("-",5)+"[ "+"Servico a Executar"+" ]"+Repl("-",15)+"[ "+"Mecanicos Habilitados"+" ]"+Repl("-",13) //"Servico a Executar"###"Mecanicos Habilitados"
@ nLin++,0 PSAY Space(30)+"Nr. Vezes Codigo Nome" //"Nr. Vezes Codigo Nome"
@ nLin++,0 PSAY "Serviço "+".: "+VO4->VO4_CODSER+If(!Empty(aString[1,2]),Space(7)+Str(aString[1,1],6)+" "+aString[1,2]+" "+aString[1,3],"")+If(!Empty(aString[7,2]),Space(1)+Str(aString[7,1],6)+" "+aString[7,2]+" "+aString[7,3],"") //"Servico "
@ nLin++,0 PSAY "Descrição"+": "+Subs(VO6->VO6_DESSER,1,20)+If(!Empty(aString[2,2]),Space(2)+Str(aString[2,1],6)+" "+aString[2,2]+" "+aString[2,3],"")+If(!Empty(aString[8,2]),Space(1)+Str(aString[8,1],6)+" "+aString[8,2]+" "+aString[8,3],"") //"Descricao"
@ nLin++,0 PSAY "Tipo"+".....: "+VO4->VO4_TIPSER+"-"+Subs(Posicione("VOK",1,xFilial("VOK")+VO4->VO4_TIPSER,"VOK_DESSER"),1,17)+If(!Empty(aString[3,2]),Space(1)+Str(aString[3,1],6)+" "+aString[3,2]+" "+aString[3,3],"")+If(!Empty(aString[9,2]),Space(1)+Str(aString[9,1],6)+" "+aString[9,2]+" "+aString[9,3],"") //"Tipo"
@ nLin++,0 PSAY "Secção"+"....: "+substr(VOD->VOD_DESSEC,1,20)+If(!Empty(aString[4,2]),Space(2)+Str(aString[4,1],6)+" "+aString[4,2]+" "+aString[4,3],"")+If(!Empty(aString[10,2]),Space(1)+Str(aString[10,1],6)+" "+aString[10,2]+" "+aString[10,3],"") //"Secao"
@ nLin++,0 PSAY "Grupo"+"....: "+VO4->VO4_GRUSER+"-"+Subs(Posicione("VOS",1,xFilial("VOS")+VV1->VV1_CODMAR+VO4->VO4_GRUSER,"VOS_DESGRU"),1,18)+If(!Empty(aString[5,2]),Space(1)+Str(aString[5,1],6)+" "+aString[5,2]+" "+aString[5,3],"")+If(!Empty(aString[11,2]),Space(1)+Str(aString[11,1],6)+" "+aString[11,2]+" "+aString[11,3],"") //"Grupo"
@ nLin++,0 PSAY "Tp Padrao"+": "+Transform(VO4->VO4_TEMPAD,"@R 99:99")+If(!Empty(aString[6,2]),Space(17)+Str(aString[6,1],6)+" "+aString[6,2]+" "+aString[6,3],"")+If(!Empty(aString[12,2]),Space(1)+Str(aString[12,1],6)+" "+aString[12,2]+" "+aString[12,3],"") //"Tp Padrao"
Else
@ nLin++,0 PSAY "Serviço "+" "+"Agrupado"+": "+VO4->VO4_CODSER+" "+"Descrição"+": "+VO6->VO6_DESSER //"Servico "###"Agrupado"###"Descricao"
@ nLin++,0 PSAY "Grupo"+": "+VO4->VO4_GRUSER+"-"+Subs(Posicione("VOS",1,xFilial("VOS")+VV1->VV1_CODMAR+VO4->VO4_GRUSER,"VOS_DESGRU"),1,15)+Space(2)+"Secção"+": "+VOD->VOD_DESSEC+Space(10)+"Tp Padrão"+": "+Transform(VO4->VO4_TEMPAD,"@R 99:99") //"Grupo"###"Secao"###"Tp Padrao"
EndIf
If i # 0
cSPF := "4"
EndIf
// Do While i # 0 .And. i<= Len(aAgrupSer) .And. aAgrupSer[i,1] == aColsSrv[nix,FG_POSVAR("VO4_CODSER","aHeaderSrv")]
//
// If aAgrupSer[i,2] # cSPF
//
// If aAgrupSer[i,2] == "0"
// @ nLin++,0 PSAY "Ferramentas - descrição"+Repl("-",59) //"Ferramentas-Descricao"
// ElseIf aAgrupSer[i,2] == "1"
// @ nLin++,0 PSAY "-"+"Ap"+"---"+"Rp"+"-"+"Serviço----------descrição"+Repl("-",27)+"Tp Padrão"+Repl("-",09) //"AP"###"RP"###"Servico----------Descricao"###"Tp Padrao"
// Else
// @ nLin++,0 PSAY "Artigos"+Repl("-",29)+"Descrição"+Repl("-",27)+"Quantidade" //"Pecas"###"Descricao"###"Quantidade"
// EndIf
//
// cSPF := aAgrupSer[i,2]
//
// EndIf
//
// @ nLin++,0 PSAY If(cSPF == "1","( ) ( ) ","")+aAgrupSer[i,3]+" "+aAgrupSer[i,4]+If( cSPF == "2"," "+Transform(aAgrupSer[i,5],"@E 99,999,999,999"), If( cSPF == "1", If(Posicione("VOK",1,xFilial("VOK")+aColsSrv[nix,FG_POSVAR("VO4_TIPSER","aHeaderSrv")],"VOK_INCTEM")== "2", Space(9)+Transform(Posicione("VO6",2,xFilial("VO6")+FG_MARSRV(VV1->VV1_CODMAR,aAgrupSer[i,3])+aAgrupSer[i,3],"VO6_TEMCON"),"@R 99:99") , Space(9)+Transform(Posicione("VO6",2,xFilial("VO6")+FG_MARSRV(VV1->VV1_CODMAR,aAgrupSer[i,3])+aAgrupSer[i,3],"VO6_TEMFAB"),"@R 99:99") ) ," ") )
//
// i++
//
// If nLin >= 66
// nLin := 1
// EndIf
//
// EndDo
//
If i # 0
nLin := nLin+2
@ nLin++,0 PSAY "Executado por:"+Repl("_",26)+"Chefe Da Oficina:"+Repl("_",26) //"Executado por:"###"Chefe Oficina:"
Else
nLinTxt := 0
nLin++
@ nLin++,0 PSAY "Detalhamento da Descricao"
DbSelectArea("VO6")
DbSetOrder(2)
DbSeek(xFilial("VO6")+FG_MARSRV(VV1->VV1_CODMAR,VO4->VO4_CODSER) +VO4->VO4_CODSER )
DbSelectArea("SYP")
DbSeek(xFilial("SYP")+VO6->VO6_DESMEM )
Do While !Eof() .And. SYP->YP_CHAVE == VO6->VO6_DESMEM .And. SYP->YP_FILIAL == xFilial("SYP")
@ nLin++,0 PSAY Stuff(SYP->YP_TEXTO, If( (nPos:=At("
TEXTO))<=0 ,80,nPos) ,6,Space(6))
nLinTxt++
DbSkip()
If nLinTxt >= 14
Exit
EndIf
EndDo
EndIf
If GetNewPar("MV_ICODBAR","S") == "S"
nLBarra := 13.0
nCBarra := 3.5
If SX6->(DbSeek(xFilial("SX6")+"MV_POSCBAR")) // "L:=13,0C:=03,5"
nLBarra := Val( Substr(GetMv("MV_POSCBAR"), At("L:=",GetMv("MV_POSCBAR"))+3 ,4) )
nCBarra := Val( Substr(GetMv("MV_POSCBAR"), At("C:=",GetMv("MV_POSCBAR"))+3 ,4) )
if nLBarra == 0
nLBarra := Val( Substr(GetMv("MV_POSCBAR"), At("l:=",GetMv("MV_POSCBAR"))+3 ,4) )
Endif
if nLBarra == 0
nLBarra := 13.0
Endif
EndIf
If nLin > 33
nLBarra := (nLBarra*2)
endif
oPr := ReturnPrtObj()
cCode := ALLTRIM(VO4->VO4_NOSNUM+VO4->VO4_SEQUEN)
// MSBAR3("CODE128",nLBarra,0.5,Alltrim(cCode),oPr,Nil,Nil,Nil,nil ,1.5 ,Nil,Nil,Nil)
MSBAR3("CODE128",nLBarra,nCBarra,Alltrim(cCode),oPr,Nil,Nil,Nil,0.045,1.5,Nil,Nil,Nil)
// MSBAR3("CODE128", nLBarra , nCBarra , ALLTRIM(VO4->VO4_NOSNUM+VO4->VO4_SEQUEN) ,oPr,NIL,NIL,NIL,NIL,NIL, NIL,NIL, "A" )
EndIf
dbSelectArea("VO4")
dbSkip()
Enddo
Endif
// Next
Endif
Set Printer to
Set device to Screen
MS_FLUSH()
Return