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 do Documento Fiscal de Saída a partir de um Documento Fiscal de Origem.
03.
...
tabs | Passo 01, Passo 02, Passo 03, Passo 04 |
---|---|
ids | passo1,passo2 |
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. DEMAIS INFORMAÇÕES
Não há.
09. ASSUNTOS RELACIONADOS
...
default | yes |
---|---|
referencia | passo1 |
...
default | no |
---|---|
referencia | passo2 |
04. DEMAIS INFORMAÇÕES
Card documentos | ||||
---|---|---|---|---|
|
...
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