Расчёт почтовых сборов в алиментах (1с 8.0 ЗУП редакция 2.1 (2.1.9.2))
27.12.2007
20:46
#1
не могу правильно расчитать сумму почтового сбора при превышении суммы перевода 1000р(и не только расчет там по шкале), так как тогда за перевод 1 т.р. берётся 57 р и 4 % от остатка , тоесть если переводим 1500 то должно браться 57р+20р ( 4 мя процентами от остатка тоесть от 500р) = 77р , естественно если вводить процент сбора в исполнительный лист то счетается 4% от 1500 р ... как побороть? где шкалы почтового сбора? , заранее благодарен за ответы.
28.12.2007
07:36
#2
В 7.7 я модифицировал модуль расчёта, чтобы реализовать шкалу почтовых переводов.
29.12.2007
09:17
#3
"В ЗиК 7.7 в ВидРасчета.ПочтовыйСбор я делал так:
// Почтовый сбор при пересылке алиментов исчисляется за каждый
// полный или не полный рубль по исполнительному листу
СуммаПоИспЛисту = ЖурналРасчетовЗарплата.Результат;
СуммаПоИспЛисту = ?(Цел(СуммаПоИспЛисту) = СуммаПоИспЛисту, СуммаПоИспЛисту, Цел(СуммаПоИспЛисту) + 1);
Результат = СуммаПоИспЛисту*Документ.ПроцентПочтовогоСбора/100;
// изменение
Если Документ.СпособПеречисленияПоИЛ=Перечисление.СпособыПеречисленийПоИспЛисту.ПочтовыйПеревод Тогда
Если Документ.ПроцентПочтовогоСбора = 0 Тогда
Если СуммаПоИспЛисту <= 1000 Тогда
Результат = 7 + Окр(СуммаПоИспЛисту*5/100,2);
ИначеЕсли (СуммаПоИспЛисту > 1000) и (СуммаПоИспЛисту <= 5000) Тогда
Результат = 57 + Окр((СуммаПоИспЛисту - 1000)*4/100,2);
ИначеЕсли (СуммаПоИспЛисту > 5000) Тогда
Результат = 217 + Окр((СуммаПоИспЛисту - 5000)*2/100,2);
КонецЕсли;
КонецЕсли;
КонецЕсли;
"
// Почтовый сбор при пересылке алиментов исчисляется за каждый
// полный или не полный рубль по исполнительному листу
СуммаПоИспЛисту = ЖурналРасчетовЗарплата.Результат;
СуммаПоИспЛисту = ?(Цел(СуммаПоИспЛисту) = СуммаПоИспЛисту, СуммаПоИспЛисту, Цел(СуммаПоИспЛисту) + 1);
Результат = СуммаПоИспЛисту*Документ.ПроцентПочтовогоСбора/100;
// изменение
Если Документ.СпособПеречисленияПоИЛ=Перечисление.СпособыПеречисленийПоИспЛисту.ПочтовыйПеревод Тогда
Если Документ.ПроцентПочтовогоСбора = 0 Тогда
Если СуммаПоИспЛисту <= 1000 Тогда
Результат = 7 + Окр(СуммаПоИспЛисту*5/100,2);
ИначеЕсли (СуммаПоИспЛисту > 1000) и (СуммаПоИспЛисту <= 5000) Тогда
Результат = 57 + Окр((СуммаПоИспЛисту - 1000)*4/100,2);
ИначеЕсли (СуммаПоИспЛисту > 5000) Тогда
Результат = 217 + Окр((СуммаПоИспЛисту - 5000)*2/100,2);
КонецЕсли;
КонецЕсли;
КонецЕсли;
"
29.12.2007
11:58
#4
"Спасибо за ответы,думал что в стандартной конфе по уму всё сделано просто 
поправил так:
вводим 777% и получаем по шкале,вводим процент нормальный и счетает как было,мож на почте поставят фикс.процент хз...
ИначеЕсли СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПочтовыйСбор Тогда
//Делаем нормальный почтовый сбор
Если СтрокаДвижений[ПоказательРазмер] = 777 Тогда
Если ИсходныеДанные.РазмерПочтовогоПеревода <= 1000 Тогда
Результат = 7 + Окр(ИсходныеДанные.РазмерПочтовогоПеревода*5/100,2);
ИначеЕсли (ИсходныеДанные.РазмерПочтовогоПеревода > 1000) и (ИсходныеДанные.РазмерПочтовогоПеревода <= 5000) Тогда
Результат = 57 + Окр((ИсходныеДанные.РазмерПочтовогоПеревода - 1000)*4/100,2);
ИначеЕсли (ИсходныеДанные.РазмерПочтовогоПеревода > 5000) Тогда
Результат = 217 + Окр((ИсходныеДанные.РазмерПочтовогоПеревода - 5000)*2/100,2);
КонецЕсли;
Иначе
Результат = СтрокаДвижений[ПоказательРазмер] / 100 *ИсходныеДанные.РазмерПочтовогоПеревода;
КонецЕсли;
"
поправил так:
вводим 777% и получаем по шкале,вводим процент нормальный и счетает как было,мож на почте поставят фикс.процент хз...
ИначеЕсли СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПочтовыйСбор Тогда
//Делаем нормальный почтовый сбор
Если СтрокаДвижений[ПоказательРазмер] = 777 Тогда
Если ИсходныеДанные.РазмерПочтовогоПеревода <= 1000 Тогда
Результат = 7 + Окр(ИсходныеДанные.РазмерПочтовогоПеревода*5/100,2);
ИначеЕсли (ИсходныеДанные.РазмерПочтовогоПеревода > 1000) и (ИсходныеДанные.РазмерПочтовогоПеревода <= 5000) Тогда
Результат = 57 + Окр((ИсходныеДанные.РазмерПочтовогоПеревода - 1000)*4/100,2);
ИначеЕсли (ИсходныеДанные.РазмерПочтовогоПеревода > 5000) Тогда
Результат = 217 + Окр((ИсходныеДанные.РазмерПочтовогоПеревода - 5000)*2/100,2);
КонецЕсли;
Иначе
Результат = СтрокаДвижений[ПоказательРазмер] / 100 *ИсходныеДанные.РазмерПочтовогоПеревода;
КонецЕсли;
"
Читают тему
(гостей: 1)