AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.05.2008, 08:28   #1  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Для Вычисления Премии мес %, производят шаги:

Код:
Базовая Сумма
Сум=СТАВКА% КАЛ ЧАС
КОРР = СУМ
СУМ = НАЛ\ОБЛ
СУМ = СУМ Х КОРР
Мне нужно определить расчет Премии таким образом, чтобы Она расчитывалась не на данный Месяц, а бралась с прошлого месяца.
т.е. вся проблема в Базовой Сумме...
Как мне взять Базовую сумму с прошлого месяца???

в функции BaseAmountRu в 14804 кодеюните, так и не разобрался....
Старый 13.05.2008, 16:43   #2  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от by_HT Посмотреть сообщение
Для Вычисления Премии мес %, производят шаги:

Код:
Базовая Сумма
Сум=СТАВКА% КАЛ ЧАС
КОРР = СУМ
СУМ = НАЛ\ОБЛ
СУМ = СУМ Х КОРР
Мне нужно определить расчет Премии таким образом, чтобы Она расчитывалась не на данный Месяц, а бралась с прошлого месяца.
т.е. вся проблема в Базовой Сумме...
Как мне взять Базовую сумму с прошлого месяца???

в функции BaseAmountRu в 14804 кодеюните, так и не разобрался....
Не имею русской локализации, поэтому точно не скажу. Но если эта сумма (или данные для расчета в предыдущем учетном периоде - месяце) где-то, то возможно ты сможешь:
- взять и отнять от текущей даты учетный период;
- получить исходные данные для расчета и расчитать?
Старый 14.05.2008, 10:27   #3  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
такое ощущение что я ищу иголку в стоге сена!
Старый 14.05.2008, 14:41   #4  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Не могу найти, где происходит расчет поля Payroll Amount, на форме "Журнал Расчета Зарплаты" Form 14839.
Перерыл отчет - Payroll Calculation, кодеюниты - Payroll Journal Management, Payroll - Calculation, Payroll Transfer Fields
Старый 22.05.2008, 09:43   #5  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
В кратце....
1) Создаем Элемент, присваеваем ему шаги....
2) в 14804 кодеюните создаем шаг и пишим:
Код:
   "Taxable Amount" := "Taxable Amount" + BaseAmountRUHT(Rec,MethodStep."Basic Line No.");
4) Создем функцию BaseAmountRUHT, которая считает базовую сумму предыдущего месяца:


Код:
// BaseAmountRUHT
Base := 0;
LineCounter := 0;

WITH RecPayLedEntry DO BEGIN
RESET;
  SETCURRENTKEY(
	"Employee No.","Posting Date","Document Type","Document No.","Ending Payment Date");
SETRANGE("Batch Name",PayrollJnlLine."Batch Name");
SETRANGE("Employee No.",PayrollJnlLine."Employee No.");
SETRANGE("Document Type",PayrollJnlLine."Document Type");
SETFILTER("Starting Account Date",'=%1',CALCDATE('<-1M>',PayrollJnlLine."Starting Date Account Period"));

PayrollBaseAmount.SETRANGE("Element Code",PayrollJnlLine."Element Code");
PayrollBaseAmount.FIND('-');
REPEAT
  LineCounter := LineCounter + 1;
  // Skip blank entries and entries we don't care about
  IF ((PayrollBaseAmount."Element Code Filter" <> '') OR
	  (PayrollBaseAmount."Type Filter" <> '') OR
	  (PayrollBaseAmount."Name Filter" <> '') OR
	  (PayrollBaseAmount."Administrate Type Filter" <> '') OR
	  (PayrollBaseAmount."Region Filter" <> '') OR
	  (PayrollBaseAmount."Local Filter" <> '') OR
	  (PayrollBaseAmount."Gen. Post Type Filter" <> '')) AND
	 ((LineToUse = 0) OR
	  (LineToUse = LineCounter))
  THEN
	WITH RecPayLedEntry DO BEGIN
	  // Set up the filters according to what is in the BaseAmount record
	  IF PayrollBaseAmount."Element Code Filter" = '' THEN
		SETRANGE("Element Code")
	  ELSE
		SETFILTER("Element Code",PayrollBaseAmount."Element Code Filter");
	 IF PayrollBaseAmount."Type Filter" = '' THEN
		SETRANGE("Element Type")
	  ELSE BEGIN
		SETCURRENTKEY(
		"Employee No.","Posting Date","Document Type","Document No.","Ending Payment Date");
		SETFILTER("Element Type",PayrollBaseAmount."Type Filter");
	  END;
	  IF PayrollBaseAmount."Name Filter" = '' THEN
		SETRANGE("Element Name")
	  ELSE
		SETFILTER("Element Name",PayrollBaseAmount."Name Filter");
	  IF PayrollBaseAmount."Administrate Type Filter" = '' THEN
		SETRANGE("Administrative Type")
	  ELSE BEGIN
		SETCURRENTKEY(
"Administrative Type",Region,"Local","Element Type","Posting Date","Ending Payment Date");
		SETFILTER("Administrative Type",PayrollBaseAmount."Administrate Type Filter");
	  END;
	  IF PayrollBaseAmount."Region Filter" = '' THEN
		SETRANGE(Region)
	  ELSE
		SETFILTER(Region,PayrollBaseAmount."Region Filter");
	  IF PayrollBaseAmount."Local Filter" = '' THEN
		SETRANGE("Local")
	  ELSE
		SETFILTER("Local",PayrollBaseAmount."Local Filter");
	  IF PayrollBaseAmount."Gen. Post Type Filter" = '' THEN
		SETRANGE("Gen. Post Type")
	  ELSE
		SETFILTER("Gen. Post Type",PayrollBaseAmount."Gen. Post Type Filter");
	  IF FIND('-') THEN
	  REPEAT BEGIN
	  MESSAGE('Am =%1',Amount);
	  Base := Base + Amount;
	  END;
	  UNTIL NEXT = 0;
	END;
UNTIL PayrollBaseAmount.NEXT = 0;
END;
EXIT(Base);
 


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:36.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.