Главная DISCLAIMER Ссылки Карта сайта Контакты
Главная arrow Отраслевые решения arrow Зарплата "Салют" arrow Шаблоны
Шаблоны

Проводки формируются на основании шаблонов. Сама форма первичного документа ничего не "знает" об особенностях проведения и расчёта документа. Все функции обращения к начислениям/удержаниям за текущий и предыдущие расчётные периоды систематизированы и собраны в отдельном модуле. Они доступны из программы шаблона.

Ниже приведен пример текста одного из шаблонов - расчёт премии с внебюджетной деятельности, для выполнения которого необходимо исключить из начисленной суммы переработку.

'==============================================
'= Акцент 6.0 
'= Создан : 06/12/2002 13:28:59
'= Автор  : admin
'==============================================
 
Sub RefillFromTemplate 'процедура вызывается по нажатию кнопки на форме "Заполнить".
  'Все, у кого есть отметки дней (s) в табеле, кроме табелей совместителей.
  Dim ar : ar=agsIDArrayHaveSumTab("s", 0, op.Date)
  Dim ar1: ar1=DelRuks(ar, op.Date) 'исключить определённые должности по перечню.
  Call FillOpFromArrayFrom(op, ar1) 'заполнить документ начисления массивом.
End Sub
 
Sub RecalcFromTemplate(row) 'вызывается по нажатию кнопки на форме "Рассчитать".
  'массив итогов графика сотрудника.
  Dim gra  : gra=rowArOtmGrafic(op.Trans(1,row).AgFromID, 0, op.Date)
  'массив итогов табеля сотрудника.
  Dim tba  : tba=rowArOtmTabel(op.Trans(1,row).AgFromID, 0, op.Date)
  Dim stdCh  : stdCh=159  'часы по стандартному 40-часовому графику.
  Dim mg : Set mg=CreateObject("vZPG.MonthGrafic") : mg.SetWorkarea workarea
  Dim ar : ar=mg.MonthGrafic(op.Date,0)  'grafID=0   -гр.стандартный 40-часовой
      : stdCh=mg.Hourses 'точное и правильное определение часов по ст.графику
  Dim entID  : entID=tba(5)  'его начисление по табелю.
  Dim uID      : uID=tba(6)  'расчёт по дням или по часам.
  Dim graCh  : graCh=gra(2)  'часы по графику
  Dim tabCh  : tabCh=tba(2)  'часы по табелю.
  Dim graDn  : graDn=gra(1)
  Dim tabDn  : tabDn=tba(1)
 
  Dim ftName : ftName="ЗП Оклад"
  Dim okl : okl=op.Trans(1,row).AgFromBind.FactValue(ftName, op.Date)
 
  'нудная процедура определения переработки для разных методов основного начисления.
  Dim sum   : sum=0    'заработок по табелю.
  If entID=122 Then    'з/п - оклад по графику, особый расчёт.
    If tabCh>=stdCh Then sum=okl  'если переработка - всё равно оклад.
    If tabCh< stdCh Then sum=okl/stdCh*tabCh  'часы
  Else
    If uID=1 Then If tabDn>=graDN Then sum=okl Else sum=okl*tabDn/graDn    'дни
    If uID=2 Then If tabCh>=graCh Then sum=okl*stdCh Else sum=okl*tabCh    'часы
    If uID=2 And okl>3 Then MsgBox "В табеле ошибка с видом начисления для "&_
                                    op.Trans(1,row).AgFromBind.Name
  End If
 
  'Коэффицент. Ставится вручную на основании приказа по предприятию о премировании
  Dim qu  : qu=op.Trans(1,row).Qty : If qu>2 Then q=1
  op.Trans(1,row).FQty=sum    'база для начисления.
  op.Trans(1,row).Sum=Round2(op.Trans(1,row).Qty*sum,2)
  op.Trans(1,row).Qty=qu
  If qu<>0 Then op.Trans(1,row).Price=op.Trans(1,row).Sum / qu
End Sub
 
 
Sub Template_OnApply(op)
  '{{ BEGIN_APPLY
  '--Число проводок--
  op.TransCount = 1
  '--Общие--
  op.FormID = 14
  op.SetFolder 8
  op.Name = "З/плата с внеб.деят. С"
  '--Счета--
  op.TransList(1).SetAccDb 16
  op.TransList(1).SetAccCr 17
  '--Корреспонденты--
  op.TransList(1).SetAgTo 6
  '--Объекты учета--
  op.TransList(1).SetEnt 139
  '}} END_APPLY
End Sub
 
Sub Template_OnEdit(op)
  '{{ BEGIN_EDIT
  '--Число проводок--
  op.TransCount = 1
  op.LockUI &H9
  '}} END_EDIT
End Sub
 
Sub Template_OnRecalc(op)
  '{{ BEGIN_RECALC
  '--Суммы--
  op.CalcSum "=T1"
  '}} END_RECALC
End Sub

 

 
« Пред.   След. »