Árvore de páginas

01. DADOS GERAIS

Produto:

TOTVS Backoffice

Linha de Produto:

Linha Protheus

Segmento:

Serviços

Módulo:Livros Fiscais (SIGAFIS)



Importante!

Na publicação do layout 017 da EFD ICMS/IPI alguns Estados passaram a solicitar o registro 1601 de forma obrigatória, avaliamos as informações necessárias para este registro e não identificamos campos específicos para este detalhamento de informações nos módulos do Backoffice Protheus, pois não temos esse controle de informações sobre o pagamento e o intermediador, tendo informações disponíveis somente no módulo Sigaloja através do Cadastro de Intermediador (tabela A1U)

Dessa forma, foi criado o ponto de entrada para que cada contribuinte possa avaliar as informações que entende pertinentes serem levadas para o registro.
A partir da solicitação e necessidade de nossos clientes em automatizar esse processo, retomamos o estudo desse registro para trazer de forma automática , para casos em que não haja utilização da tabela Cadastro de Intermediador ("A1U").
Para acompanhamento desta tratativa, solicite a associação de seu ticket a issue DSERFIS1-32306.

Importante!

É possível utilizar este ponto de entrada para gerar registros cujo o participante é oriundo da tabela SA6 (Cadastro de bancos). Para tanto, é necessário:

  1. Possuir o banco responsável pelo pagamento cadastrado como intermediador através da rotina (FATA760), neta rotina será informado os dados que compõem o registro 0150 e 1601 ;
  2. Para que seja possível vincular o cadastro de bancos (SA6) com o cadastro de intermediadores (A1U), o campo CNPJ do cadastro de bancos (A6_CGC) deve ser preenchido com o mesmo valor do campo CNPJ do cadastro de intermediadores (A1U_CGC);
  3. Por fim, deve-se adicionar na última posição de cada array que compõe o array de retorno do ponto de entrada, o valor .T., isso indicará que o campo 02 - COD_PART_IP daquele registro se refere a um banco com informações da rotina de intermediadores. 

02. DESCRIÇÃO

Ponto de Entrada SPED1601 aplicado no SPEDFISCAL que grava as informações do Registro 1601: Operações com Instrumentos de Pagamentos eletrônicos.


Importante

Para que o Ponto de Entrada seja executado corretamente é necessário utilizar o cadastro de Intermediador ("A1U"), caso seja informado o mesmo.

Documentação disponível em: Intermediadores (FATA760 - SIGAFAT)

03. ESPECIFICAÇÃO

Parâmetros do ponto de Entrada:

NomeTipoDescrição
PARAMIXBArray of Record

Array com dados de processamento com  elementos

[1] = Data de;

[2] = Data Até; 


Retorno:

NomeTipoDescrição

Array of Record

Retorna um Array com as informações das operações com pagamento eletrônico.

Importante:

É necessário que já exista um COD_PART do registro 0150 para as Administradoras de Cartão e também para o Intermediador da operação caso seja informado.

04. EXEMPLO DE UTILIZAÇÃO


SPED1601
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.ch"
 
User Function SPED1601()
 
    Local aReg1601  := {}
    Local dDataDe   := Iif(Len(paramixb) >= 1 , paramixb[1], ctod("  /  /  "))
    Local dDataAte  := Iif(Len(paramixb) >= 2 , paramixb[2], ctod("  /  /  "))
    Local cQuery    := ""
    Local cAliasTrb := GetNextAlias()
 
 
    // COD_PART_IP - COD_PART_IT - TOT_VS - TOT_ISS - TOT_OUTROS
    // Exemplo do Array 
    // aAdd (aReg1601, {"CODIGO_CLIENTE_ADM_CARTAO","CODIGO_INTERMEDIADOR",0,0,0})
    // OBS:
    // COD_PART_IP: O valor informado deve existir no campo COD_PART do registro 0150.
    // COD_PART_IT: O valor informado deve existir no campo COD_PART do registro 0150.
    // TOT_VS : o valor deve ser preenchido com o total bruto de vendas que tiveram escrituração de ICMS , inclusive como ICMS Isento ou Outros
    // TOT_ISS: o valor deve ser preenchido com o total bruto de prestação de serviços que tiveram incidência de ISS.
    // TOT_OUTROS : o valor de ser preenchido com o total bruto das operações que não estejam no campo de incidência do ICMS ou ISS.
 
    /*
    No modulo SIGAFAT não há o controle de Administradoras de Cartão para poder fazer amarração, portanto a ideia é fazer um DEPARA com a condição de pagamento
    e ter um registro na tabela SA1 que corresponda a operadora.
    Ex.: Foi criado a Condição de Pagamento "002" que corresponde as vendas de Cartão de Credito, também foi criado um registro na tabela SA1 com as informações
    da operadora de Cartão de Credito.
    Sugestão para montagem da Consulta no banco de Dados:
    */
     
    cQuery := " SELECT "
    cQuery += "     F2_FILIAL AS FILIAL,"
    cQuery += "     AE_CODCLI + AE_LOJCLI AS COD_PART_IP,"
    cQuery += "     F2_CODA1U AS INTERMEDIADOR,"
    cQuery += "     CASE WHEN SUM(SF2.F2_VALICM) <> 0 THEN SUM(F2_VALBRUT) ELSE 0 END AS TOT_VS,"
    cQuery += "     CASE WHEN SUM(SF2.F2_VALISS) <> 0 THEN SUM(F2_VALBRUT) ELSE 0 END AS TOT_ISS,"
    cQuery += "     CASE WHEN SUM(SF2.F2_VALISS) = 0 AND SUM(SF2.F2_VALICM)= 0 THEN SUM(F2_VALBRUT) ELSE 0 END AS TOT_OUT "
    cQuery += " FROM "+RetSQLName("SF2")+" SF2 "

    cQuery += " INNER JOIN "+RetSQLName("SAE")+" SAE "
    cQuery += "     ON AE_FILIAL        = '"+ xFilial("SAE") +"'"
    cQuery += "     AND SAE.AE_COD      = F2_COND "
    cQuery += "     AND SAE.D_E_L_E_T_  = ' ' "

    cQuery += " WHERE F2_EMISSAO BETWEEN '" + DTOS(dDataDe) + "' AND '" + DTOS(dDataAte) + "' "
    cQuery += "     AND SF2.D_E_L_E_T_ = ' ' "

    cQuery += " GROUP BY F2_FILIAL, AE_CODCLI, AE_LOJCLI, F2_CODA1U "


    cQuery := ChangeQuery( cQuery )
    DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), cAliasTrb, .T., .F. )
 
    While !(cAliasTrb)->( Eof() )
 
        // Fica a critério do cliente a melhor maneira de realização a amarração dos cadastros
        // No entanto, deve-se observar que esta informação deve ser enviada com o código do CLIENTE + LOJA com todos os caracteres

        cCodAdm := (cAliasTrb)->COD_PART_IP  // "C09   01" // CODIGO + LOJA -> AE_CODCLI + AE_LOJCLI
 
        aADD(aReg1601, {(cAliasTrb)->FILIAL,cCodAdm,(cAliasTrb)->INTERMEDIADOR,(cAliasTrb)->TOT_VS,(cAliasTrb)->TOT_ISS,(cAliasTrb)->TOT_OUT})
         
        (cAliasTrb)->(DbSkip())
    EndDo
 
    (cAliasTrb)->(DbCloseArea())
 
Return aReg1601

05. DEMAIS INFORMAÇÕES