Procedura-WorkingRelationQuery

Parametry:

NázevPopisDatový typ
AHistoryDateFloat(0, 0)
AEmployee_IDChar(10)
AAnEmployPattern_IDChar(10)
ADateOfBeginUsedChar(1)
ADateOfBeginFromFloat(0, 0)
ADateOfBeginToFloat(0, 0)
ADateOfBeginIsNegationChar(1)
ADateOfEndUsedChar(1)
ADateOfEndFromFloat(0, 0)
ADateOfEndToFloat(0, 0)
ADateOfEndIsNegationChar(1)
AExternIdentificationVarChar(20)
ARecordedStatusChar(1)
ACalcWageChar(1)
ACalcInsuranceChar(1)
ADivision_IDChar(10)
ADivisionWithChildrenChar(1)
ABusOrder_IDChar(10)
ABusOrderWithChildrenChar(1)
ABusTransaction_IDChar(10)
ABusTransactionWithChildrenChar(1)
ABusProject_IDChar(10)
ABusProjectWithChildrenChar(1)
ACategoryInteger
AWorkPosition_IDChar(10)
AWorkPositionWithChildrenChar(1)
ATypeOfWageInteger
AWageAmountLowFloat(0, 0)
AWageAmountHighFloat(0, 0)
AAlertCompensationLowFloat(0, 0)
AAlertCompensationHighFloat(0, 0)
AShiftCalendar_IDChar(10)
ACalcWorkingHoursChar(1)
ACalcOverTimeChar(1)
ACalcMinimalWageChar(1)
AWorkingTimeVarChar(40)
AWorkingDestinationVarChar(40)
AIgnoreCaseOnDestinationChar(1)
AWorkingPlaceVarChar(40)
AIgnoreCaseOnPlaceChar(1)
ATypeOfActivityInteger
AJobClasification_IDChar(10)
AJobPosition_IDChar(10)

Návratové hodnoty:

NázevPopisDatový typ
IDChar(10)
HISTORYDIVISION_IDChar(10)
EmployPattern_IDChar(10)

Závislosti:

NázevPopisTřída
WageStringValueOfFldProcedures
WageStringValueOfFldWithDefProcedures

Tělo:

BEGIN
  FOR
    SELECT ID, EmployPattern_ID
    FROM WorkingRelations A
    WHERE
      ((:AEmployee_ID='') OR (A.Employee_ID IN (SELECT Obj_ID FROM Seldat WHERE Sel_ID=:AEmployee_ID))) AND
      ((:AAnEmployPattern_ID='') OR (A.EmployPattern_ID IN (SELECT Obj_ID FROM Seldat WHERE Sel_ID=:AAnEmployPattern_ID))) AND
      ((:ADateOfBeginUsed<>'A') OR (((A.DateOfBegin$DATE BETWEEN :ADateOfBeginFrom AND :ADateOfBeginTo-1) and (:ADateOfBeginIsNegation = '0')) or (not (A.DateOfBegin$DATE BETWEEN :ADateOfBeginFrom AND :ADateOfBeginTo-1) and (:ADateOfBeginIsNegation = '1')) ) ) AND    
      ((:ADateOfEndUsed<>'A') OR (((A.DateOfEnd$DATE BETWEEN :ADateOfEndFrom AND :ADateOfEndTo-1) and (:ADateOfEndIsNegation = '0')) or (not (A.DateOfEnd$DATE BETWEEN :ADateOfEndFrom AND :ADateOfEndTo-1) and (:ADateOfEndIsNegation = '1')) ) ) AND
      ((:AExternIdentification='') OR (A.ExternIdentification LIKE :AExternIdentification ESCAPE '~')) AND
      ((:ARecordedStatus = '*') OR (A.RecordedStatus = :ARecordedStatus)) AND
      ((:ACalcWage = '*') OR (A.CalcWage = :ACalcWage)) AND
      ((:ACalcInsurance = '*') OR (A.CalcInsurance = :ACalcInsurance))
    INTO ID, EmployPattern_ID
  DO BEGIN
    mUseThis = 1;
    HISTORYDIVISION_ID='';
    IF ((mUseThis > 0) AND (:ADivision_ID <> '')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 218, :AHistoryDate) INTO HISTORYDIVISION_ID;
      SELECT COUNT(*) FROM Divisions Bx
        WHERE Bx.Hidden = 'N' AND
        Bx.ID = :HISTORYDIVISION_ID AND
        ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :ADivision_ID)) OR
          ((:ADivisionWithChildren in ('1', 'A')) and
           (Bx.ID in (select ID from Sys$Divisions2
                      where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :ADivision_ID)))))
        INTO mCount;
      IF (mCount = 0) THEN mUseThis = 0;
    END /* of Division_ID */
    IF ((mUseThis > 0) AND (:ABusOrder_ID <> '')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 219, :AHistoryDate) INTO mIDValue;
      SELECT COUNT(*) FROM BusOrders Bx
        WHERE Bx.Hidden = 'N' AND
        Bx.ID = :mIDValue AND
        ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :ABusOrder_ID)) OR
          ((:ABusOrderWithChildren in ('1', 'A')) and
           (Bx.ID in (select ID from Sys$BusOrders2
                      where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :ABusOrder_ID)))))
        INTO mCount;
      IF (mCount =0) THEN mUseThis = 0;
    END /* of BusOrder_ID */
    IF ((mUseThis > 0) AND (:ABusTransaction_ID <> '')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 220, :AHistoryDate) INTO mIDValue;
      SELECT COUNT(*) FROM BusTransactions Bx
        WHERE Bx.Hidden = 'N' AND
        Bx.ID = :mIDValue AND
        ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :ABusTransaction_ID)) OR
          ((:ABusTransactionWithChildren in ('1', 'A')) and
           (Bx.ID in (select ID from Sys$BusTransactions2
                      where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :ABusTransaction_ID)))))
        INTO mCount;
      IF (mCount = 0) THEN mUseThis = 0;
    END /* of BusTransaction_ID */
    IF ((mUseThis > 0) AND (:ABusProject_ID <> '')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 307, :AHistoryDate) INTO mIDValue;
      SELECT COUNT(*) FROM BusProjects Bx
        WHERE Bx.Hidden = 'N' AND
        Bx.ID = :mIDValue AND
        ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :ABusProject_ID)) OR
          ((:ABusProjectWithChildren in ('1', 'A')) and
           (Bx.ID in (select ID from Sys$BusProjects2
                      where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :ABusProject_ID)))))
        INTO mCount;
      IF (mCount =0) THEN mUseThis = 0;
    END /* of BusProject_ID */
    IF ((mUseThis > 0) AND (:ACategory > -1)) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFldWithDef(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 221, :AHistoryDate, '0') INTO mSValue;
      IF (CAST(mSValue AS Numeric) <> :ACategory) THEN mUseThis = 0;
    END /* of Category */
    IF ((mUseThis > 0) AND (:AWorkPosition_ID <> '')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 222, :AHistoryDate) INTO mIDValue;
      SELECT COUNT(*) FROM WorkPositions Bx
        WHERE Bx.Hidden = 'N' AND
        Bx.ID = :mIDValue AND
        ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :AWorkPosition_ID)) OR
          ((:AWorkPositionWithChildren in ('1', 'A')) and
           (Bx.ID in (select ID from Sys$WorkPositions2
                      where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :AWorkPosition_ID)))))
        INTO mCount;
      IF (mCount =0) THEN mUseThis = 0;
    END /* of WorkPosition_ID */
    IF ((mUseThis > 0) AND (:ATypeOfWage > -1)) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFldWithDef(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 224, :AHistoryDate, '0') INTO mSValue;
      IF (CAST(mSValue AS Numeric) <> :ATypeOfWage) THEN mUseThis = 0;
    END /* TypeOfWage */
    IF ((mUseThis > 0) AND (:AWageAmountLow > -1)) THEN BEGIN
      SELECT CAST(SValue AS Numeric) FROM WageStringValueOfFldWithDef(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 225, :AHistoryDate, '0') INTO mFValue;
      IF ((mFValue < :AWageAmountLow) OR (mFValue > :AWageAmountHigh)) THEN mUseThis = 0;
    END /* of WageAmount */
    IF ((mUseThis > 0) AND (:AAlertCompensationLow > -1)) THEN BEGIN
      SELECT CAST(SValue AS Numeric) FROM WageStringValueOfFldWithDef(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 226, :AHistoryDate, '0') INTO mFValue;
      IF ((mFValue < :AAlertCompensationLow) OR (mFValue > :AAlertCompensationHigh)) THEN mUseThis = 0;
    END
    IF ((mUseThis > 0) AND (:AShiftCalendar_ID <> '')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 227, :AHistoryDate) INTO mIDValue;
      SELECT COUNT(*) FROM Seldat WHERE Sel_ID=:AShiftCalendar_ID AND Obj_ID=:mIDValue INTO mCount;
      IF (mCount = 0) THEN mUseThis = 0;
    END /* of ShiftCalendar_ID */
    IF ((mUseThis > 0) AND (:ACalcWorkingHours <> '*')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 228, :AHistoryDate) INTO mSValue;
      IF (mSValue <> :ACalcWorkingHours) THEN mUseThis = 0;
    END /* of CalcWorkingHours */
    IF ((mUseThis > 0) AND (:ACalcOverTime <> '*')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 229, :AHistoryDate) INTO mSValue;
      IF (mSValue <> :ACalcOverTime) THEN mUseThis = 0;
    END /* of CalcOverTime */
    IF ((mUseThis > 0) AND (:ACalcMinimalWage <> '*')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 230, :AHistoryDate) INTO mSValue;
      IF (mSValue <> :ACalcMinimalWage) THEN mUseThis = 0;
    END /* of CalcMinimalWage */
    IF ((mUseThis > 0) AND (:AWorkingTime <> '')) THEN BEGIN
      SELECT COUNT(*) FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 233, :AHistoryDate) WHERE SValue LIKE :AWorkingTime ESCAPE '~' INTO mCount;
      IF (mCount = 0) THEN mUseThis = 0;
    END /* of WorkingTime */
    IF ((mUseThis > 0) AND (:AWorkingDestination <> '')) THEN BEGIN
      IF (:AIgnoreCaseOnDestination in ('A','1')) THEN BEGIN
        SELECT COUNT(*) FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 234, :AHistoryDate) WHERE UPPER(SValue Collate PXW_CSY) LIKE UPPER(:AWorkingDestination Collate PXW_CSY) ESCAPE '~' INTO mCount;
        IF (mCount = 0) THEN mUseThis = 0;
      END ELSE BEGIN
        SELECT COUNT(*) FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 234, :AHistoryDate) WHERE SValue LIKE :AWorkingDestination ESCAPE '~' INTO mCount;
        IF (mCount = 0) THEN mUseThis = 0;
      END
    END /* of WorkingDestination */
    IF ((mUseThis > 0) AND (:AWorkingPlace <> '')) THEN BEGIN
      IF (:AIgnoreCaseOnPlace in('A','1')) THEN BEGIN
        SELECT COUNT(*) FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 235, :AHistoryDate) WHERE UPPER(SValue  Collate PXW_CSY) LIKE UPPER(:AWorkingPlace Collate PXW_CSY) ESCAPE '~' INTO mCount;
        IF (mCount = 0) THEN mUseThis = 0;
      END ELSE BEGIN
        SELECT COUNT(*) FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 235, :AHistoryDate) WHERE SValue LIKE :AWorkingPlace ESCAPE '~' INTO mCount;
        IF (mCount = 0) THEN mUseThis = 0;
      END
    END /* of WorkingPlace */
    IF ((mUseThis > 0) AND (:ATypeOfActivity > -1)) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFldWithDef(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 239, :AHistoryDate, '0') INTO mSValue;
      IF (CAST(mSValue AS Numeric) <> :ATypeOfActivity) THEN mUseThis = 0;
    END /* of TypeOfActivity */
    IF ((mUseThis > 0) AND (:AJobClasification_ID <> '')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 243, :AHistoryDate) INTO mIDValue;
      SELECT COUNT(*) FROM Seldat WHERE Sel_ID=:AJobClasification_ID AND Obj_ID=:mIDValue INTO mCount;
      IF (mCount = 0) THEN mUseThis = 0;
    END /* of JobClasification_ID */
    IF ((mUseThis > 0) AND (:AJobPosition_ID <> '')) THEN BEGIN
      SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 242, :AHistoryDate) INTO mIDValue;
      SELECT COUNT(*) FROM Seldat WHERE Sel_ID=:AJobPosition_ID AND Obj_ID=:mIDValue INTO mCount;
      IF (mCount = 0) THEN mUseThis = 0;
    END /* of JobPosition_ID */
    IF (mUseThis > 0) THEN BEGIN
      IF (HISTORYDIVISION_ID='') THEN BEGIN
        SELECT SValue FROM WageStringValueOfFld(:ID, 'RFW3EQ50IEVOF2F5F33OWL1GXC', 218, :AHistoryDate) INTO HISTORYDIVISION_ID;
      END
      Suspend;
    END
  END
END;

Generated by ABRA Software a.s. 27.10.2021 16:34:37