Árvore de páginas

01. DADOS GERAIS

Produto:

TOTVS Backoffice

Linha de Produto:

Linha Protheus

Segmento:

Backoffice

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

IMPORTANTE

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

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ábil
Não
lCtbOnLineLógicoContabiliza On-Line
Não
lCtbCustoLógicoContabiliza Custo On-Line
Não
lReajusteLógicoReajuste de preço na Nota Fiscal
Não
nCalAcrsNumé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".{|| .T. }Não
dDataMoeDataData 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

#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 )
            nPrcVen := xMoeda(nPrcVen,SC5->C5_MOEDA,1,dDataBase)
        EndIf

		If AllTrim(SC9->C9_BLEST) == "" .And. AllTrim(SC9->C9_BLCRED) == ""
        	AAdd(aPvlDocS,{ SC9->C9_PEDIDO,;
                        	SC9->C9_ITEM,;
                        	SC9->C9_SEQUEN,;
                        	SC9->C9_QTDLIB,;
                        	nPrcVen,;
                        	SC9->C9_PRODUTO,;
                        	.F.,;
                        	SC9->(RecNo()),;
                        	SC5->(RecNo()),;
                        	SC6->(RecNo()),;
                        	SE4->(RecNo()),;
                        	SB1->(RecNo()),;
                        	SB2->(RecNo()),;
                        	SF4->(RecNo())})
		EndIf

        SC6->(DbSkip())
    EndDo

	SetFunName("MATA461")
    
    cDoc := MaPvlNfs(  /*aPvlNfs*/         aPvlDocS,;  // 01 - Array com os itens a serem gerados
                       /*cSerieNFS*/       cSerie,;    // 02 - Serie da Nota Fiscal
                       /*lMostraCtb*/      .F.,;       // 03 - Mostra Lançamento Contábil
                       /*lAglutCtb*/       .F.,;       // 04 - Aglutina Lançamento Contábil
                       /*lCtbOnLine*/      .F.,;       // 05 - Contabiliza On-Line
                       /*lCtbCusto*/       .T.,;       // 06 - Contabiliza Custo On-Line
                       /*lReajuste*/       .F.,;       // 07 - Reajuste de preço na Nota Fiscal
                       /*nCalAcrs*/        0,;         // 08 - Tipo de Acréscimo Financeiro
                       /*nArredPrcLis*/    0,;         // 09 - Tipo de Arredondamento
                       /*lAtuSA7*/         .T.,;       // 10 - Atualiza Amarração Cliente x Produto
                       /*lECF*/            .F.,;       // 11 - Cupom Fiscal
                       /*cEmbExp*/         cEmbExp,;   // 12 - Número do Embarque de Exportação
                       /*bAtuFin*/         {||},;      // 13 - Bloco de Código para complemento de atualização dos títulos financeiros
                       /*bAtuPGerNF*/      {||},;      // 14 - Bloco de Código para complemento de atualização dos dados após a geração da Nota Fiscal
                       /*bAtuPvl*/         {||},;      // 15 - Bloco de Código de atualização do Pedido de Venda antes da geração da Nota Fiscal
                       /*bFatSE1*/         {|| .T. },; // 16 - Bloco de Código para indicar se o valor do Titulo a Receber será gravado no campo F2_VALFAT quando o parâmetro MV_TMSMFAT estiver com o valor igual a "2".
                       /*dDataMoe*/        dDatabase,; // 17 - Data da cotação para conversão dos valores da Moeda do Pedido de Venda para a Moeda Forte
                       /*lJunta*/          .F.)        // 18 - Aglutina Pedido Iguais
    
    If !Empty(cDoc)
        Conout("Documento de Saída: " + cSerie + "-" + cDoc + ", gerado com sucesso!!!")
    EndIf

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

Importante

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