01. DATOS GENERALES

Producto:

TOTVS Backoffice

Línea de producto:

Línea Protheus

Segmento:

Servicios

Módulo:Libros Fiscales (SIGAFIS)



¡Importante!

En la publicación del layout 017 de la EFD ICMS/IPI algunos Estados/Provincias/Regiones llegaron a solicitar el registro 1601 de manera obligatoria, evaluamos las informaciones necesarias para este registro y no identificamos campos específicos para estos detalles de informaciones en los módulos del Backoffice Protheus, porques no tenemos este control de informaciones sobre el pago y el intermediador, que tiene informaciones disponibles solamente en el módulo Sigaloja a través del Registro de Intermediador (tabla A1U)

De esta manera, se creó el punto de entrada para que cada contribuyente pueda evaluar las informaciones que entiende son pertinentes para llevarlas al registro.
A partir de la solicitud y necesidad de nuestros clientes en automatizar este proceso, retomamos el estudio de dicho registro para traer de modo automático, para casos en que no se utilice la tabla Registro de Intermediador ("A1U").
Para el seguimiento de este tratamiento, solicite la vinculación de su ticket a la issue DSERFIS1-32306.

¡Importante!

Es posible utilizar este punto de entrada para generar registros cuyo participante es oriundo de la tabla SA6 (Registro de bancos). Para ello, es necesario:

  1. Tener el banco responsable por el pago registrado como intermediador por medio de la rutina (FATA760), en este rutina se informarán los datos que conforman el registro 0150 y 1601.
  2. Para que sea posible vincular el registro de bancos (SA6) con el registro de intermediadores (A1U), el campo RCPJ (Registro de Contribuyente Persona Jurídica) del registro de bancos (A6_CGC) debe completarse con el mismo valor del campo RCPJ del registro de intermediadores (A1U_CGC).
  3. Finalmente, debe agregarse en la última posición de cada array que conforma el array de devolución del punto de entrada, el valor .T., esto indicará que el campo 02 - COD_PART_IP de aquel registro se refiere a un banco con informaciones de la rutina de intermediadores. 

02. DESCRIPCIÓN

Punto de entrada SPED1601 aplicado en el SPEDFISCAL que graba las informaciones del Registro 1601: Operaciones con instrumentos de pagos electrónicos.


Importante

Para que el Punto de entrada se ejecute correctamente es necesrio utilizar el registro de Intermediador ("A1U"), si se informa el mismo.

Documentación disponible en: Intermediadores (FATA760 - SIGAFAT)

03. ESPECIFICACIÓN

Parámetros del punto de entrada:

NombreTipoDescripción
PARAMIXBArray of Record

Array con datos de procesamiento con  elementos

[1] = De Fecha

[2] = A Fecha


Devolución:

NombreTipoDescripción

Array of Record

Devuelve un Array con las informaciones de las operaciones con pago electrónico.

Importante:

Es necesario que ya exista un COD_PART del registro 0150 para las Administradoras de Tarjeta y también para el Intermediador de la operación, si se informara.

04. EJEMPLO DE UTILIZACIÓN


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. OTRAS INFORMACIONES