Текущее время: Ср, июл 23 2025, 03:57

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пт, апр 04 2014, 16:25 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 29 2013, 11:20
Сообщения: 25
Добрый день.
Необходим совет.
Ситуация следующая (постараюсь объяснить понятней):
ТН переводят, например, с 12-го числа в обособленное структурное подразделение. Мероприятие разбивающее расчет.
20-го числа расчет премии (причина внецикла 107).
25-го расчет аванса (причина 101).
В результатах расчета лежит:
по 107 причине апер на одну дату - с 20 по 20
по 101 причине апер с 01 по 25
Далее регулярный расчет.
Апер бьется на 2 - первый с 01 по 11, второй с 12 по 31
В первом апере импортируется результаты аванса - сотрудник в этом случае может уходить в долг...
Во втором апере импортируются результаты премии.

Нужно сделать так, чтобы межрасчеты импортировались не по дате начала апреа, а по дате межрасчета. Либо сделать так, чтобы даты начала и окончания межрасчетов формировались на один день - по аналогии 107 причиной (премия). Т.е. расчет шел на одну дату, но за период.))
Кстати, причина 103 расчет отпуска также лежит в результатах на одну дату.
Может кто сталкивался и знает как можно решить такую задачу.
Вот результаты расчета:
Изображение


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пн, апр 07 2014, 10:25 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, июн 21 2006, 16:16
Сообщения: 351
Привет! Недавно решал такую или очень похожую проблему, делал описание, лови:

Техническое описание формирование ошибки при переводе.
01.02.2014 – 05.02.2014 сотрудник работал в РП 5200 ПП 5226
06.02.2014 – 28.02.2014 сотрудник работал в РП 5200 ПП 5217

1. Расчет аванса за период 01.02.2014 – 12.02.2014, при этом:
1.1. Не формируется два частичных периода как в регулярном расчете!
1.2. Из-за чего (п. 1.1.) вся сумма НДФЛ сохраняется в RT на одном ВО p/32, у которого APZNR пустой.
При этом в WPBP формируется две записи:
01.02.2014 – 05.02.2014 с присвоением к РП 5200 ПП 5226
06.02.2014 – 12.02.2014 с присвоением к РП 5200 ПП 5217
При формировании PPOIX (транзакция PC00_M99_CIPE), в поле WPBPREF записывается значение 02 – это значение сплита WPBP- APZNR. Берется на дату «Дата платежа» - внециклический расчет (поле BONDT).

2. Расчет премии за период 18.02.2014 – 18.02.2014, при этом :
2.1. вся сумма НДФЛ сохраняется в RT на одном ВО p/32, у которого APZNR пустой.
При этом в WPBP формируется одна запись:
18.02.2014 – 18.02.2014 с присвоением к РП 5200 ПП 5217
При формировании PPOIX (транзакция PC00_M99_CIPE), в поле WPBPREF записывается значение 02 – это значение сплита WPBP- APZNR. Берется на дату «Дата платежа» - внециклический расчет (поле BONDT).

3. Регулярный расчет
3.1. Формируется два частичных периода:
Первый 01.02.2014 – 05.02.2014
В RT формируется /320, на котором сохраняется НДФЛ удержанный с начислений за период
01.02.2014 – 05.02.2014. Ошибка! Также в RT передавался ВО p/32 из первого межрасчета (аванс).
В схеме YUO3 (в стандарте RUO3), результат расчета аванса передается функцией LPBEG c параметром RCOC - Off-Cycle (Russia) это происходило по следующим причинам:
1. если BONDT внутри частичного периода
ИЛИ
2. дата начала «для периода» (FPBEG) межрасчета совпадает с датой начала для периода частичного периода.
При этом в WPBP формируется одна запись
01.02.2014 – 05.02.2014 с присвоением к РП 5200 ПП 5226

Второй 06.02.2014 – 28.02.2014

При этом в WPBP формируется одна запись
01.06.2014 – 28.02.2014 с присвоением к РП 5200 ПП 5217

Для исправления ошибки – создали клиентский параметр ZCOC для . Который не выполняет второе условие! Теперь первый межрасчет попадает во второй частичный период, т.к «Дата платежа» попадает во второй частичный период.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пн, апр 07 2014, 10:25 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, июн 21 2006, 16:16
Сообщения: 351
Привет! Недавно решал такую или очень похожую проблему, делал описание, лови:

Техническое описание формирование ошибки при переводе.
01.02.2014 – 05.02.2014 сотрудник работал в РП 5200 ПП 5226
06.02.2014 – 28.02.2014 сотрудник работал в РП 5200 ПП 5217

1. Расчет аванса за период 01.02.2014 – 12.02.2014, при этом:
1.1. Не формируется два частичных периода как в регулярном расчете!
1.2. Из-за чего (п. 1.1.) вся сумма НДФЛ сохраняется в RT на одном ВО p/32, у которого APZNR пустой.
При этом в WPBP формируется две записи:
01.02.2014 – 05.02.2014 с присвоением к РП 5200 ПП 5226
06.02.2014 – 12.02.2014 с присвоением к РП 5200 ПП 5217
При формировании PPOIX (транзакция PC00_M99_CIPE), в поле WPBPREF записывается значение 02 – это значение сплита WPBP- APZNR. Берется на дату «Дата платежа» - внециклический расчет (поле BONDT).

2. Расчет премии за период 18.02.2014 – 18.02.2014, при этом :
2.1. вся сумма НДФЛ сохраняется в RT на одном ВО p/32, у которого APZNR пустой.
При этом в WPBP формируется одна запись:
18.02.2014 – 18.02.2014 с присвоением к РП 5200 ПП 5217
При формировании PPOIX (транзакция PC00_M99_CIPE), в поле WPBPREF записывается значение 02 – это значение сплита WPBP- APZNR. Берется на дату «Дата платежа» - внециклический расчет (поле BONDT).

3. Регулярный расчет
3.1. Формируется два частичных периода:
Первый 01.02.2014 – 05.02.2014
В RT формируется /320, на котором сохраняется НДФЛ удержанный с начислений за период
01.02.2014 – 05.02.2014. Ошибка! Также в RT передавался ВО p/32 из первого межрасчета (аванс).
В схеме YUO3 (в стандарте RUO3), результат расчета аванса передается функцией LPBEG c параметром RCOC - Off-Cycle (Russia) это происходило по следующим причинам:
1. если BONDT внутри частичного периода
ИЛИ
2. дата начала «для периода» (FPBEG) межрасчета совпадает с датой начала для периода частичного периода.
При этом в WPBP формируется одна запись
01.02.2014 – 05.02.2014 с присвоением к РП 5200 ПП 5226

Второй 06.02.2014 – 28.02.2014

При этом в WPBP формируется одна запись
01.06.2014 – 28.02.2014 с присвоением к РП 5200 ПП 5217

Для исправления ошибки – создали клиентский параметр ZCOC для . Который не выполняет второе условие! Теперь первый межрасчет попадает во второй частичный период, т.к «Дата платежа» попадает во второй частичный период.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пн, апр 07 2014, 10:58 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 29 2013, 11:20
Сообщения: 25
BVM177 написал(а):
Для исправления ошибки – создали клиентский параметр ZCOC для . Который не выполняет второе условие! Теперь первый межрасчет попадает во второй частичный период, т.к «Дата платежа» попадает во второй частичный период.


Добрый день. Спасибо.
А можно подробней о параметре? Имеется ввиду причина расчета?
И как понять - Который не выполняет второе условие??


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пн, апр 07 2014, 11:45 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, июн 21 2006, 16:16
Сообщения: 351
Имеется ввиду – создали клиентский параметр ZCOC для функции FPBEG, который не проверяет второе условие.
Функция FPBEG работает в паре с функцией IMPRT и имено она в этой связки, а не импорт, определяет, что читаем из кластера.
Ниже код параметра .

FORM fulpbeg_natio.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$:(1) FORM FULPBEG_NATIO, Начало A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZEI_HRUCALC0_FULPBEG. "active version
INCLUDE ZEX_FULPBEG_NATIO_BEG.
ENDENHANCEMENT.
*$*$-End: (1)---------------------------------------------------------------------------------$*$*

CASE as-parm2.
*---------------------------------------------------------------------*
" bitte auf die Sortierung der einzelnen Routinen achten!!! "
" entsprechend AS-PARM2 aufsteigend sortieren "
" ausserdem ist auf die Laenge des Parameters AS-PARM2 zu achten!!!! "
*---------------------------------------------------------------------*
* when 'EVP'.
WHEN 'RCOC'. "Loop over all Off-Cycle results of period
perform lpbeg_evp_oc.
WHEN 'RU '.
PERFORM lpbeg_evp.
WHEN OTHERS.
* write: / text-r71, as-funco, as-parm2. "XAIALRK000847
* perform ablehnung. "XAIALRK000847
PERFORM log_func_err IN PROGRAM h99plog0 TABLES error_ptext
USING as-funco as-parm2. "XAIALRK000847
PERFORM errors TABLES error_ptext. "XAIALRK000847
ENDCASE.
ENDFORM. "FULPBEG_NATIO


Инклуд ZEX_FULPBEG_NATIO_BEG:

CASE as-parm2.
WHEN 'ZCOC'. "Loop over all Off-Cycle results of period
* Пример:
* 05.02.2014 - перевод между подразделами.
* Межрасчёт 1 (аванс): для-период c 01.02.2014 по 12.02.2014, bondt 12.02.2014.
* Межрасчёт 2 (перемия): для период с 18.02.2014 по 18.02.2014, bondt 18.02.2014.
* При регулярном расчёте RGDIR разбивается на 2 сплита:
* Сплит 1: для-период с 01.02.2014 по 05.02.2014.
* Сплит 2: для-период с 06.02.2014 по 28.02.2014.
* При этом LPBEG с параметром RCOC к сплиту 1 относит межрасчёт 1 и
* к сплиту 2 - межрасчёт 2.
* Параметр ZCOC относит межрасчёты 1 и 2 к сплиту 2 (проверяется только попадение
* bondt в для-период сплита).
perform zlpbeg_evp_oc.
EXIT.
ENDCASE.


Далее делаем z-копии стандартных подпрограмм.
Подпрограмма zlpbeg_evp_oc:

FORM zlpbeg_evp_oc.

DATA: BEGIN OF loop_rgdir OCCURS 2.
INCLUDE STRUCTURE pc261.
DATA: END OF loop_rgdir.
REFRESH aloop_rgdir.

PERFORM zget_evp_oc_results TABLES rgdir
loop_rgdir
USING aper.
LOOP AT loop_rgdir.
aloop_rgdir-seqno = loop_rgdir-seqnr.
APPEND aloop_rgdir.
ENDLOOP.
DESCRIBE TABLE aloop_rgdir LINES pack.
IF pack NE 0.
as-skip = 1.
sw_aloop_rc = true.
CLEAR aloop.
aloop-curnr = 1.
* aloop-param2 = as-parm2.
aloop-param2 = 'RC'.
aloop-sw_continue = false.
APPEND aloop.
ADD 1 TO aloop_index.
as-skip = 1. "error in schema generation
ELSE.
DATA wa_as LIKE as.
READ TABLE as INDEX next_as_entry INTO wa_as .
as-skip = wa_as-skip.
sw_aloop_rc = false.
flag_aloop_processed = false.
ENDIF.

ENDFORM.


В подпрограмме zget_evp_oc_results для регулярного расчёта оставляем проверку
только по bondt:

FORM zget_evp_oc_results TABLES it_in STRUCTURE pc261
et_out STRUCTURE pc261
USING ls_aper STRUCTURE aper.

data: lv_begda type d,
lv_endda type d,
lt_payty type table of PAYTY_CD WITH HEADER LINE.
field-SYMBOLS: <ls_rgdir> like rgdir,
<ls_p2001> TYPE p2001.

* Initialize the ET_OUT table.
REFRESH et_out.

if ls_aper-payty eq cd_c-regular
or ls_aper-payty eq cd_c-correct
or ls_aper-occat eq cd_occat-advance_procent "advance for current period
or ls_aper-occat eq cd_occat-advance_on_date.

lv_begda = ls_aper-begda.
lv_endda = ls_aper-endda.
if ls_aper-payty eq cd_c-correct.
lv_begda+6(2) = '01'.
endif.

*
CALL FUNCTION 'CD_READ_DATE_RANGE_ACTUAL_NV'
EXPORTING
begda = lv_begda
endda = lv_endda
TABLES
rgdir_in = it_in
rgdir_out = out_rgdir.

case ls_aper-occat.
when cd_occat-advance_on_corr. " Advance on Correction Run
CLEAR lt_payty.
lt_payty-sign = 'I'.
lt_payty-option = 'EQ'.
lt_payty-low = cd_c-correct.
APPEND lt_payty.
CALL FUNCTION 'CD_SELECT_PAYTY_RANGE'
TABLES
IN_RGDIR = out_rgdir
OUT_RGDIR = out_rgdir_2
PAYTY_TAB = lt_payty.
.
CLEAR OUT_RGDIR.
REFRESH OUT_RGDIR.
LOOP AT out_rgdir_2 WHERE occat eq ls_aper-occat.
APPEND out_rgdir_2 to OUT_RGDIR.
ENDLOOP.
when cd_occat-advance_procent " Monthly Advance Earned on Date
or cd_occat-advance_on_date. " Monthly Advance % of Monthly Salary
CLEAR lt_payty.
lt_payty-sign = 'I'.
lt_payty-option = 'EQ'.
lt_payty-low = cd_c-bonus.
APPEND lt_payty.
CALL FUNCTION 'CD_SELECT_PAYTY_RANGE'
TABLES
IN_RGDIR = out_rgdir
OUT_RGDIR = out_rgdir_2
PAYTY_TAB = lt_payty.
.

CLEAR OUT_RGDIR.
REFRESH OUT_RGDIR.
LOOP AT out_rgdir_2 WHERE payty eq cd_c-regular
or ( payty eq cd_c-bonus
and ( occat eq cd_occat-advance_procent
or occat eq cd_occat-advance_on_date
or occat eq cd_occat-advance_simple ) ).
OUT_RGDIR = out_rgdir_2.
APPEND OUT_RGDIR.
ENDLOOP.
when OTHERS.
if ls_aper-payty = cd_c-regular.
* if ls_aper-begda = ls_aper-pbegd.
* delete out_rgdir where payty <> cd_c-regular
* and ( fpbeg <> ls_aper-pbegd
* and bondt not BETWEEN ls_aper-begda and ls_aper-endda ).
* else.
* delete out_rgdir where payty <> cd_c-regular
* and ( fpbeg = ls_aper-pbegd
* or bondt not BETWEEN ls_aper-begda and ls_aper-endda ).
* endif.
delete out_rgdir where payty <> cd_c-regular and
bondt not BETWEEN ls_aper-begda and ls_aper-endda.
endif.
ENDCASE.

* Fullen der PAYTY_Range-Tabelle
loop at out_rgdir ASSIGNING <ls_rgdir>
where payty eq cd_c-bonus
or payty eq cd_c-correct.
if ls_aper-payty eq cd_c-regular
or <ls_rgdir>-bondt lt ls_aper-bondt
or ( <ls_rgdir>-bondt eq ls_aper-bondt
and <ls_rgdir>-seqnr lt ls_aper-seqnr ).
et_out = <ls_rgdir>.
APPEND et_out.
endif.
endloop.
*
SORT et_out BY seqnr.
endif.

ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Сб, апр 19 2014, 10:24 
Специалист
Специалист

Зарегистрирован:
Чт, окт 04 2012, 15:45
Сообщения: 135
Добрый день.

Как я понимаю проблема в том что в 1-м апере сотрудник уходит в долг (хуже будет если он уйдет в долг во 2-м апере)?

Ufukcan написал(а):
В первом апере импортируется результаты аванса - сотрудник в этом случае может уходить в долг...
Во втором апере импортируются результаты премии.


Как вариант можно для таких случаев (когда расчет разбит на несколько аперов) всегда формировать /559 в последнем апере, перенося все задолженности и выплаты в последний период (т.к. сам работник получает зарплату целиком за месяц в целом по компании, а не по каждому разделу персонала отдельно).
Это можно будет сделать просто в правилах расчета зарплаты (подпелив правило RU5C), и тогда к выплате будет сформирована всегда корректная сумма.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB