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/e-CT //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 == "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", "", cCod_Part)) //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) 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 == "D130" aAdd(vLinha, "D130") // 01 - REG aAdd(vLinha, cCod_Part ) // 02 - COD_PART_CONSG aAdd(vLinha, cCod_Part ) // 03 - COD_PART_RED aAdd(vLinha, "0") // 04 - IND_FRT_RED aAdd(vLinha, cCodMunOri) // 05 - COD_MUN_ORIG aAdd(vLinha, cCodMunDes) // 06 - COD_MUN_DEST aAdd(vLinha, "") // 07 - VEIC_ID aAdd(vLinha, LTrim(Transform(SF2->F2_VALMERC, "@E 99999999.99"))) // 08 - VL_LIQ_FRT aAdd(vLinha, 0) // 09 - VL_SEC_CAT aAdd(vLinha, 0) // 10 - VL_DESP aAdd(vLinha, 0) // 11 - VL_PEDG aAdd(vLinha, 0) // 12 - VL_OUT aAdd(vLinha, LTrim(Transform(SF2->F2_VALBRUT, "@E 99999999.99"))) // 13 - VL_FRT aAdd(vLinha, "") // 14 - UF_ID AAdd(aRet, vLinha) ElseIf 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) EndIf Return aRet
La devolución del punto de entrada debe ser obligatoriamente un array.
Importante
Al utilizar este punto de entrada, es muy recomendable que toda la estructura del D100 y archivos secundarios se generen a partir de este. Este punto de entrada una vez activado, se activa en cada punto de los registros D100, D110, D120, D130, D140, D150, D160, D161, D162 y D190. La utilización de forma parcial puede ocasionar errores imprevistos.