Línea de producto: | Línea Protheus |
---|---|
Segmento: | Backoffice |
País: | Todos |
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.
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).
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)
La devolución del punto de entrada debe ser obligatoriamente un array.