Punto de entrada: CT030ADEL - Verifica integridad referencial de un Centro de costo antes de su borrado]
Alcances: | Microsiga Protheus 10 , Microsiga Protheus 11 |
Versiones: | Microsiga Protheus 10 , Microsiga Protheus 11 |
Compatible países: | Todos |
Sistemas operativos: | Todos |
Compatible con las bases de datos: | Todas |
Idiomas: | Portugués (Brasil) , Portugués (Portugal) , Español , Inglés |
Descripción:
Punto de entrada utilizado antes del borrado de un centro de costo
Eventos
Ocurre dentro de la función de borrado de centro de costo, pero antes de hacerla efectiva realmente
Programa fuente
CTBA030.PRW
Sintaxis
CT030ADEL - Verifica la integridad referencial de un Centro de costo antes de su borrado ( [ nOpc ] ) --> lRet
Parámetros:
Nombre | Tipo | Descripción | Estándar | Obligatorio | Referencia | ||||||||||||
nOpc | Numérico | nOpc de la Operación |
Devolución
lRet(numerico)
Indicador de la integridad referencial del centro de costo
Observaciones
Si devolviera verdadero, el proceso de borrado continúa, en caso contrario el proceso de borrado se interrumpe
Ejemplos
If lCt030ADel lRet := ExecBlock("CT030ADEL", .F., .F.,nOpc) EndIf // Función utilizada para validar si existe integración del Protheus con el RM Solum y // Para activar la validación específica del RM Solum en el borrado del Producto. (PMSXFUNB) If lRet .AND. !PmsSlmPrd("CC") lRet := .F. Endif IF lRet BEGIN TRANSACTION //Punto de entrada del borrado de Centro de costo If ExistBlock("CT030GRE") ExecBlock("CT030GRE",.F.,.F.) Endif //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³ Borra todos los ítems ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ // Compatibilización con SIGACON If ChkFile("SI3") dbSelectArea("SI3") dbSetOrder(1) cSI3_Filial := xFilial( "SI3" ) // graba la sucursal del SI3 para ganar desempeño // marca el 1º registro del si3 referente a la clave que se borrará dbSeek( cSI3_Filial + Substr( cCtt_Custo , 1 , aTam[1] )) // recorre los ítems del SI3 con la misma clave para borrado While ! Eof() .And. ( SI3->I3_FILIAL == cSI3_Filial ) .And. ( SI3->I3_CUSTO == Substr( cCtt_Custo , 1 , aTam[1]) ) If ! SI3->( Deleted() ) // verifica si este no fue borrado RecLock("SI3",.F.,.T.) dbDelete() MsUnlock() Endif SI3->(dbSkip()) End EndIf //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³ Borra el C.Costo del registro ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea( cAlias ) //nuevamente selecciona el alias solamente para garantía dbSetOrder(1) // marca el orden nuevamente por garantía dbSeek( cCtt_Filial + cCtt_Custo ) // marca el registro en el ítem // por garantía, recorre la tabla ctt para borrar el ítem correcto de la clave While ! Eof() .And. ( CTT->CTT_FILIAL == cCtt_Filial ) .And. ( CTT->CTT_CUSTO == cCtt_Custo ) //Parámetro de activación de la integración del Protheus vs. RM Classis Net (RM Sistemas) if GetNewPar("MV_RMCLASS", .F.) //Copia el mantenimiento en el centro de costo para el RM Classis Net (RM Sistemas) ClsCCusto(.F.,"",.T., "D", IIF(FindFunction("FWGRPCompany"), FWGRPCompany(),SM0->M0_CODIGO) , CTT->CTT_FILIAL, CTT->CTT_CUSTO, CTT->CTT_DESC01, if(CTT->CTT_BLOQ == "1","F","T"), CTT->CTT_CUSTO) endif // verifica si el ítem no está borrado, de esta manera evita retrabajo If ! (cAlias)->( Deleted() ) //MsGoto(nRecCTT) --> retiré el goto, muchas veces el recno no es muy confiable para manejo de los registros RecLock( cAlias, .F., .T. ) dbDelete() MsUnlock() Endif CTT->(dbSkip()) EndDo If lIntGPE DbSelectArea("QAD") DbSetOrder(1) If DbSeek(xFilial("QAD")+cEmpAnt+cFilAnt+cCtt_Custo) Reclock("QAD",.F.) dbDelete() MsUnlock() Endif Endif If cInte=="1" .And. cSinc=="3" PcoSincCO("CTT",3) EndIf //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³ Graba el Historial de modificaciones en la tabla CW4. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ CTBGrvHist(xFilial("CTT"),"CTT" ,cCtt_Custo, ,ValType(CTT->CTT_CUSTO),"CTT_CUSTO",cCtt_Custo,"" ,nOpc) // cFilTabela ,cEntidade ,cCodigo ,cGrupo,cTipoCampo ,cCampo ,cValorAnt ,cValorNovo,nOpc) END TRANSACTION EndifEndIf