01. DATOS GENERALES

Línea de producto:

Línea Protheus

Segmento:

Backoffice

País:

Todos

02. DESCRIPCIÓN

El punto de entrada SPEDRTMS tiene como finalidad permitir el manejo con las informaciones involucrando conocimientos de transporte para los clientes que tienen movimientos generados sin integración con el entorno SIGATMS - Gestión de Transportes donde se utiliza para generar el bloque de documentos fiscales II servicio (ICMS)" para los registros: D100, D110, D120, D130, D140, D150, D160, D161, D162 y D190.


Parámetros del punto de entrada:

Nome

Tipo

Descrição

ParamIXB[1]

Numérico

Posición del registro de grabación

ParamIXB[2]

String

String del registro que se grabará

ParamIXB[3]

String

Alias del SFT de procesamiento

ParamIXB[4]

Array

Array de campos de la SFT previamente cargados

Importante

Es importante recordar que este punto de entrada permite solamente el manejo del alias del libro fiscal por ítem (SFT). De esta manera, no se puede o se recomienda enviar datos de movimientos diferentes de aquellos presentes en el alias.

03. ESPECIFICACIÓN

Cuando hay integración con el módulo Gestión de Transportes - SIGATMS es necesario que haya registros en la tabla DT6, pero cuando hay movimientos de CTE generados por el módulo Facturación - SIGAFAT (en que no hay registro en el DT6), es necesario utilizar el punto de entrada SPEDRMTS para obtener y componer los registros mencionados anteriormente en el archivo magnético del SPEDFISCAL.

Importante

Es importante prestar atención para validaciones pertinentes a cada registro del bloque, según exigencias del GUIA PRÁTICO DEL REGISTRO FISCAL DIGITAL – EFD-ICMS/IPI. Por ejemplo, el registro D100 para el modelo de documento 63 debe mostrar el campo 04 - COD_PART en blanco. El punto de entrada es el medio adecuado para cumplir con esta exigencia (vea a continuación, en la sección 4, ejemplo de tratamiento de esta exigencia con el PE SPEDRTMS).


4. EJEMPLO DE UTILIZACIÓN


SPEDRTMS
User Function SPEDRTMS()
  
    Local vLinha     := {}
    Local nPos       := ParamIXB[1]
    Local cReg       := ParamIXB[2]
    Local cAlias     := ParamIXB[3]
    Local aCmpAntSFT := ParamIXB[4]
    Local aRet       := {}
    Local vValServ   := 0
    Local vValDoc    := 0
    Local vValICMS   := 0
    Local vValBSICM  := 0
    Local cCod_Part  := ""
    Local cCodMunOri := ""
    Local cCodMunDes := ""
    Local cInd_Oper  := ""
    Local cInd_Emit  := ""
    Local cModelo := AModNot(aCmpAntSFT[42])         //Campos contenidos en el array aCmpAntSFT:
    //01 - Doc. Fiscal
    //02 - Serie Factura
    //03 - Cliente/Proveedor
    //04 - Código Tienda
    //05 - Fecha Docum
    //06 - Fecha Emisión
    //07 - Fecha Anulación
    //08 - Formulario propio
    //09 - CFOP
    //10 -
    //11 - Alíc. ICMS
    //12 - Nº. PDV
    //13 - Base  ICMS
    //14 - Alíc. ICMS
    //15 - Valor ICMS
    //16 - Valor exento ICMS
    //17 - Otros ICMS
    //18 - ICMS Retenido ST
    //19 - Cuenta contable
    //20 - Tipo Registro
    //21 - Tipo Flete
    //22 - Sucursal
    //23 - Estado/Prov/Reg
    //24 - Observación
    //25 - Clave NFE
    //26 - Tipo Emisión
    //27 - Prefijo
    //28 - Factura de crédito
    //29 - Comprobante fiscal
    //30 - Transportadora
    //31 - Peso bruto
    //32 - Peso neto
    //33 - Vehículo1
    //34 - Vehículo2
    //35 - Vehículo3
    //36 - Optante Simples Nacional
    //37 - Régimen Paraíba
    //38 - Factura original
    //39 - Serie de la factura original
    //40 - Flag del tipo de CTE en la entrada
    //41 - Fecha de recepción para registro extemporáneo de documento fiscal.
    //42 - Clase de documento
    //43 - Tipo Mov.
    //44 - Mensaje de la factura
    //45 - Producto
    //46 - Ítem
    //47 - Fórmula
    //48 - Código del TES
    //49 - Est/Prov/Reg de origen del transporte
    //50 - Municipio de origen del transporte
    //51 - Est/Prov/Reg de destino del transporte
    //52 - Municipio de destino del transporte
    //53 - Subserie de la factura de entrada
    //54 - Est/Prov/Reg de origen del transporte
    //55 - Municipio de origen del transporte
    //56 - Est/Prov/Reg de destino del transporte
    //57 - Municipio de destino del transporte
    //58 - Municipio de destino complemento
    //59 - Clave de acceso SEFAZ/CTe
    //60 - Documento de transporte
    //61 - Tipo Flete
    //62 - Cantidad de registros encontrados en la GZH
    //63 - Código del producto en la SB1
    //64 - Cuenta contable del producto en la SB1

    If aCmpAntSFT[43] == "S"
          
        DbSelectArea("SA1")
        SA1->(DBSetOrder(1))
        SA1->(DBSeek(XFilial("SA1") + aCmpAntSFT[3] + aCmpAntSFT[4]))
  
        cCod_Part   := "SA1"
        cCodMunOri  := SM0->M0_CODMUN
        cCodMunDes  := UfCodIBGE(SA1->A1_EST) + AllTrim(SA1->A1_COD_MUN)
  
        DbSelectArea("SF2")
        SF2->(DBSetOrder(1))
        SF2->(DBSeek(XFilial("SF2") + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))
          
        cCod_Part += SF2->(F2_FILIAL+F2_CLIENTE+F2_LOJA)
    Else
        DbSelectArea("SA2")
        SA2->(DBSetOrder(1))
        SA2->(DBSeek(XFilial("SA2") + aCmpAntSFT[3] + aCmpAntSFT[4]))
  
        cCod_Part   := "SA2"
        cCodMunOri  := UfCodIBGE(SA2->A2_EST) + AllTrim(SA2->A2_COD_MUN)
        cCodMunDes  := SM0->M0_CODMUN
 
        DbSelectArea("SF1")
        SF1->(DBSetOrder(1))
        SF1->(DBSeek(XFilial("SF1") + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))
  
        cCod_Part += SF1->(F1_FILIAL+F1_FORNECE+F1_LOJA)
    EndIf
  
    If cReg == "D140"
          
        AAdd(vLinha,    "D140")         // 01 - REG
        AAdd(vLinha,    cCod_Part )     // 02 - COD_PART_CONSG
        AAdd(vLinha,    cCodMunOri)     // 03 - COD_MUN_ORIG
        AAdd(vLinha,    cCodMunDes)     // 04 - COD_MUN_DEST
        AAdd(vLinha,    "1")            // 05 - IND_VEIC
        AAdd(vLinha,    "")             // 06 - VEIC_ID
        AAdd(vLinha,    "0")            // 07 - IND_NAV
        AAdd(vLinha,    "")             // 08 - VIAGEM
        AAdd(vLinha,    LTrim(Transform(SF2->F2_VALMERC, "@E 99999999.99"))) // 09 - VL_FRT_LIQ
        AAdd(vLinha,    "")             // 10 - VL_DESP_PORT
        AAdd(vLinha,    "")             // 11 - VL_DESP_CAR_DESC
        AAdd(vLinha,    "")             // 12 - VL_OUT
        AAdd(vLinha,    LTrim(Transform(SF2->F2_VALBRUT, "@E 99999999.99"))) // 13 - VL_FRT_BRT
        AAdd(vLinha,    LTrim(Transform(0.00, "@E 99999999.99"))) // 14 - VL_FRT_MM
        AAdd(aRet, vLinha)
  
   ElseIf cReg == "D120"
          
        AAdd(vLinha,    "D120")         // 01 - REG
        AAdd(vLinha,    cCodMunOri)     // 02 - COD_MUN_ORIG
        AAdd(vLinha,    cCodMunDes)     // 03 - COD_MUN_DEST
        AAdd(vLinha,    "")             // 04 - VEIC_ID
        AAdd(vLinha,    "")             // 05 - UF_ID
        AAdd(aRet, vLinha)
  
    ElseIf cReg == "D100"
  
        If  aCmpAntSFT[43] == "S"
 
            cInd_Oper := "1"
            cInd_Emit := "0"
 
            vValServ  := LTrim(Transform(F2_VALMERC + F2_FRETE + F2_VALICM, "@E 99999999.99"))
            vValDoc   := LTrim(Transform(F2_VALBRUT, "@E 99999999.99"))
            vValICMS  := LTrim(Transform(F2_VALICM , "@E 99999999.99"))
  
        Else
              
            cInd_Oper := "0"
            cInd_Emit := "1"
 
            vValServ := LTrim(Transform(F1_VALMERC + F1_FRETE + F1_VALICM, "@E 99999999.99"))
            vValDoc  := LTrim(Transform(F1_VALBRUT, "@E 99999999.99"))
            vValICMS := LTrim(Transform(F1_VALICM , "@E 99999999.99"))
  
        EndIf
  
        DbSelectArea("SF3")
        SF3->(DBSetOrder(1))
        SF3->(DBSeek(XFilial("SF3") + DtoS(aCmpAntSFT[6]) + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))
  
        vValBSICM := LTrim(Transform(F3_VALCONT, "@E 99999999.99"))
  
        AAdd(vLinha,    "D100")         //01 REG
        AAdd(vLinha,    cInd_Oper)      //02 IND_OPER
        AAdd(vLinha,    cInd_Emit)      //03 IND_EMIT
        AAdd(vLinha,    IIf(cModelo$"63", "", cModelo))      //04 COD_PART
        AAdd(vLinha,    AModNot(aCmpAntSFT[42])) //05 COD_MOD
        AAdd(vLinha,    "00")           //06 COD_SIT
        AAdd(vLinha,    aCmpAntSFT[2])  //07 SER
        AAdd(vLinha,    "")             //08 SUB
        AAdd(vLinha,    aCmpAntSFT[1])  //09 NUM_DOC
        AAdd(vLinha,    aCmpAntSFT[25]) //10 CHV_CTE
        AAdd(vLinha,    aCmpAntSFT[5])  //11 DT_DOC
        AAdd(vLinha,    aCmpAntSFT[5])  //12 DT_A_P
        AAdd(vLinha,    0)              //13 TP_CTe
        AAdd(vLinha,    "")             //14 CHV_CTe_REF
        AAdd(vLinha,    vValDoc)        //15 VL_DOC
        AAdd(vLinha,    0)              //16 VL_DESC
        AAdd(vLinha,    IIf(cModelo$"63", "", aCmpAntSFT[21])) //17 IND_FRT
        AAdd(vLinha,    vValServ)       //18 VL_SERV
        AAdd(vLinha,    vValBSICM)      //19 VL_BC_ICMS
        AAdd(vLinha,    vValICMS)       //20 VL_ICMS
        AAdd(vLinha,    0)              //21 VL_NT
        AAdd(vLinha,    "")             //22 COD_INF
        AAdd(vLinha,    "")             //23 COD_CTA
        AAdd(vLinha,    cCodMunOri)     //24 COD_MUN_ORIG
        AAdd(vLinha,    cCodMunDes)     //25 COD_MUN_DEST
        AAdd(aRet, vLinha)
      
    EndIf
  
Return(aRet)


05. INFORMACIONES ADICIONALES

       La devolución del punto de entrada debe ser obligatoriamente un array.