Árvore de páginas

Ponto de Entrada

Descrição:

Este Ponto de Entrada está localizado na rotina Cancela Venda (OFIOM220) e tem por finalidade realizar a impressão dos itens que componham a nota cancelada. Desta forma o usuário poderá criar uma ordem de cancelamento após a confirmação do cancelamento da nota fiscal.

Localização:

Atualizações / Mov. Peças / Cancela Venda (OFIOM220)

Eventos:

/////////////////////

/*

ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±

±±³Funcao ³FS_CANCELA³ Autor ³ Andre ³ Data ³ 23/10/00 ³±±

±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±

±±³Descricao ³ Cancelamento da Venda de Pecas ³±±

±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

*/

Function FS_CANCELA()

 

Local i := 0

Local aRegSD2 := {}

Local aRegSE1 := {}

Local aRegSE2 := {}

Local cPrefix := &(GetNewPar("MV_1DUPREF","cSerie"))

Local lCupom := VS1->VS1_SERNFI == GetNewPar("MV_SERCUP","CUP")

Local cont := 0

Local lNFeCancel := SuperGetMV('MV_CANCNFE',.F.,.F.) .AND. SF2->(FieldPos("F2_STATUS")) > 0

 

if Alltrim(cPrefix) == ""

cPrefix := iif(VS1->VS1_SERNFI <> GetNewPar("MV_SERCUP","CUP"),VS1->VS1_SERNFI,GetNewPar("MV_SERCUP","CUP"))

Endif

 

DbSelectArea("SE1")

DBSetOrder(1)

//If SE1->(DBSeek(xFilial('SE1')+cPrefix+cNota))

If SE1->(DBSeek(xFilial('SE1')+cPrefix+space(TamSx3("E1_PREFIXO")[1]-Len(cPrefix))+cNota))

While !Eof() .and. SE1->E1_FILIAL == xFilial('SE1') .and. SE1->E1_PREFIXO == cPrefix+space(TamSx3("E1_PREFIXO")[1]-Len(cPrefix)) .and. SE1->E1_NUM == cNota

if VS1->VS1_SERNFI <> GetNewPar("MV_SERCUP","CUP") .and. SE1->E1_PREFORI != GetNewPar("MV_PREFBAL","BAL")

DBSkip()

loop

endif

If !Empty(SE1->E1_BAIXA) .or. SE1->E1_SALDO != SE1->E1_VALOR

MsgInfo(STR0019,STR0020) //Ha titulos baixados referentes a esta Venda..###Atencao

Return(.f.)

EndIf

DbSelectArea("SE1")

DbSkip()

Enddo

EndIf

 

// Transmite o Cancelamento para o SEFAZ automaticamente

If lNFeCancel

If !FGX_STATF2("D",VS1->VS1_SERNFI,VS1->VS1_NUMNFI,VS1->VS1_CLIFAT,VS1->VS1_LOJA,"S") // verifica se NF foi Deletada

 

dbSelectArea("SF2")

dbSetOrder(1)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

//³ Verifica se o estorno do documento de saída pode ser feito ³

//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

If MaCanDelF2("SF2",SF2->(RecNo()),@aRegSD2,@aRegSE1,@aRegSE2)

/*Alias da Tabela SF2,Recno do SF2, Array com os registro do SD2, Array com os registro do SE1, Array com os registro do SE2 ) */

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

//³ Estorna o documento de saida ³

//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

PERGUNTE("MTA521",.f.)

If !SF2->(MaDelNFS(aRegSD2,aRegSE1,aRegSE2,(mv_par01 == 1), (mv_par02 == 1), (mv_par03 == 1), (mv_par04 == 1)))

lMsErroAuto:= .T.

Endif

Else

lMsErroAuto:= .T.

EndIf

 

If lMsErroAuto

Return(.f.)

EndIf

 

If !FGX_STATF2("V",VS1->VS1_SERNFI,VS1->VS1_NUMNFI,VS1->VS1_CLIFAT,VS1->VS1_LOJA,"S") /// Verifica STATUS da NF no SEFAZ

Return .f.

EndIf

Endif

EndIf

 

Begin Transaction

 

if ( ExistBlock("OFM220IN") )

lRet := ExecBlock("OFM220IN",.f.,.f.)

if !lRet

DisarmTransaction()

Break

Return(.f.)

Endif

EndIf

 

If !lNFeCancel

 

dbSelectArea("SF2")

dbSetOrder(1)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

//³ Verifica se o estorno do documento de saída pode ser feito ³

//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

If MaCanDelF2("SF2",SF2->(RecNo()),@aRegSD2,@aRegSE1,@aRegSE2)

/*Alias da Tabela SF2,Recno do SF2, Array com os registro do SD2, Array com os registro do SE1, Array com os registro do SE2 ) */

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

//³ Estorna o documento de saida ³

//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

PERGUNTE("MTA521",.f.)

SF2->(MaDelNFS(aRegSD2,aRegSE1,aRegSE2,(mv_par01 == 1), (mv_par02 == 1), (mv_par03 == 1), (mv_par04 == 1)))

Else

//Nao pode ser excluida.

lMsErroAuto:= .T.

EndIf

 

If lMsErroAuto

DisarmTransaction()

Break

EndIf

 

Endif

 

//Exclui Pedido

ProcRegua(1)

IncProc(STR0023) //Cancelando Pedido...

If lAbortPrint

DisarmTransaction()

Break

Else

lAbortPrint := .F.

EndIf

 

lMsErroAuto := .f.

 

dbSelectArea("SC5")

dbSetOrder(1)

if dbSeek(xFilial("SC5")+cNumPed)

aMata410Cab := {{"C5_NUM" , cNumPed,Nil}} //Numero do pedido SC5

aMata410Itens := {{"C6_NUM" , cNumPed,Nil}} //Numero do Pedido SC6

 

//Exclui Pedido

SC9->(dbSetOrder(1))

SC9->(dbSeek(xFilial("SC9")+cNumPed))

While !SC9->(Eof()) .And. xFilial('SC9') == SC9->C9_FILIAL .and. cNumPed == SC9->C9_PEDIDO

SC9->(a460Estorna())

SC9->(dbSkip())

EndDo

 

MSExecAuto({|x,y,z|Mata410(x,y,z)},aMata410Cab,{aMata410Itens},5)

Endif

 

If lMsErroAuto == .t.

DisarmTransaction()

Break

EndIf

 

// Inicio do Cancelamento dos Titulos a Receber

If Empty(VS1->VS1_CTCDCI)

aParcelas := {}

DbSelectArea("SE1")

SE1->(DBSetOrder(1))

If SE1->(DBSeek(xFilial('SE1')+cPrefix+space(TamSx3("E1_PREFIXO")[1]-Len(cPrefix))+cNota))

while ! Eof() .and. SE1->E1_FILIAL == xFilial('SE1') .and. SE1->E1_PREFIXO == cPrefix+space(TamSx3("E1_PREFIXO")[1]-Len(cPrefix)) .and. SE1->E1_NUM == cNota

if VS1->VS1_SERNFI <> GetNewPar("MV_SERCUP","CUP") .and. SE1->E1_PREFORI != GetNewPar("MV_PREFBAL","BAL")

DBSkip()

loop

endif

AADD(aParcelas,{ {"E1_PREFIXO",E1_PREFIXO,nil},{"E1_NUM",E1_NUM,nil},{"E1_PARCELA",E1_PARCELA,nil},;

{"E1_TIPO",E1_TIPO,nil},{"E1_NATUREZA",E1_NATUREZA,nil},{"E1_CLIENTE",E1_CLIENTE,nil},;

{"E1_LOJA",E1_LOJA,nil},{"E1_EMISSAO",E1_EMISSAO,nil},{"E1_VENCTO",E1_VENCTO,nil},;

{"E1_VENCREA",E1_VENCREA,nil},{"E1_VALOR",E1_VALOR,nil} })

 

DbSelectArea("SE1")

DbSkip()

Enddo

 

ProcRegua(1)

IncProc(STR0024) //Excluindo Titulos...

If lAbortPrint

DisarmTransaction()

Break

Else

lAbortPrint := .F.

EndIf

pergunte("FIN040",.F.)

For i = 1 to len(aParcelas)

MSExecAuto({|x,y| FINA040(x,y)},aParcelas[i],5)

If LMsErroAuto

MostraErro()

DisarmTransaction()

Break

EndIf

Next

 

DbSelectArea("VSE")

DbSetOrder(1)

If DbSeek( xFilial("VSE") + "OR"+VS1->VS1_NUMORC + ' B' )

while !eof() .and. xFilial("VSE") == VSE->VSE_FILIAL .and. VSE->VSE_NUMIDE+VSE->VSE_TIPOPE == "OR"+VS1->VS1_NUMORC+" B"

If !RecLock("VSE",.f.,.t.)

DisarmTransaction()

Break

EndIf

DbDelete()

MsUnlock()

WriteSx2("VSE")

DbSkip()

Enddo

EndIf

EndIf

Else

//Exclui Financiamento CDCI

ExTitCDCI(VS1->VS1_CTCDCI)

ExContCDCI(VS1->VS1_CTCDCI)

EndIf

 

cRecno := AllTrim(VS1->VS1_TITNCC)

cStr := AllTrim(VS1->VS1_TITNCC)

nTot := 0

if Len(AllTrim(VS1->VS1_TITNCC)) > 0

For cont := 1 to Len(AllTrim(VS1->VS1_TITNCC))

if substr(cStr,cont,1) == "/"

nTot++

Endif

Next

if nTot == 0

nTot := 1

Endif

Endif

 

For cont := 1 to nTot

 

cRecno := substr(cStr,1,AT("/",cStr)-1)

cStr := substr(cStr,AT("/",cStr)+1)

dbSelectArea("SE1")

dbGoto(val(cRecno))

 

aBaixa := {{"E1_PREFIXO" ,SE1->E1_PREFIXO ,Nil},;

{"E1_NUM" ,SE1->E1_NUM ,Nil},;

{"E1_PARCELA" ,SE1->E1_PARCELA ,Nil},;

{"E1_TIPO" ,"NCC" ,Nil},;

{"AUTMOTBX" ,"NOR" ,Nil},;

{"AUTDTBAIXA" ,dDataBase ,Nil},;

{"AUTDTCREDITO",dDataBase ,Nil}}

 

lMSHelpAuto := .f.

lMsErroAuto := .f.

MSExecAuto({|x,y| FINA070(x,y)},aBaixa,5)

If lMsErroAuto

lRet := .F.

lError := .T.

DisarmTransaction()

MostraErro()

Break

EndIf

Next

 

//////////////////////////////////////////////////

// EXCLUIR ARQUIVOS ( VEC / VSG ) e ALTERAR VS1 //

//////////////////////////////////////////////////

FS_EXCLUIR(cNota,cSerie,1) // 1=Voltar Orcamento para Aberto

//////////////////////////////////////////////////

 

if lCupom

//Imprime o cancelamento do Cupom Fiscal

iRetorno := 0

cRetorno := ' '

_lRetBema := .T.

_cPorta := GetMv("MV_PORTFIS")

_cImpressora:= GetMv("MV_IMPFIS")

_nDesconto := 0

_nTotal := 0

_nTotDesc := 0

_aIcms := {}

_nRet := ""

If Type("nHdlECF") == "U" .Or. nHdlEcf == -1

//If !Type("nHdlECF") == "U" .Or. nHdlEcf <> -1

Public nhdlecf

nhdlecf := IFAbrir( _cImpressora,_cPorta )

EndIf

iRet := IFStatus( nhdlecf, '5', @cRetorno )

//if iRet = 7

iRet := IFCancCup( nhdlecf )

Inkey(8) // dá um tempo para a impressora fazer a impressao do cancelamento

//Endif

Endif

 

if ( ExistBlock("OFM220FN") )

lRet := ExecBlock("OFM220FN",.f.,.f.)

if !lRet

DisarmTransaction()

Break

Endif

EndIf

 

End Transaction

 

If lMsErroAuto

MostraErro()

EndIf

 

//Executa RdMake da Ordem de Cancelamento

if ExistBlock("ORDCANC")

ExecBlock("ORDCANC",.f.,.f.)

Endif

 

Return

Programa Fonte:

OFIOM220.PRW                                                                                                                                          

Função:

FS_CANCELA()                  

Retorno:

Não se aplica.

 

Exemplo:

#Include "FiveWin.ch"

#Include "Fileio.ch"

 

/*

ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±

±±ºPrograma ³ORDCANC ºAutor ³Thiago º Data ³ 07/03/05 º±±

±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±

±±ºDesc. ³Imprime ordem de busca º±±

±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±

±±ºUso ³ Oficina º±±

±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

*/

 

 

User Function ORDCANC()

 

SetPrvt("cAlias , cNomRel , cGPerg , cTitulo , cDesc1 , cDesc2 , cDesc3 , aOrdem , lHabil , cTamanho , aReturn , ")

SetPrvt("titulo,cabec1,cabec2,nLastKey,wnrel,tamanho")

 

aReturn := { "", 1,"", 2, 2, 2,,1 }

 

cAlias := "SF2"

cNomRel:= "ORDCANC"

cGPerg := ""

cTitulo:= "Itens da NFiscal Cancelada"

cDesc1 := "Itens da NFiscal Cancelada"

cDesc2 := cDesc3 := ""

aOrdem := {"Nosso Numero","Codigo do Item"}

lHabil := .f.

lServer := ( GetMv("MV_LSERVER") == "S" )

 

cTamanho:= "P"

nLastKey:=0

 

aDriver := LeDriver()

cCompac := aDriver[1]

cNormal := aDriver[2]

 

cDrive := GetMv("MV_DRVORB")

cNomeImp := GetMv("MV_PORORB")

 

cNomRel := SetPrint(cAlias,cNomRel,nil,@ctitulo,cDesc1,cDesc2,cDesc3,.F.,"",.F.,cTamanho,nil,nil,nil,cDrive,.T.,lServer,cNomeImp)

 

If nlastkey == 27

Return(Allwaystrue())

EndIf

 

SetDefault(aReturn,cAlias)

 

RptStatus({|lEnd| FS_IMPORDCANC(@lEnd,"OFIM220",'SF2')},Titulo)

 

Eject

 

Set Printer to

Set device to Screen

 

If aReturn[5] == 1

OurSpool( cNomRel )

EndIf

 

MS_FLUSH()

 

 

Return(Allwaystrue())

 

/*

ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±

±±ºPrograma ³FS_IMPORDBºAutor ³Fabio º Data ³ 07/07/00 º±±

±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±

±±ºDesc. ³Imprime relatorio de ordem de busca para pecas requisitadas.º±±

±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±

±±ºUso ³Oficina º±±

±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

*/

Static Function FS_IMPORDCANC()

 

SetPrvt("nLin , i , nTotal ")

SetPrvt("cbTxt , cbCont , cString , Li , m_Pag , wnRel , cTitulo , cabec1 , cabec2 , nomeprog , tamanho , nCaracter ")

 

nCaracter := 0

 

nLin := 1

i := 0

nTotal := 0

 

Set Printer to &cNomRel

Set Printer On

Set device to Printer

 

cbTxt := Space(10)

cbCont := 0

cString := "SF2"

Li := 80

m_Pag := 1

wnRel := "OFIM220"

nomeprog := "ORDCANC"

tamanho := "P"

nCaracter:= 18

limite := 80

 

nTotal := 0

 

cabec1 := "NF: "+M->F2_PREFIXO +" " +M->F2_DOC+" "+M->F2_SERIE+ " Emissao: " +Transform(M->F2_EMISSAO,"@D")+" Cliente: "+M->F2_CLIENTE+" "+subs(SA1->A1_NOME,1,27)

cabec2 := ""

ccabx := " Grp Codigo do Item Descricao do Item Un Quant Valor Unit Valor Total Al Data Usuario Locacao Qtd Atu"

 

// 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456

// 1 2 3 4 5 6 7 8 9 1

 

setprc(0,0)

nLin := cabec(ctitulo,cabec1,cabec2,nomeprog,tamanho,nCaracter) + 1

i:= 1

@ nLin++,0 PSAY &cCompac + ccabx + &cNormal

For i:=1 to Len(aColsNF)

If nLin >= 60

nLin := 1

nLin := cabec(ctitulo,cabec1,cabec2,nomeprog,tamanho,nCaracter) + 1

@ nLin++,0 PSAY &cCompac + ccabx + &cNormal

endif

 

dbSelectArea("SB1")

dbSetOrder(7)

dbSeek(xFilial("SB1")+aColsNF[i,2]+aColsNF[i,3])

 

DbSelectArea("SB2")

DbSeek(xFilial("SB2")+SB1->B1_COD+aColsNF[i,20])

 

DbSelectArea("SB5")

DbSeek(xFilial("SB5")+SB1->B1_COD)

 

@ nLin++,01 PSAY &cCompac +aColsNF[i,2]+" "+substr(aColsNF[i,3],1,15)+" "+substr(SB1->B1_DESC,1,19)+" "+aColsNF[i,4]+" "+transform(aColsNF[i,6], "999")+" "+transform(aColsNF[i,7],"@E 999,999.99")+" "+transform(aColsNF[i,8], "@E 999,999.99") + space(2) + " " +aColsNF[i,20]+" "+DTOC(dDATABASE)+ " "+SubStr(cUsuario,7,15) + " " + Left(SB5->B5_LOCALIZ,9) + " " + transform(SB2->B2_QATU,"@E 9999999")+&cNormal

 

 

Next

 

if nLin > 60

eject

setprc(0,0)

nLin := cabec(ctitulo,cabec1,cabec2,nomeprog,tamanho,nCaracter) + 1

@ nLin++,0 PSAY &cCompac + ccabx + &cNormal

Endif

 

DbSelectArea("SF2")

DbSetOrder(1)

*** Deve ser utilizado uma IndRegua

cIndSF2 := CriaTrab(Nil, .F.)

cChave := IndexKey()

cCond := "F2_PREFIXO == 'BAL'" //Orcamento Vendido

IndRegua("SF2",cIndSF2,cChave,,cCond,OemToAnsi("Notas Fiscais de Balcao") )

DbSelectArea("SF2")

nIndex := RetIndex("SF2")

#IFNDEF TOP

DbSetIndex(cIndSF2+ordBagExt())

#ENDIF

DbSetOrder(nIndex+1)

 

Return

 

 

/*

ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±

±±³Fun‡„o ³ FG_POSVAR ³ Autor ³ Andre/Emilton ³ Data ³ 05/01/00 ³±±

±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±

±±³Descricao ³ Retorna a posicao do campo no aHeader ³±±

±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±

±±³Parametros³ Nome do Campo ³±±

±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±

±±³Retorno ³ Posicao do Campo ³±±

±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±

±±³ Uso ³ Geral ³±±

±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

*/

 

Static Function FG_POSVAR(Arg1,Arg2)

 

If Arg2 == Nil

Arg2 := "aHeader"

Endif

 

Return (aScan(&Arg2,{|x| AllTrim(x[2])==Arg1}))