Á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 Liberados de do Pedido de VendasVenda.

03. SINTAXE

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 ] 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

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))

    //É Obternecessário carregar oso dadosgrupo de cadaperguntas itemMT460A, dose pedidonão deserá vendasexecutado liberadocom paraos gerar o Documento de Saidavalores 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_SEQUENITEM,;
                        	SC9->C9_QTDLIBSEQUEN,;
            nPrcVen,;
            	SC9->C9_PRODUTOQTDLIB,;
            .F.,;
            SC9->(RecNo())	nPrcVen,;
            SC5->(RecNo()),;
            SC6->(RecNo())	SC9->C9_PRODUTO,;
            SE4->(RecNo()),;
            SB1->(RecNo())	.F.,;
            SB2->(RecNo()),;
            SF4	SC9->(RecNo())}),;

        SC6->(DbSkip())
    EndDo
    
    cDoc := MaPvlNfs(  /*aPvlNfs*/  	SC5->(RecNo()),;
         aPvlDocS,;  // 01 - Array com os itens a serem gerados
    	SC6->(RecNo()),;
                    /*cSerieNFS*/       cSerie	SE4->(RecNo()),;
    // 02 - Série da Nota Fiscal
              	SB1->(RecNo()),;
          /*lMostraCtb*/      .F.,;       // 03 - Mostra Lançamento Contábil	SB2->(RecNo()),;
                        /*lAglutCtb*/	SF4->(RecNo())})
		EndIf

       .F.,;  SC6->(DbSkip())
      // 04 - Aglutina Lançamento ContábilEndDo

	SetFunName("MATA461")
    
    cDoc                  := MaPvlNfs(  /*lCtbOnLineaPvlNfs*/       .F.  aPvlDocS,;  // 01 - Array com //os 05itens -a Contabilizaserem On-Linegerados
                        /*lCtbCustocSerieNFS*/       .T.cSerie,;       // 0602 - ContabilizaSerie da CustoNota On-LineFiscal
                        /*lReajustelMostraCtb*/       .F.,;       // 0703 - ReajusteMostra de preço na Nota FiscalLançamento Contábil
                        /*nCalAcrslAglutCtb*/        0.F.,;         // 0804 - TipoAglutina deLançamento Acréscimo FinanceiroContábil
                        /*nArredPrcLislCtbOnLine*/      0.F.,;         // 0905 - Tipo de Arredondamento
 Contabiliza On-Line
                       /*lAtuSA7lCtbCusto*/         .T.,;       // 1006 - AtualizaContabiliza Amarração Cliente x ProdutoCusto On-Line
                        /*lECFlReajuste*/            .F.,;       // 1107 - Cupom Reajuste de preço na Nota Fiscal
                        /*cEmbExpnCalAcrs*/         cEmbExp0,;   // 12 - Número do Embarque    // 08 - Tipo de ExportaçãoAcréscimo Financeiro
                        /*bAtuFinnArredPrcLis*/    0,;     {||},;      // 1309 - BlocoTipo de Código para complemento de atualização dos títulos financeirosArredondamento
                        /*bAtuPGerNFlAtuSA7*/      {||},;   .T.,;   // 14 - Bloco de// Código10 para- complementoAtualiza deAmarração atualizaçãoCliente dos dados após a geração da Nota Fiscal
 x Produto
                       /*bAtuPvllECF*/         {||}   .F.,;       // 1511 - BlocoCupom deFiscal
 Código de atualização do Pedido de Venda antes da geração da Nota Fiscal
            /*cEmbExp*/         cEmbExp,;   /*bFatSE1*/ 12 - Número do Embarque de Exportação
  {|| .T. },; // 16 - Bloco de Código para indicar se o valor do Título a  Receber será gravado no/*bAtuFin*/ campo F2_VALFAT quando o parâmetro MV_TMSMFAT estiver com o valor igual a "2".
               {||},;      // 13 - Bloco de Código para complemento de atualização dos títulos financeiros
          /*dDataMoe*/        dDatabase,;     /*bAtuPGerNF*/   17 - Data da cotação para conversão dos valores da Moeda do Pedido de Venda para a Moeda Forte
         {||},;      // 14 - Bloco de Código para complemento de atualização dos dados após a geração da Nota Fiscal
                /*lJunta*/       /*bAtuPvl*/      .F.)   {||},;      // 1815 - Aglutina Pedido Iguais
    
    If !Empty(cDoc) Bloco de Código de atualização do Pedido de Venda antes da geração da Nota Fiscal
        Conout("Documento de Saida: " + cSerie +  "-" + cDoc + ", gerado com sucesso!!!")
 /*bFatSE1*/    EndIf

    RESET ENVIRONMENT

Return .T.

07. DEMAIS INFORMAÇÕES

Não há.

08. ASSUNTOS RELACIONADOS

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

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>