Запустить свой обработчик в акте на сбыт
Модераторы: m0p3e, edward_K, Модераторы
Запустить свой обработчик в акте на сбыт
Галактика 810 не округляет налоги если они выставлены в категорию "ручные". То есть меняю ставку НДС с 20 на 18 она делает налоги ручными пересчитывает, но округлять не хочет. Оператор может забыть вручную округлить. Проще всего подсунуть свой обработчик который это сделает. Оптимально скорее всего его поместить в событие до создания с/ф из акта. Кто располагает исходниками не подскажете alter какого события и где сделать?
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Запустить свой обработчик в акте на сбыт
Вот доработка для накладных в сбыте для ручного запуска, возможно поправить кое-где потребуется..
Для автоматического запуска возможно на событие закрытия интерфейса EditSopr повешать код из cmValue59.. Как вариант
Для автоматического запуска возможно на событие закрытия интерфейса EditSopr повешать код из cmValue59.. Как вариант
Код: Выделить всё
Alter interface SoprDoc;
window EditSopr
HandleEvent
cmHotKeys:{ // Вызов контекстного меню
Case CurTable of
#KatSopr:
{
var sDynMenu : string;
var pExtParam: word; pExtParam := 0; //битовый параметр для доп. пунктов меню
sDynMenu:='L_SoprDoc::mnuSdRash;Separator;L_SoprDoc::mnuCU;Separator;L_SoprDoc::mnuSDPN;SEPARATOR;L_SoprDoc::mnuSDTXO;Separator;';
sDynMenu:=sDynMenu+';Separator;L_Soprdoc::MenuMySell;';
PutHotCommand(RunDynMenu(sDynMenu));
}
else inherited::handleEvent(cmHotKeys);
end;
}
cmValue59: //Округлить налоги
{
if isvalid(#katsopr) {}
var dSpNalog/*Накопленная ошибка округления в спецификации*/, dNalog/*Ошибка округления в заголовке*/, kNalog: double;
dSpNalog:= 0;
kNalog:= 0.1525423728813559; //Для 18%
if (getfirst spsopr where((katsopr.nrec == spsopr.csopr))) = tsOk
and (getfirst spdocnal where((katsopr.vidsopr == spdocnal.tipdoc and spsopr.nrec == spdocnal.cspdoc))) = tsOk
{
_loop spsopr where((katsopr.nrec == spsopr.csopr)) //Предполагается, что в настройках "галактики" установлено округление в документах сбыта до 0.01
{
dSpNalog:= dSpNalog + spsopr.kolfact * spsopr.price * kNalog - spsopr.sumnds;
if getfirst spdocnal where((word(201) == spdocnal.tipdoc and spsopr.nrec == spdocnal.cspdoc)) = tsOk {}
}
}
dNalog:= katsopr.summa * kNalog - katsopr.snalogs;
if message('Накопленная погрешность округления = ' + doubletostr(dSpNalog, '377.88888888') + '; погрешность в заголовке = ' + doubletostr(dNalog, '377.88888888') + chr(13) +
'Установить новое значение налога в заголовке = ' + doubletostr(SumNds, '666666.88888888') + '?', YesNo) = cmYes {
katsopr.snalogs := round(katsopr.summa * kNalog, 2);
katsopr.svnalogs := round(katsopr.summa * kNalog, 2);
if update current katsopr = tsOk then {}
RereadRecord(CurTable);
}
}
end;
end;
end.
MenuMySell menu
{
-'Уточнить налоги в заголовке', cmValue59,,,,;
-'Печать формы Торг12', cmValue60,,,,;
-'Экспорт в xml', cmValue58,,,,;
}