|
v7: расчет зарплаты- есть ошибка | ☑ | ||
---|---|---|---|---|
0
Mikkei
28.11.11
✎
12:45
|
при расчете з\п неправильно вычисляется пенсионный фонд . Объясняю - вычисляется после вычета из основного после вычита медстраха. А надо из основного.
Предлагаю посмотреть модуль Подскажите // ******************************************************************************************* Процедура ОбработкаПроведения() Если глМожноЗаписатьДокумент(Контекст)=0 Тогда СтатусВозврата(0); КонецЕсли; Ит=СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ПериодМ(ДатаДок); ФОТ = 0; ФОТосн = 0; ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл //Если СокрЛП(Сотрудник.Код)="10028" Тогда // СпрСотрудник = СоздатьОбъект( "Справочник.Сотрудники" ); // СпрСотрудник.НайтиПоКоду("00005"); // Сотрудник= СпрСотрудник.ТекущийЭлемент(); //КонецЕсли; ПрофВзнос= Сотрудник.ПрофВзнос.Получить(ДатаДок); Если Пересчет=1 Тогда НапрВыпл=НапрВыпл-Остаток; КонецЕсли; МедСтрахованиеСотрудниковСНачГода=0; ВаловыйДоходСНачГода = 0; ПодоходныйНалогСНачГода = 0; НеОблагается = 0; КолМесРаб = 0; РасчСумМин=0; РасчСумШкалыПН=0; ПодоходныйНалог = 0; ПодНалогМес=0; ПенсФонд=0; НапрНаВыплСНачГода=0; ПрочДоходСНачГода=0; ДатаИт = КонМесяца(ДатаДок); Ит.ПериодМ(ДатаИт); //___________________________________________________________________________________ БухИт = СоздатьОбъект("БухгалтерскиеИтоги"); БухИт.ПериодМ(ДатаДок); УжеНачОсв=0; Если Сотрудник.ДатаПриема>НачМесяца(ДатаДок) Тогда УжеНачОсв=1; Иначе УжеНачОсв = БухИт.ДО(СчетПоКоду("КМ",ПланыСчетов.Вспомогательный),"С",,Сотрудник); КонецЕсли; Если Сотрудник.ДатаУвольнения<>Дата("..") Тогда Если Сотрудник.ДатаУвольнения<КонМесяца(ДатаДок) Тогда УжеНачОсв=1; Иначе УжеНачОсв = БухИт.ДО(СчетПоКоду("КМ",ПланыСчетов.Вспомогательный),"С",,Сотрудник); КонецЕсли; КонецЕсли; Если УжеНачОсв = 0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("КМ",ПланыСчетов.Вспомогательный); Операция.Дебет.Сотрудники = Сотрудник; Операция.Кредит.Счет = СчетПоКоду("КМ",ПланыСчетов.Вспомогательный); Операция.Кредит.Сотрудники = Сотрудник; Операция.Сумма = 1; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Месяц работы-"+Сотрудник; Операция.Записать(); //___________________________________________________________________________________ КонецЕсли; БухИтНГ = СоздатьОбъект("БухгалтерскиеИтоги"); БухИтНГ.ПериодМНГ(ДатаДок); ОсвобождениеПредГода= Сотрудник.ОсвобождениеПредГода.Получить(НачГода(ДатаДок)); НеОблагается =НеОблагается + БухИтНГ.ДО(СчетПоКоду("НМ",ПланыСчетов.Вспомогательный),"С",,Сотрудник)+ОсвобождениеПредГода; КолМесРаб = КолМесРаб+БухИтНГ.ДО(СчетПоКоду("КМ",ПланыСчетов.Вспомогательный),"С",,Сотрудник); ПрочДоходСНачГода=БухИтНГ.ДО(СчетПоКоду("ПД",ПланыСчетов.Вспомогательный),"С",,Сотрудник); СуммаБольничный=БухИтНГ.ДО(СчетПоКоду("НЧ.8",ПланыСчетов.Вспомогательный),"С",,Сотрудник); ИтНГ = СоздатьОбъект("БухгалтерскиеИтоги"); ИтНГ.ВключатьСубсчета(1,1); ИтНГ.ИспользоватьСубконто(ВидыСубконто.Сотрудники,Сотрудник,2); ИтНГ.ВыполнитьЗапрос(НачГода(ДатаДок),ДатаДок,"531.1",,,2,,"С"); Если ИтНГ.ПолучитьКорСчет(,"534.7") = 1 Тогда ПодоходныйНалогСНачГода = ИтНГ.КорДО(); Иначе ПодоходныйНалогСНачГода = 0; КонецЕсли; Если Сотрудник.МедСтрахованиеСотрудников.Получить(ДатаДок)= Перечисление.Булево.Нет Тогда МедСтрахованиеСотрудников=0; Иначе МедСтрахованиеСотрудников=(НапрВыпл-Больничный-МатерПомощь)*Константа.МедСтрахованиеСотрудников.Получить(Месяц)/100; КонецЕсли; Если ИтНГ.ПолучитьКорСчет(,"533.3") = 1 Тогда МедСтрахованиеСотрудниковСНачГода = ИтНГ.КорДО()+МедСтрахованиеСотрудников; Иначе МедСтрахованиеСотрудниковСНачГода = МедСтрахованиеСотрудников; КонецЕсли; Если ИтНГ.ПолучитьКорСчет(,"531.0") = 1 Тогда НапрНаВыплСНачГода = ИтНГ.КорКО(); Иначе НапрНаВыплСНачГода = 0; КонецЕсли; //******************************************************************************************* Если Месяц = ' . . ' Тогда ДатаОпр=ДатаДок; Иначе ДатаОпр=Месяц; КонецЕсли; СтавкаПенсФонда=Константа.СтавкаПенсФонда.Получить(ДатаОпр); //*************************************************************************************************** СуммаНапрВыпл =0; СуммаМатерПомощь = 0; СуммаПенсФонд = 0; ПенсФонд=0; ИтогНапрВыпл=0; ИтогПенсФонд=0; ИтогМатерПомощь=0; ИтогБольничный=0; Док = СоздатьОбъект( "Документ.ЗарПлНапрНаВыпл" ); Док.ВыбратьДокументы(НачГода(Месяц),ДатаДок); Пока Док.ПолучитьДокумент() = 1 Цикл Стр = Док.Вид(); Если Док.Проведен()=1 Тогда Если Стр = "ЗарПлНапрНаВыпл" Тогда Если Док.НомерДок<>НомерДок Тогда // СуммаБольничный = 0; // Если Док.Итог("Больничный")<>0 Тогда // Пока Док.ПолучитьСтроку() = 1 Цикл // СотрудникОпр=Док.Сотрудник; // Если СотрудникОпр=Сотрудник Тогда // СуммаБольничный = Док.Больничный; // КонецЕсли; // КонецЦикла; // по строкам документа // КонецЕсли; // Если СуммаБольничный<>0 Тогда // Если ДатаДок<Дата("08.09.2006") Тогда // // ИначеЕсли НачГода(Месяц)<НачГода(ДатаДок) Тогда // // Иначе // ИтогоБольничный=ИтогоБольничный+СуммаБольничный; // КонецЕсли; // КонецЕсли; Если Док.Месяц=Месяц Тогда Пока Док.ПолучитьСтроку() = 1 Цикл СотрудникОпр=Док.Сотрудник; Если СотрудникОпр=Сотрудник Тогда СуммаНапрВыпл = Док.НапрВыпл; ИтогБольничный=ИтогБольничный+Док.Больничный; ИтогМатерПомощь=ИтогМатерПомощь+Док.МатерПомощь; СуммаПенсФонд = Док.ПенсФонд; ИтогНапрВыпл=ИтогНапрВыпл+СуммаНапрВыпл; ИтогПенсФонд=ИтогПенсФонд+СуммаПенсФонд; КонецЕсли; КонецЦикла; // по строкам документа КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; //*************************************************************************************************** Если ((ИтогНапрВыпл+НапрВыпл)-(ИтогБольничный+Больничный)-(ИтогМатерПомощь+МатерПомощь))>=Константа.ПределПенсФонда.Получить(ДатаОпр) Тогда ПенсФондОпр=Константа.ПределПенсФонда.Получить(ДатаОпр)*(СтавкаПенсФонда/100); Иначе ПенсФондОпр=Окр(((ИтогНапрВыпл+НапрВыпл)-(ИтогБольничный+Больничный)-(ИтогМатерПомощь+МатерПомощь))*(СтавкаПенсФонда/100),2,1); КонецЕсли; Если ПенсФондОпр-ИтогПенсФонд>0 Тогда ПенсФонд=ПенсФондОпр-ИтогПенсФонд; //Иначе // ПенсФонд=0; КонецЕсли; //Если (НапрВыпл-Больничный-МатерПомощь)>=Константа.ПределПенсФонда.Получить(ДатаОпр) Тогда // ПенсФонд=Константа.ПределПенсФонда.Получить(ДатаОпр)*(СтавкаПенсФонда/100); //Иначе // ПенсФонд=(НапрВыпл-Больничный-МатерПомощь)*(СтавкаПенсФонда/100); //КонецЕсли; Если ДатаДок<Дата("01.01.2005") Тогда ПенсСтрахованиеСотрудников=0; ПенсСтрахованиеСотрудниковСНачГода = 0; Иначе ПенсСтрахованиеСотрудников=ПенсФонд; Если ИтНГ.ПолучитьКорСчет(,"229.2") = 1 Тогда ПенсСтрахованиеСотрудниковСНачГода = ИтНГ.КорДО()+ПенсСтрахованиеСотрудников; Иначе ПенсСтрахованиеСотрудниковСНачГода = ПенсСтрахованиеСотрудников; КонецЕсли; КонецЕсли; //******************************************************************************************* ВаловыйДоходСНачГода = ВаловыйДоходСНачГода+НапрНаВыплСНачГода+ПрочДоходСНачГода; ВаловыйДоход = ВаловыйДоходСНачГода+НапрВыпл+ПрочиеДоходы; Если ДатаДок<Дата("01.01.2007") Тогда ОблагаемаяСумма = ВаловыйДоход-НеОблагается-МедСтрахованиеСотрудниковСНачГода-ПенсСтрахованиеСотрудниковСНачГода; Иначе ОблагаемаяСумма = ВаловыйДоход-НеОблагается-МедСтрахованиеСотрудниковСНачГода-ПенсСтрахованиеСотрудниковСНачГода-(СуммаБольничный+Больничный); КонецЕсли; Если КолМесРаб = 0 Тогда КолМесРаб=1 КонецЕсли; ПервыйПредел=Константа.ПервыйПредел.Получить(ДатаДок); ВторойПредел=Константа.ВторойПредел.Получить(ДатаДок); ТретийПредел=Константа.ТретийПредел.Получить(ДатаДок); СтавкаПодохНалога1=Константа.ПодохНалогПервыйПредел.Получить(ДатаДок); СтавкаПодохНалога2=Константа.ПодохНалогВторойПредел.Получить(ДатаДок); СтавкаПодохНалога3=Константа.ПодохНалогТретийПредел.Получить(ДатаДок); Если Сотрудник.ВидУдержанийПодохНалога.Получить(ДатаДок)=Перечисление.ВидУдержанийПодохНалога.Предельный Тогда ПодоходныйНалог=ОблагаемаяСумма*(СтавкаПодохНалога3/100); Иначе Если ОблагаемаяСумма > 0 Тогда Если ОблагаемаяСумма <= ПервыйПредел*КолМесРаб Тогда ПодоходныйНалог=ОблагаемаяСумма*СтавкаПодохНалога1/100; ИначеЕсли ОблагаемаяСумма <= ВторойПредел*КолМесРаб Тогда РасчСумМин1=(ПервыйПредел*СтавкаПодохНалога1/100) ; РасчСумМин=РасчСумМин1*КолМесРаб; РасчСумШкалыПН=ПервыйПредел*КолМесРаб; ПодоходныйНалог=РасчСумМин+(ОблагаемаяСумма-РасчСумШкалыПН)*(СтавкаПодохНалога2/100); ИначеЕсли ОблагаемаяСумма > ВторойПредел*КолМесРаб Тогда РасчСумМин1=(ВторойПредел-ПервыйПредел)*(СтавкаПодохНалога2/100)+ПервыйПредел*(СтавкаПодохНалога1/100); РасчСумМин=РасчСумМин1*КолМесРаб; РасчСумШкалыПН=ВторойПредел*КолМесРаб; ПодоходныйНалог=РасчСумМин+(ОблагаемаяСумма-РасчСумШкалыПН)*(СтавкаПодохНалога3/100); КонецЕсли; КонецЕсли; КонецЕсли; Если ПодоходныйНалогСНачГода=0 Тогда Если ПодоходныйНалог>0 Тогда ПодНалогМес=ПодоходныйНалог; Иначе ПодНалогМес=0; КонецЕсли; КонецЕсли; Если ПодоходныйНалогСНачГода>0 Тогда ПодНалогМес=ПодоходныйНалог-ПодоходныйНалогСНачГода КонецЕсли; //_________________________________________________________________________________ Если ПодНалогМес <>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("531.1",ПланыСчетов.Основной);; Операция.Дебет. Сотрудники= Сотрудник; Операция.Кредит.Счет = СчетПоКоду("534.7",ПланыСчетов.Основной); Если ДатаДок>=Дата("01.01.2005") Тогда Операция.Кредит. ПодразделенияФирмы= Сотрудник.Подразделение.Получить(ДатаДок).ПодразделенияФирмы; КонецЕсли; Операция.Сумма = ПодНалогМес; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Impozit pe venit pers.fizice"; КонецЕсли; Если ПенсФонд <>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("531.1",ПланыСчетов.Основной);; Операция.Дебет. Сотрудники= Сотрудник; Операция.Кредит.Счет = СчетПоКоду("229.2",ПланыСчетов.Основной); СпрКонтрагенты = СоздатьОбъект( "Справочник.Контрагенты" ); СпрКонтрагенты.НайтиПоКоду("3/6"); Операция.Кредит.Контрагенты = СпрКонтрагенты.ТекущийЭлемент(); Операция.Сумма = ПенсФонд; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul special de pensii "+СтавкаПенсФонда+"%"; Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("946",ПланыСчетов.Основной); Операция.Дебет.Сотрудники = Сотрудник; Операция.Сумма = ПенсФонд; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul special de pensii "+СтавкаПенсФонда+"%"; КонецЕсли; Если МедСтрахованиеСотрудников <>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("531.1",ПланыСчетов.Основной);; Операция.Дебет. Сотрудники= Сотрудник; Операция.Кредит.Счет = СчетПоКоду("533.3",ПланыСчетов.Основной); Операция.Сумма = МедСтрахованиеСотрудников; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul special de medicina"; КонецЕсли; СуммаПрофВзноса=(НапрВыпл-Больничный-МатерПомощь)*ПрофВзнос/100; Если СуммаПрофВзноса <>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("531.1",ПланыСчетов.Основной);; Операция.Дебет. Сотрудники= Сотрудник; Операция.Кредит.Счет = СчетПоКоду("539.3",ПланыСчетов.Основной); СпрКонтрагент = СоздатьОбъект( "Справочник.Контрагенты" ); СпрКонтрагент.НайтиПоКоду("3/18"); Операция.Кредит.Контрагенты = СпрКонтрагент.ТекущийЭлемент(); Операция.Сумма = СуммаПрофВзноса; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul special sindicale"; КонецЕсли; Если Больничный <>0 Тогда Операция.НоваяПроводка(); Операция.Кредит.Счет = СчетПоКоду("229.2",ПланыСчетов.Основной); СпрКонтрагенты1 = СоздатьОбъект( "Справочник.Контрагенты" ); СпрКонтрагенты1.НайтиПоКоду("3/4"); Операция.Кредит.Контрагенты = СпрКонтрагенты1.ТекущийЭлемент(); Операция.Дебет.Счет = СчетПоКоду("533.1",ПланыСчетов.Основной); Операция.Сумма = Больничный; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul Social Calcularea de boala"; Если Константа.СоцФондНаБольничный.Получить(ДатаДок)=Перечисление.Булево.Да Тогда Операция.НоваяПроводка(); Операция.Кредит.Счет = СчетПоКоду("229.2",ПланыСчетов.Основной); СпрКонтрагенты = СоздатьОбъект( "Справочник.Контрагенты" ); СпрКонтрагенты.НайтиПоКоду("3/5"); Операция.Кредит.Контрагенты = СпрКонтрагенты.ТекущийЭлемент(); Операция.Дебет.Счет = СчетПоКоду("533.1",ПланыСчетов.Основной); Операция.Сумма = Больничный*(Константа.СтавкаСоцФонда.Получить(ДатаДок)/100); Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul Social Calcularea de boala"; Операция.НоваяПроводка(); Операция.Кредит.Счет = СчетПоКоду("229.2",ПланыСчетов.Основной); СпрКонтрагенты1 = СоздатьОбъект( "Справочник.Контрагенты" ); СпрКонтрагенты1.НайтиПоКоду("3/14"); Операция.Кредит.Контрагенты = СпрКонтрагенты1.ТекущийЭлемент(); Операция.Дебет.Счет = СчетПоКоду("533.2",ПланыСчетов.Основной); Операция.Сумма = Больничный*(Константа.СтавкаПенсФонда.Получить(ДатаДок)/100); Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul de pensii Calcularea de boala"; КонецЕсли; Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("НЧ.8",ПланыСчетов.Вспомогательный); Операция.Дебет.Сотрудники = Сотрудник; Операция.Сумма = Больничный; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Calcularea de boala-"+Формат(ДатаДок,"Д ММММГГГГ"); КонецЕсли; //___________________________________________________________________________________ Если МатерПомощь>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("МП",ПланыСчетов.Вспомогательный); Операция.Дебет.Сотрудники = Сотрудник; Операция.Сумма = МатерПомощь; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Agutor material din-"+Формат(ДатаДок,"Д ММММГГГГ"); //Операция.НоваяПроводка(); //Операция.Дебет.Счет = СчетПоКоду("ПД",ПланыСчетов.Вспомогательный); //Операция.Дебет.Сотрудники = Сотрудник; //Операция.Кредит.Счет = СчетПоКоду("ПД",ПланыСчетов.Вспомогательный); //Операция.Кредит.Сотрудники = Сотрудник; //Операция.Сумма = МатерПомощь; //Операция.НомерЖурнала = "ЗП"; //Операция.СодержаниеПроводки = "Eliberat salariu-"+Формат(ДатаДок,"Д ММММГГГГ"); КонецЕсли; ПроцентАлиментов=Сотрудник.Алименты.Получить(ДатаДок); ОблСуммаАлиментами=НапрВыпл-(ПодНалогМес+ПенсФонд+МедСтрахованиеСотрудников+СуммаПрофВзноса); СуммаАлиментов=ОблСуммаАлиментами*(ПроцентАлиментов/100); Если СуммаАлиментов <>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("531.1",ПланыСчетов.Основной);; Операция.Дебет. Сотрудники= Сотрудник; Операция.Кредит.Счет = СчетПоКоду("539.3",ПланыСчетов.Основной); Операция.Кредит.Контрагенты = Сотрудник.КонтрагентАлименты.Получить(ДатаДок); Операция.Сумма = СуммаАлиментов; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Retinut alimente "+ПроцентАлиментов+" % din suma "+ОблСуммаАлиментами; КонецЕсли; //УдержаниеАльтернатива=Сотрудник.Альтернатива.Получить(ДатаДок); //Если УдержаниеАльтернатива=Перечисление.Булево.Да Тогда //ОблАльтернатива=НапрВыпл-(ПодНалогМес+ПенсФонд+МедСтрахованиеСотрудников+СуммаПрофВзноса); //СуммаАльтернатива=ОблАльтернатива*(Константа.ПроцентАльтернатива.Получить(ДатаДок)/100); //КонецЕсли; //Если СуммаАльтернатива <>0 Тогда // Операция.НоваяПроводка(); // Операция.Дебет.Счет = СчетПоКоду("531.1",ПланыСчетов.Основной);; // Операция.Дебет. Сотрудники= Сотрудник; // Операция.Кредит.Счет = СчетПоКоду("539.3",ПланыСчетов.Основной); // Операция.Кредит.Контрагенты = Сотрудник.КонтрагентАльтернатива.Получить(ДатаДок); // Операция.Сумма = СуммаАльтернатива; // Операция.НомерЖурнала = "ЗП"; // Операция.СодержаниеПроводки = "Retinut servicii alternativ "+(Константа.ПроцентАльтернатива.Получить(ДатаДок))+" % din suma "+ОблСуммаАлиментами; //КонецЕсли; Удержания=Сотрудник.Удержания.Получить(ДатаДок); УдержанияАльтернатива=Сотрудник.Удержания.Получить(ДатаДок).Альтернатива; Если Удержания.Выбран()=1 Тогда ОблПрочиеУдержания=НапрВыпл-(ПодНалогМес+ПенсФонд+МедСтрахованиеСотрудников+СуммаПрофВзноса); Если УдержанияАльтернатива=Перечисление.Булево.Да Тогда СуммаПрочУдержаний=ОблПрочиеУдержания*(Константа.ПроцентАльтернатива.Получить(ДатаДок)/100); Иначе СуммаПрочУдержаний=ОблПрочиеУдержания*(Сотрудник.ПроцентПрочихУдержаний.Получить(ДатаДок)/100); КонецЕсли; Если СуммаПрочУдержаний <>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("531.1",ПланыСчетов.Основной);; Операция.Дебет. Сотрудники= Сотрудник; Операция.Кредит.Счет = Сотрудник.Удержания.Получить(ДатаДок).СчетЗатрат; Если УдержанияАльтернатива=Перечисление.Булево.Да Тогда Операция.Кредит.Субконто(1,Сотрудник.КонтрагентАльтернатива.Получить(ДатаДок)); Иначе Операция.Кредит.Субконто(1,Сотрудник.Удержания.Получить(ДатаДок).Субконто1); КонецЕсли; Операция.Кредит.Субконто(2,Сотрудник.Удержания.Получить(ДатаДок).Субконто2); Операция.Кредит.Субконто(3,Сотрудник.Удержания.Получить(ДатаДок).Субконто3); Операция.Сумма = СуммаПрочУдержаний; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Retinut "+Удержания+"-"+(Константа.ПроцентАльтернатива.Получить(ДатаДок))+" % din suma "+ОблСуммаАлиментами; КонецЕсли; КонецЕсли; Если НапрВыпл <>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("531.0",ПланыСчетов.Основной); Операция.Дебет.Сотрудники = Сотрудник; Операция.Кредит.Счет = СчетПоКоду("531.1",ПланыСчетов.Основной); Операция.Кредит.Сотрудники = Сотрудник; Операция.Сумма = НапрВыпл; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Eliberat salariu-"+Формат(ДатаДок,"Д ММММГГГГ"); КонецЕсли; Если ПрочиеДоходы <>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("ПД",ПланыСчетов.Вспомогательный); Операция.Дебет.Сотрудники = Сотрудник; Операция.Кредит.Счет = СчетПоКоду("ПД",ПланыСчетов.Вспомогательный); Операция.Кредит.Сотрудники = Сотрудник; Операция.Сумма = ПрочиеДоходы; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Eliberat salariu-"+Формат(ДатаДок,"Д ММММГГГГ"); КонецЕсли; Если Пересчет=1 Тогда Операция.Записать(); Остаток= Ит.СККРС(СчетПоКоду("531.1",ПланыСчетов.Основной),"С",,Сотрудник,"!")-Ит.СКДРС(СчетПоКоду("531.1",ПланыСчетов.Основной),"С",,Сотрудник,"!"); КонецЕсли; КонецЦикла; Если Итог("МедСтрахованиеСотрудников") <>0 Тогда Операция.НоваяПроводка(); Операция.Кредит.Счет = СчетПоКоду("533.3",ПланыСчетов.Основной);; Операция.Дебет.Счет = СчетПоКоду("533.31",ПланыСчетов.Основной); Операция.Сумма = Итог("МедСтрахованиеСотрудников"); Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul special de medicina patron"; ОтклонениеМедСтрах=(Константа.МедСтрахованиеСотрудников.Получить(ДатаДок)/100)-(Константа.МедСтрахованиеСотрудников.Получить(Месяц)/100); СуммаОтклонениеМедСтрах=ОтклонениеМедСтрах*(Итог("НапрВыпл")-Итог("Больничный")-Итог("МатерПомощь")); Если СуммаОтклонениеМедСтрах<>0 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет = СчетПоКоду("713.9",ПланыСчетов.Основной); СпрСтатьиЗатрат = СоздатьОбъект( "Справочник.СтатьиЗатрат" ); СпрСтатьиЗатрат.НайтиПоКоду("8"); Операция.Дебет.Субконто(1,СпрСтатьиЗатрат.ТекущийЭлемент()); Операция.Кредит.Счет = СчетПоКоду("533.31",ПланыСчетов.Основной);; Операция.Сумма = СуммаОтклонениеМедСтрах; Операция.НомерЖурнала = "ЗП"; Операция.СодержаниеПроводки = "Fondul special de medicina patron"; КонецЕсли; КонецЕсли; Пересчет=0; ФлагПересчет=0; Операция.СуммаОперации = Итог("НапрВыпл"); Операция.Содержание = "Salariul din "+Формат(Месяц,"Д ММММГГГГ"); Операция.Записать(); КонецПроцедуры; |
|||
1
truba
28.11.11
✎
12:47
|
Когда то давно пенсионный фонд вычислялся при расчете налогов...
|
|||
2
Mikkei
28.11.11
✎
12:49
|
у нас из зарплаты вычисляется медстрахование = 3,5% и пенсионный фонд 6%
|
|||
3
truba
28.11.11
✎
12:50
|
ТС ну напиши хотя бы это бух типовая или нет, какой релиз?
|
|||
4
Mikkei
28.11.11
✎
12:53
|
объясняю - 1000 - это зарплата. 3,5% - медстрах, 6% пенсионный фонд , а он вычислятся после вычита медстраха а надо из общей суммы Типовая рез 7,7-19
|
|||
5
Dmitry77
28.11.11
✎
12:53
|
(0) Это Украина? в России такой фигни нет.
|
|||
6
mdocs
28.11.11
✎
12:54
|
(4) с утра пить нехорошо.
|
|||
7
Mikkei
28.11.11
✎
12:54
|
Это Молдова
|
|||
8
truba
28.11.11
✎
12:55
|
да все мы тут молдоване...
|
|||
9
mdocs
28.11.11
✎
12:55
|
(7) А как мы должны были догадаться?)
|
|||
10
DJ Anthon
28.11.11
✎
12:58
|
я вообще по нику подумал, что это эстонец...
|
|||
11
Mikkei
28.11.11
✎
12:59
|
Если ((ИтогНапрВыпл+НапрВыпл)-(ИтогБольничный+Больничный)-(ИтогМатерПомощь+МатерПомощь))>=Константа.ПределПенсФонда.Получить(ДатаОпр) Тогда
ПенсФондОпр=Константа.ПределПенсФонда.Получить(ДатаОпр)*(СтавкаПенсФонда/100); Иначе ПенсФондОпр=Окр(((ИтогНапрВыпл+НапрВыпл)-(ИтогБольничный+Больничный)-(ИтогМатерПомощь+МатерПомощь))*(СтавкаПенсФонда/100),2,1); КонецЕсли; Если ПенсФондОпр-ИтогПенсФонд>0 Тогда ПенсФонд=ПенсФондОпр-ИтогПенсФонд; //Иначе // ПенсФонд=0; КонецЕсли; //Если (НапрВыпл-Больничный-МатерПомощь)>=Константа.ПределПенсФонда.Получить(ДатаОпр) Тогда // ПенсФонд=Константа.ПределПенсФонда.Получить(ДатаОпр)*(СтавкаПенсФонда/100); //Иначе // ПенсФонд=(НапрВыпл-Больничный-МатерПомощь)*(СтавкаПенсФонда/100); //КонецЕсли; Если ДатаДок<Дата("01.01.2005") Тогда ПенсСтрахованиеСотрудников=0; ПенсСтрахованиеСотрудниковСНачГода = 0; Иначе ПенсСтрахованиеСотрудников=ПенсФонд; Если ИтНГ.ПолучитьКорСчет(,"229.2") = 1 Тогда ПенсСтрахованиеСотрудниковСНачГода = ИтНГ.КорДО()+ПенсСтрахованиеСотрудников; Иначе ПенсСтрахованиеСотрудниковСНачГода = ПенсСтрахованиеСотрудников; КонецЕсли; КонецЕсли; может здесь формула обычная начисление равно 1000(з\п)-35(мед стр)-60(пенс фонд) = |
|||
12
Злой Бобр
28.11.11
✎
13:00
|
(0) Посмотрел. Подсказываю - делай как ГБ скажет (письменно). Ну или на свой страх и риск, в зависимости от наклонностей к садо-мазо.
|
|||
13
Mikkei
28.11.11
✎
13:04
|
гб так и говорит
|
|||
14
Шапокляк
28.11.11
✎
13:04
|
(0) Пока Док.ПолучитьДокумент() = 1 Цикл
Стр = Док.Вид(); Если Док.Проведен()=1 Тогда Если Стр = "ЗарПлНапрНаВыпл" Тогда Если Док.НомерДок<>НомерДок Тогда // СуммаБольничный = 0; // Если Док.Итог("Больничный")<>0 Тогда // Пока Док.ПолучитьСтроку() = 1 Цикл // СотрудникОпр=Док.Сотрудник; // Если СотрудникОпр=Сотрудник Тогда // СуммаБольничный = Док.Больничный; // КонецЕсли; // КонецЦикла; // по строкам документа // КонецЕсли; // Если СуммаБольничный<>0 Тогда // Если ДатаДок<Дата("08.09.2006") Тогда // // ИначеЕсли НачГода(Месяц)<НачГода(ДатаДок) Тогда // // Иначе // ИтогоБольничный=ИтогоБольничный+СуммаБольничный; // КонецЕсли; // КонецЕсли; Если Док.Месяц=Месяц Тогда Пока Док.ПолучитьСтроку() = 1 Цикл СотрудникОпр=Док.Сотрудник; Если СотрудникОпр=Сотрудник Тогда СуммаНапрВыпл = Док.НапрВыпл; ИтогБольничный=ИтогБольничный+Док.Больничный; ИтогМатерПомощь=ИтогМатерПомощь+Док.МатерПомощь; СуммаПенсФонд = Док.ПенсФонд; ИтогНапрВыпл=ИтогНапрВыпл+СуммаНапрВыпл; ИтогПенсФонд=ИтогПенсФонд+СуммаПенсФонд; КонецЕсли; в молдавских конфах не сильна, а в самом коде у вас есть некоторые странности. Вот в этом куске прежде чем Док.ПолучитьСтроку() надо бы Док.ВыбратьСтроки(); наверно? (11)ПенсФонд расчитывается после подытоживания СуммаНапрВыпл из документов "ЗарПлНапрНаВыпл" с разности между этим итогом и больничными. А в сам документ как эти строки попадают - они ведь как-то расчитываются? Вы бы лучше с цифрами как-то пример привели, типа ЗП 1000 из них медстрах столько-то и Пенс столько-то. А должно быть так-то. |
|||
15
Mikkei
28.11.11
✎
13:05
|
1000(з\п)-35(мед стр)-60(пенс фонд)
|
|||
16
Mikkei
28.11.11
✎
13:06
|
1000 - это зарплата. 3,5% - медстрах, 6% пенсионный фонд
|
|||
17
Злой Бобр
28.11.11
✎
13:19
|
(13) Ну делай как ГБ говорит. Только то что есть не удаляй а заверни в :
Если делаемпостарому=1 Тогда // тут то что есть Иначе // тут пиши свой мануал КонецЕсли; |
|||
18
Шапокляк
28.11.11
✎
13:42
|
в(0) "Объясняю - вычисляется после вычета из основного после вычита медстраха. А надо из основного", в (16) "1000 - это зарплата. 3,5% - медстрах, 6% пенсионный фонд". Ну так что не так-то? Цифры сходятся или нет? Насколько важен порядок?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |