16 октября, вторник 17:00
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Алгоритм расчета стажа для СЗВК

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Алгоритм расчета стажа для СЗВК

    Добрый день!
    Никто не знает точного алгоритма?

    Проблема вот в чём.
    К сожалению, поставлемая с программами ПФ инструкции
    (файл instr.doc, "Инструкция по заполнению форм документов
    индивидуального (персонифицированного) учета в системе государственного пенсионного страхования",
    УТВЕРЖДЕНА постановлением Правления Пенсионного фонда РФ
    от 21.10.02 N 122п)
    не даёт точного алгоитма для расчёта стажа, более того, в примерах расчёта стажа содержатся явные арифметические ошибки.

    Рассчитанный мною стаж часто часто отличается от стажа, рассчитанного CheckPSN.
    Поскольку разница не превосходит 2 дней, ошибки нет, но хотелось бы точного совпадения.

    Вот кусочек из моего кода, на всякий случай:
    -----------Начало блока расчёта числа дней, месяцев и лет стажа

    -- считываем в 6 переменых суммы дней, месяцев и лет
    -- для всех дат начала (DBegin_d, DBegin_m, DBegin_y)
    -- и конца периодов стажа (DEnd_d, DEnd_m, DEnd_y)
    -- из таблицы szvk_stag, содержащей записи о стаже

    SELECT Sum(Day(DBegin)),Sum(Month(Dbegin)),Sum(Year(DBegin)),
    Sum(Day(DEnd)),Sum(Month(DEnd)),Sum(Year(DEnd))
    INTO DBegin_d, DBegin_m, DBegin_y,
    DEnd_d, DEnd_m, DEnd_y
    FROM szvk_stag;

    -- Считываем число увольнений для кода "РАБОТА"
    SELECT Count(*)
    INTO days_uvol
    FROM pens_szvk_org
    WHERE code='РАБОТА';

    -- ВЫЧИСЛЯЕМ значения дней, месяцев и лет трудового стажа(переменные stag_d, stag_m, stag_y)

    --число дней стажа = сумма дней даты увольнения - сумма дней даты приёма + число дней увольнения с кодом "РАБОТА"
    stag_d = DEnd_d - DBegin_d + days_uvol;

    --число месяцев стажа
    stag_m = DEnd_m - DBegin_m;

    --число лет стажа
    stag_y = DEnd_y - DBegin_y;

    --если число дней стажа 0, приводим его к положительному, откусывая по 1 месяцу от числа месяцев
    WHILE stag_d0
    stag_d = stag_d + 30;
    stag_m = stag_m - 1;
    END WHILE

    --если число дней стажа >30, приводим его к числу до 30, прибавляя по 1 месяцу к числу месяцев
    WHILE stag_d>30
    stag_d = stag_d - 30;
    stag_m= stag_m + 1;
    END WHILE

    --аналогичные действия для числа месяцев
    WHILE stag_m0
    stag_m = stag_m+12;
    stag_y = stag_y-1;
    END WHILE

    WHILE stag_m>12
    stag_m = stag_m -12;
    stag_y = stag_y + 1;
    END WHILE

    -- Если получили ровно 30 дней стажа, увеличиваем число месяцев стажа на 1, число дней=0
    IF stag_d=30
    THEN stag_d = 0;
    stag_m = stag_m + 1;
    END IF

    -- Если получили ровно 12 месяцев стажа, увеличиваем число лет стажа на 1, число месяцев =0
    IF stag_m=12
    THEN stag_m=0;
    stag_y = stag_y+1;
    END IF

    ---------Конец блока расчёта числа дней, месяцев и лет стажа

  • #2
    zenk
    а Вы напишите письмо Екжанову - автору checkpsn. Может и поможет

    http://ekzhanov.chat.ru/checkpsn.htm

    Комментарий


    • #3
      Да, в прошлом году Александр ответил мне уже на следующий день. А сейчас...
      На сайте тоже уже полгода нет обновлений.

      Комментарий

      Пользователи, просматривающие эту тему

      Свернуть

      Присутствует 1. Участников: 0, гостей: 1.

      Обработка...
      X