Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

01. DADOS GERAIS

Produto:

Solucoes_totvs_cross
SolucaoCrossTOTVS Backoffice

Linha de Produto:

Linhas_totvs
SegmentoDistribuição
RegionConstrução Projetos
LinhaLinha Protheus

Segmento:

Segmentos_totvs
SegmentoBackoffice

Módulo:SIGAFAT - Faturamento
Função:MAPVLNFS - Geração de Documento de Saída a partir de Itens Liberados de do Pedido(s) de Venda
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 itens Liberador de Pedido de Vendasdo Pedido de Venda.

Aviso
titleIMPORTANTE

A função MaPvlNfs não é responsável por validar os bloqueios dos itens liberados (SC9). Desta forma, a customização se torna responsável pela verificação dos bloqueios de Estoque (C9_BLEST) e Crédito (C9_BLCRED) conforme regra de negócio implementada pelo desenvolvedor.

03.

...

SINTAXE

MaPvlNfs( < aPvlNfs >, < cSerieNFS >, [ lMostraCtb ], [ lAglutCtb ], [ lCtbOnLine ], [ lCtbCusto ], [ lReajuste ], [ nCalAcrs ], [ nArredPrcLis ], [ lAtuSA7 ],  [ lECF ], [ cEmbExp ], [ bAtuFin ], [ bAtuPGerNF ], [ bAtuPvl ], [ bFatSE1 ], [ dDataMoe ], [ lJunta ] )

04. PARÂMETROS

cNumORIcClieForcLoja
NomeTipoDescriçãoDefaultObrigatórioReferência
aPvlNfsArrayArray com os itens a serem gerados
Sim
cSerieNFSCaractereSérie da Nota Fiscal
Sim
lMostraCtbLógicoMostra Lançamento Contábil
Não
lAglutCtbLógicoAglutina Lançamento ContábilcSerOriCaractereSérie do Documento de Origem
Não
lCtbOnLineLógicoContabiliza On-Line
Não
lCtbCustoLógicoContabiliza Custo On-LineCaractereNúmero do Documento de Origem
Não
lReajusteCaractereLógicoReajuste de preço na Nota FiscalCliente/Fornecedor do Documento de Origem 
Não
nCalAcrsCaractereLoja do Cliente/Fornecedor do Documento de Origem{}NãocSerieNFSCaractereSérie do Documento a ser geradoSimNuméricoTipo de Acréscimo Financeiro
Não
nArredPrcLisNuméricoTipo de Arredondamento
Não
lAtuSA7LógicoAtualiza Amarração Cliente x Produto
Não
lECFLógicoCupom Fiscal
Não
cEmbExpCaractereNúmero do Embarque de Exportação
Não
bAtuFinBloco de CódigoBloco de Código para complemento de atualização dos títulos financeiros
Não
bAtuPGerNFBloco de CódigoBloco de Código para complemento de atualização dos dados após a geração da Nota Fiscal{||}Não
bAtuPvlBloco de CódigoBloco de Código de atualização do Pedido de Venda antes da geração da Nota Fiscal{||}Não
bFatSE1Bloco de CódigoBloco de Código para indicar se o valor do Título a Receber será gravado no campo F2_VALFAT quando o parâmetro MV_TMSMFAT estiver com o valor igual a "2".lMostraCtbLógicoMostra Lançamento Contábil.F.NãolAglutCtbLógicoAglutina Lançamento Contábil.F.NãolCtbOnLineLógicoContabiliza On-Line.F.NãolCtbCustoLógicoContabiliza Custo On-Line.F.NãolReajustaLógicoReajuste de Preço na Nota Fiscal.F.NãonCalAcrsNuméricoTipo de Acréscimo Financeiro1NãonArredPrcLisNuméricoTipo de Arredondamento1NãolAtuSA7LógicoAtualiza Amarração de Cliente x Produto.F.NãolECFLógicoCupom Fiscal.F.NãobFilSD2Bloco de CódigoBloco de Código de Seleção do SD2{|| .T. }Não
bSD2dDataMoeBloco de CódigoBloco de Código a ser executado para o SD2{|| .T. }NãobSF2Bloco de CódigoBloco de Código a ser executado para o SF2{|| .T. }NãobTTSBloco de CódigoBloco de Código a ser executado no final da transação{|| .T. }NãoaDocOriArray de registrosArray com os recnos do SF2{}NãoaItemOriArray de registrosArray com os Itens do SD2{}NãoaSF2Array de registrosArray com os dados do SF2{}NãolNoFiscalLógicoDesabilita o Cálculo Fiscal, pois as informações já foram passadas nos campos da SF2 e SD2.F.NãobFiscalSF2Bloco de CódigoBloco de Código para tratamento do Fiscal - SF2NilNãobFiscalSD2Bloco de CódigoBloco de Código para tratamento do Fiscal - SD2NilNãobFatSE1Bloco de CódigoBloco de Código para tratamento do Fiscal - SE1{|| .T. }NãocNumNFSCaractereNúmero do Documento Fiscal""Não

05. RETORNO

cNumNFS - Tipo: Caractere - Número do Documento de Saída

...

DataData da cotação para conversão dos valores da Moeda do Pedido de Venda para a Moeda FortedDatabaseNão
lJuntaLógicoAglutina Pedido Iguais.F.Não

05. RETORNO

cNumNFS - Tipo: Caractere - Número do Documento Fiscal de Saída

06. EXEMPLO

Bloco de código
languagejs
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function MyPVLNFS()

    Local aPvlDocS := {}
    Local nPrcVen := 0
    Local cC5Num  := "pcpAO9"
    Local cSerie  := "001"
    Local cEmbExp := ""
    Local cDoc    := ""

    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "FAT" TABLES "SF2","SD2","SA1","SA2","SB1","SB2","SF4","SED","SE1"

    SC5->(DbSetOrder(1))
    SC5->(MsSeek(xFilial("SC5")+cC5Num))

    SC6->(dbSetOrder(1))
    SC6->(MsSeek(xFilial("SC6")+SC5->C5_NUM))

    //É necessário carregar o grupo de perguntas MT460A, se não será executado com os valores default.
    Pergunte("MT460A",.F.)

    // Obter os dados de cada item do pedido de vendas liberado para gerar o Documento de Saída
    While SC6->(!Eof() .And. C6_FILIAL == xFilial("SC6")) .And. SC6->C6_NUM == SC5->C5_NUM

        SC9->(DbSetOrder(1))
        SC9->(MsSeek(xFilial("SC9")+SC6->(C6_NUM+C6_ITEM))) //FILIAL+NUMERO+ITEM

        SE4->(DbSetOrder(1))
        SE4->(MsSeek(xFilial("SE4")+SC5->C5_CONDPAG) )  //FILIAL+CONDICAO PAGTO

        SB1->(DbSetOrder(1))
        SB1->(MsSeek(xFilial("SB1")+SC6->C6_PRODUTO))    //FILIAL+PRODUTO

        SB2->(DbSetOrder(1))
        SB2->(MsSeek(xFilial("SB2")+SC6->(C6_PRODUTO+C6_LOCAL))) //FILIAL+PRODUTO+LOCAL

        SF4->(DbSetOrder(1))
        SF4->(MsSeek(xFilial("SF4")+SC6->C6_TES))   //FILIAL+TES

        nPrcVen := SC9->C9_PRCVEN
        If ( SC5->C5_MOEDA <> 1 )

...

Bloco de código
linenumberstrue
#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                      nPrcVen := xMoeda(nPrcVen,SC5->C5_MOEDA,1,dDataBase)
        EndIf

		If AllTrim(OPCSC9->C9_BLEST) ³
//³       [2] Conteudo dos campos na ordem da estrutura   (OPC) ³
//³ExpAM: Array com os dados do SF2== "" .And. AllTrim(SC9->C9_BLCRED) == ""
        	AAdd(aPvlDocS,{ SC9->C9_PEDIDO,;
                         	SC9->C9_ITEM,;
        (OPC) ³
//³       [n] Conteudo posicional do campo    	SC9->C9_SEQUEN,;
                ) ³
//³       Somente é necessario se não houver um documento de	SC9->C9_QTDLIB,;
            ³
//³       origem.     	nPrcVen,;
                        	SC9->C9_PRODUTO,;
                  ³
//³ExpAN: Calculo Fiscal    	.F.,;
                        	SC9->(RecNo()),;
      (OPC) ³
//³       Desabilita o calculo fiscal pois as informacoes ja    ³
//³	SC5->(RecNo()),;
       foram passadas nos campos do SD2 e SF2.          	SC6->(RecNo()),;
     ³
//³ExpAO: Codigo do cliente de Entrega para calculo dos impostos³
//³ExpAP: Codigo da loja de Entrega para calculo dos impostos   ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cNF := MaNfs2Nfs(/*cSerOri*/	SE4->(RecNo()),;
             "",;        //Serie do Documento de Origem 	SB1->(RecNo()),;
    			/*cNumORI*/         "",;        //Numero do Documento de Origem 	SB2->(RecNo()),;
                /*cClieFor*/        "",;	SF4->(RecNo())})
		EndIf

        //Cliente/Fornecedor do documento do origemSC6->(DbSkip())
    EndDo

	SetFunName("MATA461")
    
    cDoc := MaPvlNfs(  /*cLojaaPvlNfs*/         aPvlDocS,;   "",;        //Loja do Documento de origem
// 01 - Array com os itens a serem gerados
                       /*cSerieNFS*/       cSerie,;    //Serie do Documento a ser gerado
;    // 02 - Serie da Nota Fiscal
                       /*lMostraCtb*/      NIL.F.,;       //Mostra Lct.Contabil (OPC)
   03 - Mostra Lançamento Contábil
             /*lAglutCtb*/       NIL,;       //Aglutina Lct.Contabil (OPC)
/*lAglutCtb*/       .F.,;           /*lCtbOnLine*/ 04     NIL,;  - Aglutina Lançamento Contábil
     //Contabiliza On-Line (OPC)
                /*lCtbCustolCtbOnLine*/       NIL.F.,;       // 05 - Contabiliza Custo On-Line (OPC)

                       /*lReajustalCtbCusto*/       NIL.T.,;       //Reajuste de preco na nota fiscal (OPC)
 06 - Contabiliza Custo On-Line
                       /*nCalAcrslReajuste*/        NIL.F.,;       //Tipo 07 - Reajuste de Acrescimopreço na FinanceiroNota (OPC)
Fiscal
                       /*nArredPrcLisnCalAcrs*/    NIL    0,;         // 08 - Tipo de ArredondamentoAcréscimo (OPC)
Financeiro
                       /*lAtuSA7nArredPrcLis*/    0,;         NIL,;// 09 - Tipo de Arredondamento
  //Atualiza Amarracao Cliente x Produto (OPC)
                /*lECFlAtuSA7*/            NIL.T.,;       //Cupom Fiscal (OPC)
 10 - Atualiza Amarração Cliente x Produto
                       /*bFilSD2lECF*/         NIL   .F.,;       //CodeBlock de Selecao do SD2 (OPC)
 11 - Cupom Fiscal
                       /*bSD2cEmbExp*/         cEmbExp,;   NIL,;// 12 - Número do Embarque de //CodeBlockExportação
 a ser executado para o SD2 (OPC)
                /*bSF2bAtuFin*/            NIL{||},;       //CodeBlock a13 ser- executadoBloco parade oCódigo SF2 (OPC)
            para complemento de atualização dos títulos financeiros
    /*bTTS*/            NIL,;       /*bAtuPGerNF*/CodeBlock a ser executado no final da transacao (OPC)
 {||},;      // 14 - Bloco de Código para complemento de atualização dos dados /*aDocOri*/após a geração da      aDocOri,;Nota Fiscal
   //Array com os Recnos do SF2 (OPC)
                /*aItemOribAtuPvl*/        aItens {||},;      //Array com15 os- itensBloco dode SD2 (OPC)
           Código de atualização do Pedido de Venda antes da geração da Nota Fiscal
      /*aSF2*/            aCabs,;     /*bFatSE1*/Array com os dados do SF2 (OPC)
     {|| .T. },; // 16 - Bloco de Código para indicar /*lNoFiscal*/se o valor do Titulo a Receber .F.,;será gravado no campo F2_VALFAT quando o //Calculo Fiscal - Desabilitaparâmetro MV_TMSMFAT estiver com o calculovalor fiscaligual pois as informacoes ja foram passadas nos campos do SD2 e SF2 (OPC)
a "2".
                       /*bFiscalSF2dDataMoe*/      bFiscalSF2  dDatabase,; //CodeBlock para tratamento do fiscal 17 - SF2 (OPC)
                /*bFiscalSD2*/      bFiscalSD2,;//CodeBlock para tratamento do fiscal - SD2 (OPC)
Data da cotação para conversão dos valores da Moeda do Pedido de Venda para a Moeda Forte
                       /*bFatSE1lJunta*/           NIL,;.F.)        //CodeBlock para tratamento do fiscal - SE1 (OPC 18 - Aglutina Pedido Iguais
    
    If !Empty(cDoc)
        Conout("Documento de Saída: " + cSerie + "-" + cDoc  /*cNumNFS*/   + ", gerado com sucesso!!!")
    EndIf

  cDoc)  RESET     //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á.

08. ASSUNTOS RELACIONADOS

ENVIRONMENT

Return .T.

07. DEMAIS INFORMAÇÕES

Para a Geração do Título e Guia GNRE, a tela de perguntas da rotina de Geração de Documento de Saída (MATA460A) deverão estar preenchidas como "Sim" nas perguntas de Geração de Título e de Guia de ICMS Próprio, e o parâmetro MV_GNRENF deverá estar preenchido com o conteúdo  .T. (Verdadeiro), quando for utilizado a função MaPvlNfs() para que a tela da GNRE/DIFAL não seja executada.

Aviso
titleImportante

O função MaPvlNfs gera um único Documento de Saída com todos os itens passados no array aPvlNfs, sendo assim, caso seja necessário gerar mais de um documento de saída, a função deverá ser chamada mais de uma vez com o array aPvlNfs contendo os itens referentes a cada nota a ser gerada. 

08. 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>