PONTO DE ENTRADA SPEDRTMS - SPED FISCAL

Descrição:

Este ponto de entrada tem como finalidade retornar um array com as informações dos conhecimentos de transportes para os clientes que não utilizam o módulo Gestão de Transportes.
É utilizado na geração do "Bloco documentos fiscais II serviço (ICMS)" para os Registros:D100, D110, D120, D130, D140, D150, D160, D161, D162 e D190.

Localização:

SPEDFISCAL

Eventos:

SPEDRTMS 

Programa Fonte:

SPEDFISCAL

Função:

SPEDRTMS 
Parâmetro
PARAMIXB[1]nPosNuméricoPosição do Array
PARAMIXB[2]cRegCaracterRegistro do Documento
PARAMIXB[3]cAliasCaracterContendo alias da tabela temporária de processamento do SPED.
PARAMIXB[4]aCmpAntSFTArray of Record

Contendo dados do primeiro item do documento fiscal.

Retorno:

Nome

Tipo

Descrição

aRet

 Array

 Retorna um array com as informações para geração do bloco do documento fiscal.


EXEMPLO de uso do Ponto de Entrada (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 cCodPart   := ""



    //Campos contidos no array aCmpAntSFT:
    //01 - Doc. Fiscal
    //02 - Serie NF
    //03 - Cliente/Fornecedor
    //04 - Codigo Loja
    //05 - Data Docto.
    //06 - Data Emissao
    //07 - Data Canc.
    //08 - Formulario Proprio
    //09 - CFOP
    //10 - 
    //11 - Aliq. ICMS
    //12 - Nro. PDV
    //13 - Base  ICMS
    //14 - Aliq. ICMS
    //15 - Valor ICMS
    //16 - Valor Isento ICMS
    //17 - Outros ICMS
    //18 - ICMS Retido ST
    //19 - Conta Contabil
    //20 - Tipo Lancamento
    //21 - Tipo Frete
    //22 - Filial
    //23 - Estado
    //24 - Observacao
    //25 - Chave NFE
    //26 - Tipo Emissao
    //27 - Prefixo
    //28 - Duplicata
    //29 - Cupom Fiscal
    //30 - Transportadora
    //31 - Peso Bruto
    //32 - Peso Liquido
    //33 - Veiculo1
    //34 - Veiculo2
    //35 - Veiculo3
    //36 - Optante Simples Nacional
    //37 - Regime Paraiba
    //38 - Nota Fiscal Original
    //39 - Serie da Nota fiscal original
    //40 - Flag de tipo de CTE na entrada
    //41 - Data de Recebimento para Lançamento extemporâneo de documento fiscal.
    //42 - Especie do Documento
    //43 - Tipo Mov.
    //44 - Mensagem da Nota Fiscal
    //45 - Produto
    //46 - Item
    //47 - Formula
    //48 - Código da TES
    //49 - UF de Origem do Transporte
    //50 - Municipio de Origem do Transporte
    //51 - UF de Destino do Transporte
    //52 - Municipio de Destino do Transporte
    //53 - Sub Série da nota fiscal de entrada
    //54 - UF de Origem do Transporte
    //55 - Municipio de Origem do Transporte
    //56 - UF de Destino do Transporte
    //57 - Municipio de Destino do Transporte
    //58 - Municipio de Destino Complemento

    If aCmpAntSFT[43] == "S"
        DbSelectArea("SA1")
        SA1->(DBSetOrder(1))
        SA1->(DBSeek(XFilial("SA1") + aCmpAntSFT[3] + aCmpAntSFT[4]))

        cCodPart  := "SA1"+A1_FILIAL+A1_COD+A1_LOJA

        DbSelectArea("SF2")
        SF2->(DBSetOrder(1))
        SF2->(DBSeek(XFilial("SF2") + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))

    Else
        DbSelectArea("SA2")
        SA2->(DBSetOrder(1))
        SA2->(DBSeek(XFilial("SA2") + aCmpAntSFT[3] + aCmpAntSFT[4]))

        cCodPart  := "SA2"+A2_FILIAL+A2_COD+A2_LOJA

        DbSelectArea("SF1")
        SF1->(DBSetOrder(1))
        SF1->(DBSeek(XFilial("SF1") + aCmpAntSFT[1] + aCmpAntSFT[2] + aCmpAntSFT[3] + aCmpAntSFT[4]))

    EndIf

    If cReg == "D140"
        AAdd(vLinha,                                                                                                        "D140") // 01 - REG
        AAdd(vLinha,                                                                                                     cCodPart) // 02 - COD_PART_CONSG
        AAdd(vLinha,                                                                                         aCmpAntSFT[50]) // 03 - COD_MUN_ORIG
        AAdd(vLinha,                                                                                         aCmpAntSFT[57]) // 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(SF2->(F2_AFRMM1+F2_AFRMM2), "@E 99999999.99"))) // 14 - VL_FRT_MM
        AAdd(aRet, vLinha)

    ElseIf cReg == "D100"
        If aCmpAntSFT[43] == "S"
            vValServ  := LTrim(Transform(F2_VALMERC + F2_FRETE, "@E 99999999.99"))
            vValDoc   := LTrim(Transform(F2_VALBRUT, "@E 99999999.99"))
            vValICMS  := LTrim(Transform(F2_VALICM, "@E 99999999.99"))

        Else
            vValServ := LTrim(Transform(F1_VALMERC + F1_FRETE, "@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,                        "0") //02 IND_OPER
        AAdd(vLinha,                        "0") //03 IND_EMIT
        AAdd(vLinha,              cCodPart) //04 COD_PART
        AAdd(vLinha,                      "57") //05 COD_MOD
        AAdd(vLinha,                      "05") //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,                        "2") //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, UfCodIBGE(aCmpAntSFT[49]) + AllTrim(aCmpAntSFT[50])) //24 COD_MUN_ORIG
        AAdd(vLinha, UfCodIBGE(aCmpAntSFT[56]) + AllTrim(aCmpAntSFT[57])) //25 COD_MUN_DEST
        AAdd(aRet, vLinha)

    EndIf

Return(aRet)