Histórico da Página
...
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
---|---|---|---|---|---|
cSerOri | Caractere | Série do Documento de Origem | |||
cNumORI | Caractere | Número do Documento de Origem | |||
cClieFor | Caractere | Cliente/Fornecedor do Documento de Origem | |||
cLoja | Caractere | Loja do Cliente/Fornecedor do Documento de Origem | {} | ||
cSerieNFS | Caractere | Série do Documento a ser gerado | Sim | ||
lMostraCtb | Lógico | Mostra Lançamento Contábil | .F. | ||
lAglutCtb | Lógico | Aglutina Lançamento Contábil | .F. | ||
lCtbOnLine | Lógico | Contabiliza On-Line | .F. | ||
lCtbCusto | Lógico | Contabiliza Custo On-Line | .F. | ||
lReajusta | Lógico | Reajuste de Preço na Nota Fiscal | .F. | ||
nCalAcrs | Numérico | Tipo de Acréscimo Financeiro | 1 | ||
nArredPrcLis | Numérico | Tipo de Arredondamento | 1 | ||
lAtuSA7 | Lógico | Atualiza Amarração de Cliente x Produto | .F. | ||
lECF | Lógico | Cupom Fiscal | .F. | ||
bFilSD2 | Bloco de Código | Bloco de Código de Seleção do SD2 | {|| .T. } | ||
bSD2 | Bloco de Código | Bloco de Código a ser executado para o SD2 | {|| .T. } | ||
bSF2 | Bloco de Código | Bloco de Código a ser executado para o SF2 | {|| .T. } | ||
bTTS | Bloco de Código | Bloco de Código a ser executado no final da transação | {|| .T. } | ||
aDocOri | Array de registros | Array com os recnos do SF2 | {} | ||
aItemOri | Array de registros | Array com os Itens do SD2 | {} | ||
aSF2 | Array de registros | Array com os dados do SF2 | {} | ||
lNoFiscal | Lógico | Desabilita o Cálculo Fiscal, pois as informações já foram passadas nos campos da SF2 e SD2 | .F. | ||
bFiscalSF2 | Bloco de Código | Bloco de Código para tratamento do Fiscal - SF2 | Nil | ||
bFiscalSD2 | Bloco de Código | Bloco de Código para tratamento do Fiscal - SD2 | Nil | ||
bFatSE1 | Bloco de Código | Bloco de Código para tratamento do Fiscal - SE1 | {|| .T. } | ||
cNumNFS | Caractere | Número do Documento Fiscal |
05. RETORNO
{}cNF - Tipo: Caractere - Número do Documento de Saída que foi gerado.
06.
...
EXEMPLO
Bloco de código | ||
---|---|---|
| ||
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"
USER Function MyNFS2NFS()
Local aCabs := {}
Local aItens := {}
Local aStruSF2 := {}
Local aStruSD2 := {}
Local nX := 1
Local aDocOri := {}
Local bFiscalSF2:= {|| .T.}
Local bFiscalSD2:= {|| .T.}
Local cNF := ""
Local cDoc := ""
Local cSerie := "A "
Local cTipoNF := "N"
Local cCliente := "000001"
Local cLoja := "01"
Local cProd := "IPI1"
Local cTES := "802"
Local cCondPgto := "001"
PRIVATE lMsErroAuto := .F.
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "FAT" TABLES "SF2","SD2","SA1","SA2","SB1","SB2","SF4","SED","SE1"
aStruSF2 := SF2->(dbStruct())
//Montagem do cabeçalho do Documento Fiscal
nF2FILIAL := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_FILIAL"})
nF2TIPO := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_TIPO"})
nF2DOC := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_DOC"})
nF2SERIE := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_SERIE"})
nF2EMISSAO := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_EMISSAO"})
nF2CLIENTE := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_CLIENTE"})
nF2LOJA := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_LOJA"})
nF2CLIENT := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_CLIENT"})
nF2LOJENT := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_LOJENT"})
nF2TIPOCLI := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_TIPOCLI"})
nF2COND := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_COND"})
nF2DTDIGIT := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_DTDIGIT"})
nF2EST := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_EST"})
nF2UFORIG := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_UFORIG"})
nF2UFDEST := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_UFDEST"})
For nX := 1 To Len(aStruSF2)
If aStruSF2[nX][2] $ "C/M"
Aadd(aCabs,"")
ElseIf aStruSF2[nX][2] == "N"
Aadd(aCabs,0)
ElseIf aStruSF2[nX][2] == "D"
Aadd(aCabs,CtoD(" / / "))
ElseIf aStruSF2[nX][2] == "L"
Aadd(aCabs,.F.)
EndIf
Next nX
dbSelectArea("SA1")
dbSetOrder(1)
dbSeek(xFilial("SA1") + cCliente + cLoja)
aCabs[nF2FILIAL] := xFilial("SF2")
aCabs[nF2TIPO] := cTipoNF
aCabs[nF2DOC] := cDoc
aCabs[nF2SERIE] := cSerie
aCabs[nF2EMISSAO] := dDataBase
aCabs[nF2CLIENTE] := SA1->A1_COD
aCabs[nF2LOJA] := SA1->A1_LOJA
aCabs[nF2CLIENT] := SA1->A1_COD
aCabs[nF2LOJENT] := SA1->A1_LOJA
aCabs[nF2TIPOCLI] := SA1->A1_TIPO
aCabs[nF2COND] := cCondPgto
aCabs[nF2DTDIGIT] := dDataBase
aCabs[nF2EST] := SA1->A1_EST
aCabs[nF2UFORIG] := SA1->A1_EST
aCabs[nF2UFDEST] := SA1->A1_EST
aCabs[nF2VALMERC] := 1000
aStruSD2 := SD2->(dbStruct())
//Montagem dos itens do Documento Fiscal
nD2FILIAL := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_FILIAL"})
nD2DOC := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_DOC"})
nD2SERIE := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_SERIE"})
nD2CLIENTE := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_CLIENTE"})
nD2LOJA := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_LOJA"})
nD2EMISSAO := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_EMISSAO"})
nD2TIPO := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_TIPO"})
nD2ITEM := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_ITEM"})
nD2CF := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_CF"})
nD2COD := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_COD"})
nD2UM := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_UM"})
nD2QUANT := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_QUANT"})
nD2PRCVEN := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_PRCVEN"})
nD2PRUNIT := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_PRUNIT"})
nD2TOTAL := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_TOTAL"})
nD2LOCAL := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_LOCAL"})
nD2TES := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_TES"})
aAdd(aItens, {})
nPos := Len(aItens)
For nX := 1 To Len(aStruSD2)
If aStruSD2[nX][2]$"C/M"
aAdd(aItens[nPos],"")
ElseIf aStruSD2[nX][2]=="D"
aAdd(aItens[nPos],CToD(""))
ElseIf aStruSD2[nX][2]=="N"
aAdd(aItens[nPos],0)
ElseIf aStruSD2[nX][2]=="L"
aAdd(aItens[nPos],.T.)
EndIf
Next nX
For nX := 1 to Len(aItens)
AADD(aDocOri,0)
Next
dbSelectArea("SF4")
dbSetOrder(1)
dbSeek(xFilial("SF4") + cTES)
dbSelectArea("SB1")
dbSetOrder(1)
dbSeek(xFilial("SB1") + cProd)
aItens[Len(aItens),nD2FILIAL] := xFilial("SD2")
aItens[Len(aItens),nD2DOC] := cDoc
aItens[Len(aItens),nD2SERIE] := cSerie
aItens[Len(aItens),nD2CLIENTE] := SA1->A1_COD
aItens[Len(aItens),nD2LOJA] := SA1->A1_LOJA
aItens[Len(aItens),nD2EMISSAO] := dDataBase
aItens[Len(aItens),nD2TIPO] := cTipoNF
aItens[Len(aItens),nD2ITEM] := "01"
aItens[Len(aItens),nD2CF] := SF4->F4_CF
aItens[Len(aItens),nD2COD] := SB1->B1_COD
aItens[Len(aItens),nD2UM] := SB1->B1_UM
aItens[Len(aItens),nD2QUANT] := 1
aItens[Len(aItens),nD2PRCVEN] := 1000
aItens[Len(aItens),nD2TOTAL] := 1000
aItens[Len(aItens),nD2PRUNIT] := 1000
aItens[Len(aItens),nD2LOCAL] := SB1->B1_LOCPAD
aItens[Len(aItens),nD2TES] := SF4->F4_CODIGO
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Parametros da funcao automatica: ³
//³ExpC1: Serie do Documento de Origem ³
//³ExpC2: Numero do Documento de Origem ³
//³ExpC3: Cliente/Fornecedor do documento do origem ³
//³ExpC4: Loja do Documento de origem ³
//³ExpC5: Serie do Documento a ser gerado ³
//³ExpL6: Mostra Lct.Contabil (OPC) ³
//³ExpL7: Aglutina Lct.Contabil (OPC) ³
//³ExpL8: Contabiliza On-Line (OPC) ³
//³ExpL9: Contabiliza Custo On-Line (OPC) ³
//³ExpLA: Reajuste de preco na nota fiscal (OPC) ³
//³ExpNB: Tipo de Acrescimo Financeiro (OPC) ³
//³ExpNC: Tipo de Arredondamento (OPC) ³
//³ExpLD: Atualiza Amarracao Cliente x Produto (OPC) ³
//³ExplE: Cupom Fiscal (OPC) ³
//³ExpBF: CodeBlock de Selecao do SD2 (OPC) ³
//³ Parametros do codeblock ³
//³ ExpC1: Alias do arquivo SD2 ³
//³ ExpC2: Alias do arquivo SF4 ³
//³ExpBG: CodeBlock a ser executado para o SD2 (OPC) ³
//³ Parametros do codeblock ³
//³ ExpN1:[1] Apos a copia do item do documento de saida ³
//³ [2] Apos a checagem da atualizacoes anteriores ³
//³ ExpA2:Array com o conteudo dos campos do SD2 ³
//³ ExpC3:Alias do SD2 (OPC) ³
//³ ExpC4:Alias do SF4 (OPC) ³
//³ ExpC5:Alias do SB1 (OPC) ³
//³ExpBH: CodeBlock a ser executado para o SF2 (OPC) ³
//³ ExpN1:[1] Apos a copia do item do documento de saida ³
//³ [2] Apos a checagem da atualizacoes anteriores ³
//³ExpBI: CodeBlock a ser executado no final da transacao (OPC) ³
//³ExpAJ: Array com os Recnos do SF2 (OPC) ³
//³ Deve possuir o mesmo tamanho da ExpAl (OPC) ³
//³ExpAL: Array com os itens do SD2 (OPC) ³
//³ [1] Item do SD2 (OPC) ³
//³ [2] Conteudo dos campos na ordem da estrutura (OPC) ³
//³ExpAM: Array com os dados do SF2 (OPC) ³
//³ [n] Conteudo posicional do campo ) ³
//³ Somente é necessario se não houver um documento de ³
//³ origem. ³
//³ExpAN: Calculo Fiscal (OPC) ³
//³ Desabilita o calculo fiscal pois as informacoes ja ³
//³ foram passadas nos campos do SD2 e SF2. ³
//³ExpAO: Codigo do cliente de Entrega para calculo dos impostos³
//³ExpAP: Codigo da loja de Entrega para calculo dos impostos ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cNF := MaNfs2Nfs(/*cSerOri*/ "",; //Serie do Documento de Origem
/*cNumORI*/ "",; //Numero do Documento de Origem
/*cClieFor*/ "",; //Cliente/Fornecedor do documento do origem
/*cLoja*/ "",; //Loja do Documento de origem
/*cSerieNFS*/ cSerie,; //Serie do Documento a ser gerado
/*lMostraCtb*/ NIL,; //Mostra Lct.Contabil (OPC)
/*lAglutCtb*/ NIL,; //Aglutina Lct.Contabil (OPC)
/*lCtbOnLine*/ NIL,; //Contabiliza On-Line (OPC)
/*lCtbCusto*/ NIL,; //Contabiliza Custo On-Line (OPC)
/*lReajusta*/ NIL,; //Reajuste de preco na nota fiscal (OPC)
/*nCalAcrs*/ NIL,; //Tipo de Acrescimo Financeiro (OPC)
/*nArredPrcLis*/ NIL,; //Tipo de Arredondamento (OPC)
/*lAtuSA7*/ NIL,; //Atualiza Amarracao Cliente x Produto (OPC)
/*lECF*/ NIL,; //Cupom Fiscal (OPC)
/*bFilSD2*/ NIL,; //CodeBlock de Selecao do SD2 (OPC)
/*bSD2*/ NIL,; //CodeBlock a ser executado para o SD2 (OPC)
/*bSF2*/ NIL,; //CodeBlock a ser executado para o SF2 (OPC)
/*bTTS*/ NIL,; //CodeBlock a ser executado no final da transacao (OPC)
/*aDocOri*/ aDocOri,; //Array com os Recnos do SF2 (OPC)
/*aItemOri*/ aItens,; //Array com os itens do SD2 (OPC)
/*aSF2*/ aCabs,; //Array com os dados do SF2 (OPC)
/*lNoFiscal*/ .F.,; //Calculo Fiscal - Desabilita o calculo fiscal pois as informacoes ja foram passadas nos campos do SD2 e SF2 (OPC)
/*bFiscalSF2*/ bFiscalSF2,;//CodeBlock para tratamento do fiscal - SF2 (OPC)
/*bFiscalSD2*/ bFiscalSD2,;//CodeBlock para tratamento do fiscal - SD2 (OPC)
/*bFatSE1*/ NIL,; //CodeBlock para tratamento do fiscal - SE1 (OPC)
/*cNumNFS*/ cDoc) //Numero do documento fiscal (OPC)
If !Empty(cNF)
Conout("Nota Fiscal: " + cNF + ", gerada com sucesso!!!")
EndIf
RESET ENVIRONMENT
Return .T. |
07. DEMAIS INFORMAÇÕES
Não há.
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas