Histórico da Página
01. DADOS GERAIS
Produto: |
| ||||||||
---|---|---|---|---|---|---|---|---|---|
Linha de Produto: |
| ||||||||
Segmento: |
| ||||||||
Módulo: | SIGAFAT - Faturamento | ||||||||
Função: | MANFS2NFS - Geração de Documento Fiscal de Saída | ||||||||
Abrangências: | Microsiga Protheus 12 | ||||||||
Versões: | Microsiga Protheus 12 | ||||||||
Compatível Países: | Todos | ||||||||
Sistemas Operacionais: | Todos | ||||||||
Compatível com as Bases de Dados: | Todos | ||||||||
Nível de Acesso: | Nível 1 (Acesso Clientes) | ||||||||
Idiomas: | Todos |
02. DESCRIÇÃO
Função utilizada para a geração de do Documento Fiscal de Saída através a partir de outro um Documento Fiscal de Origem.
03. SINTAXE
MaNfs2Nfs( cSerOri, cNumORI, cClieFor, cLoja, cSerieNFS, lMostraCtb, lAglutCtb, lCtbOnLine, lCtbCusto, lReajusta, nCalAcrs, nArredPrcLis, lAtuSA7, lECF, bFilSD2, bSD2, bSF2, bTTS, aDocOri, aItemOri, aSF2, lNoFiscal, bFiscalSF2, bFiscalSD2, bFatSE1, cNumNFS )
04. PARÂMETROS
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
---|---|---|---|---|---|
cSerOri | Caractere | Série do Documento de Origem | Não | ||
cNumORI | Caractere | Número do Documento de Origem | Não | ||
cClieFor | Caractere | Cliente/Fornecedor do Documento de Origem | Não | ||
cLoja | Caractere | Loja do Cliente/Fornecedor do Documento de Origem | {} | Não | |
cSerieNFS | Caractere | Série do Documento a ser gerado | Sim | ||
lMostraCtb | Lógico | Mostra Lançamento Contábil | .F. | Não | |
lAglutCtb | Lógico | Aglutina Lançamento Contábil | .F. | Não | |
lCtbOnLine | Lógico | Contabiliza On-Line | .F. | Não | |
lCtbCusto | Lógico | Contabiliza Custo On-Line | .F. | Não | |
lReajusta | Lógico | Reajuste de Preço na Nota Fiscal | .F. | Não | |
nCalAcrs | Numérico | Tipo de Acréscimo Financeiro | 1 | Não | |
nArredPrcLis | Numérico | Tipo de Arredondamento | 1 | Não | |
lAtuSA7 | Lógico | Atualiza Amarração de Cliente x Produto | .F. | Não | |
lECF | Lógico | Cupom Fiscal | .F. | Não | |
bFilSD2 | Bloco de Código | Bloco de Código de Seleção do SD2 | {|| .T. } | Não | |
bSD2 | Bloco de Código | Bloco de Código a ser executado para o SD2 | {|| .T. } | Não | |
bSF2 | Bloco de Código | Bloco de Código a ser executado para o SF2 | {|| .T. } | Não | |
bTTS | Bloco de Código | Bloco de Código a ser executado no final da transação | {|| .T. } | Não | |
aDocOri | Array de registros | Array com os recnos do SF2 | {} | Não | |
aItemOri | Array de registros | Array com os Itens do SD2 | {} | Não | |
aSF2 | Array de registros | Array com os dados do SF2 | {} | Não | |
lNoFiscal | Lógico | Desabilita o Cálculo Fiscal, pois as informações já foram passadas nos campos da SF2 e SD2 | .F. | Não | |
bFiscalSF2 | Bloco de Código | Bloco de Código para tratamento do Fiscal - SF2 | Nil | Não | |
bFiscalSD2 | Bloco de Código | Bloco de Código para tratamento do Fiscal - SD2 | Nil | Não | |
bFatSE1 | Bloco de Código | Bloco de Código para tratamento do Fiscal - SE1 | {|| .T. } | Não | |
cNumNFS | Caractere | Número do Documento Fiscal | "" | Não |
05. RETORNO
{}cNF - Tipo: Caractere - Número do Documento de Saída
06.
...
EXEMPLO 1
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"})
nF2VALMERC := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_VALMERC"})
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. EXEMPLO 2
Bloco de código | ||
---|---|---|
| ||
//Informando TES com poder de terceiro//
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"
USER Function MyNFS2NFS()
Local aCabs := {}
Local aItens := {}
Local aStruSF2 := {}
Local aStruSD2 := {}
Local aDocOri := {}
Local nItemNF := 1
Local nX := 1
Local bFiscalSF2:= {|| .T.}
Local bFiscalSD2:= {|| .T.}
Local cNF := ""
Local cDoc := ""
Local cSerie := "1 "
Local cTipoNf := "B "
Local nTotNF := 9100
Local cForn := "0001 "
Local cLoja := "01"
Local cCondPg := "000"
Local cTes := "502"
Local cDocD := "FAT007"
Local cDocAt := "FAT009"
Local cFiltro := ""
//-- Variáveis utilizadas para o controle de erro da rotina automática
Private lMsErroAuto := .F.
Private lAutoErrNoFile := .T.
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "FAT" TABLES "SF2","SD2","SA2","SA2","SB1","SB2","SF4","SED","SE1"
DbSelectArea('SA2')
SA2->(DbSetOrder(1))
IF !SA2->(DbSeek(xFilial("SA2") + cForn + cLoja ))
MsgInfo("SA2 NAO ENCONTRADO")
ENDIF
//MONTAGEM DA ESTRUTURA DO ARRAY CABECALHO
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"})
nF2VALMERC := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_VALMERC"})
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
aCabs[nF2FILIAL] := xFilial("SF2")
aCabs[nF2TIPO] := cTipoNf
aCabs[nF2DOC] := cDoc
aCabs[nF2SERIE] := cSerie
aCabs[nF2EMISSAO] := DATE()
aCabs[nF2CLIENTE] := SA2->A2_COD
aCabs[nF2LOJA] := SA2->A2_LOJA
aCabs[nF2CLIENT] := SA2->A2_COD
aCabs[nF2LOJENT] := SA2->A2_LOJA
aCabs[nF2TIPOCLI] := SA2->A2_TIPO
aCabs[nF2COND] := cCondPg
aCabs[nF2DTDIGIT] := DATE()
aCabs[nF2EST] := "SP"
aCabs[nF2UFORIG] := "SP"
aCabs[nF2UFDEST] := "SP"
aCabs[nF2VALMERC] := nTotNF
//MONTAGEM DA ESTRUTURA DO ARRAY DOS ITENS
aStruSD2 := SD2->(dbStruct())
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"})
//ADD INFORMACOES ORIGEM
nD2Pedido := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_PEDIDO"})
nD2NfOri := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_NFORI"})
nD2SeOri := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_SERIORI"})
nD2ItOri := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_ITEMORI"})
nD2IdB6 := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_IDENTB6"})
SD1->(DbgoTop())
SD1->(DbSetOrder(4))
cFiltro := "SD1->D1_FILIAL == '" +xFilial("SD1")+ "'"
cFiltro+=" .And. SD1->D1_DOC >= '"+cDocD+"'"
cFiltro+=" .And. SD1->D1_DOC <= '"+cDocAt+"'"
SD1->(DbSetFilter({|| &cFiltro}, cFiltro))
SD1->(DbGotop())
While (!SD1->(EOF()))
aAdd(aItens, {})
For nX := 1 To Len(aStruSD2)
If aStruSD2[nX][2]$"C/M"
aAdd(aItens[nItemNF],"")
ElseIf aStruSD2[nX][2]=="D"
aAdd(aItens[nItemNF],CToD(""))
ElseIf aStruSD2[nX][2]=="N"
aAdd(aItens[nItemNF],0)
ElseIf aStruSD2[nX][2]=="L"
aAdd(aItens[nItemNF],.T.)
EndIf
Next nX
AADD(aDocOri,0)
aItens[nItemNF,nD2FILIAL] := SD1->D1_FILIAL
aItens[nItemNF,nD2DOC] := cDoc
aItens[nItemNF,nD2SERIE] := cSerie
aItens[nItemNF,nD2CLIENTE] := SA2->A2_COD
aItens[nItemNF,nD2LOJA] := SA2->A2_LOJA
aItens[nItemNF,nD2EMISSAO] := DATE()
aItens[nItemNF,nD2TIPO] := cTipoNf
aItens[nItemNF,nD2ITEM] := PadR(STRZERO(nItemNF,3),GetSx3Cache("D2_SERIE","X3_TAMANHO"))
aItens[nItemNF,nD2CF] := SD1->D1_CF
aItens[nItemNF,nD2COD] := SD1->D1_COD
aItens[nItemNF,nD2UM] := SD1->D1_UM
aItens[nItemNF,nD2QUANT] := SD1->D1_QUANT
aItens[nItemNF,nD2PRCVEN] := SD1->D1_VUNIT
aItens[nItemNF,nD2TOTAL] := SD1->D1_TOTAL
aItens[nItemNF,nD2PRUNIT] := SD1->D1_VUNIT
aItens[nItemNF,nD2LOCAL] := SD1->D1_LOCAL
aItens[nItemNF,nD2TES] := cTes
aItens[nItemNF,nD2Pedido] := SD1->D1_PEDIDO
//ADD INFORMACOES ORIGEM
aItens[nItemNF,nD2NfOri] := SD1->D1_DOC
aItens[nItemNF,nD2SeOri] := SD1->D1_SERIE
aItens[nItemNF,nD2ItOri] := SD1->D1_ITEM
aItens[nItemNF,nD2IdB6] := SD1->D1_IDENTB6
SD1->(DbSkip())
nItemNF++
END
cNF := MaNfs2Nfs(/*cSerOri*/ "" ,; //Serie do Documento de Origem
/*cNumORI*/ "",; //Numero do Documento de Origem
/*cClieFor*/ cForn,; //Cliente/Fornecedor do documento do origem
/*cLoja*/ 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.
|
08.
...
Escolha o modelo desejado abaixo de acordo com a sua necessidade de execução:
...
DEMAIS INFORMAÇÕES
Não há.
...
09. ASSUNTOS RELACIONADOS
Templatedocumentos |
---|
HTML |
---|
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } .aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { background: #FF9900; !important } .menu-item.active-tab { border-bottom: none !important; } </style> |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas