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