Вход в личный кабинет
Для получения доступа к форуму необходимо
авторизоваться
или
зарегистрироваться
на сайте.
{{ formTitle ? formTitle : 'Заказ обратного звонка' }}
{{ formDescription }}
Сообщить об ошибке
Коллеги! Подскажите пжл как провести заказ покупателя, если по договору должна быть предоплата 10% и способ закрытия сделок - по расчетным документам. При этом, предоплата будет оплачена покупателем после того, как мы сформируем заказ покупателя и скажем ему сколько надо оплатить.
Правильно ли я понимаю методологию учета.
1. если способ закрытия сделок - по расчетным документам, то заказ покупателя не оформляется.
2. если необходимо оформлять заказы покупателя - тогда способ закрытия сделок по счетам и заказам.
Тогда
1. присутствует ошибка: при наличии условия предоплаты по заказу и отсутствии остатка денег заказ все равно не проводится...
2. Есть вопрос - как контролируется задолженность по сроку оплаты если есть отсрочка платежа - от даты заказа или счета, наверное? Или от даты отгрузки?
В УПП сделано достаточно разумно - в любом случае контроль наличия предоплаты осуществляется при проведении РТУ (РТ в нашем случае).
И если заказ не является расчетным документом - зачем в нем контролировать предоплату?
Предлагаю что-то поправить... Для приближения к логике продаж
Кроме этого, хотела уточнить - что делать с ошибкой проведения? если условия закрытия сделок "по счетам и заказам" и есть условие предоплаты в заказе - он должен проводиться или нет? Сейчас не проводится..
Кроме этого, хотела уточнить - что делать с ошибкой проведения? если условия закрытия сделок "по счетам и заказам" и есть условие предоплаты в заказе - он должен проводиться или нет? Сейчас не проводится..
"Ввод на основании непроведенного документа запрещен"
оплата по заказу даже не создается в этом случае, потому что документ-основание для чека на оплату должен быть проведен.
"Ввод на основании непроведенного документа запрещен"
В УПП сделано достаточно разумно - в любом случае контроль наличия предоплаты осуществляется при проведении РТУ (РТ в нашем случае).
В АА есть право "Разрешить отгрузку при наличии задолженности по договору", есть право "Проверка превышения максимального кредита контрагента" - сумма максимального кредита указывается в договоре.
По поводу контроля предоплаты при взаиморасчетах по расчетным документам. Сделаем проведение заказа без контроля предоплаты.
Для исправления в заказе покупателя нужно заменить процедуру ОбработкаПроведения()
не забудьте на всякий случай сначало сохранить старую процедуру.
Процедура ОбработкаПроведения(Отказ, Режим)
Если НЕ дкОбработкаПроведения(ЭтотОбъект, Отказ, Режим) Тогда Возврат; КонецЕсли;
Если ДоговорВзаиморасчетов.СпособЗакрытияСделок = Перечисления.СпособЗакрытияСделок.ПоСчетамИЗаказам Тогда
//Проверим процент предоплаты по документу
Если НЕ обПраво("РазрешитьЗаказПокупателяБезПредоплаты",Права,,ЭтотОбъект) Тогда
Если СуммаДокумента<>0 И СуммаПредоплаты=0 И ПроцентПредоплаты=0 Тогда
Сообщить("У Вас нет прав приема заказа покупателя без предоплаты!",СтатусСообщения.Важное);
Отказ=Истина;
Возврат;
КонецЕсли;
КонецЕсли;
Если СуммаПредоплаты>0 Тогда
//Проверим сумму предоплаты по заказу
Сделка=Ссылка;
СуммаОплаты=орПолучитьОстатокПоСделке(Сделка,МоментВремени(),Истина,ДоговорВзаиморасчетов,ВалютаДокумента,КурсДокумента);
Если СуммаОплаты<>Неопределено Тогда
Если СуммаПредоплаты>(СуммаДокумента-СуммаОплаты) Тогда
дкСообщитьРезультат(" Сумма предоплаты по заказу составляет "+Формат(СуммаПредоплаты,"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(ВалютаДокумента.Наименование)+".
| Оплачено "+Формат(СуммаДокумента-СуммаОплаты,"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(ВалютаДокумента.Наименование)+".
| Для проведения заказа необходимо оплатить "+Формат(СуммаПредоплаты-(СуммаДокумента-СуммаОплаты),"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(ВалютаДокумента.Наименование)+".",,ЭтотОбъект);
Отказ=Истина;
дкВыводРезультатовОбработки(ЭтотОбъект,Отказ);
Возврат;
КонецЕсли;
Иначе
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаРасход КАК Сумма,
| ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрРасход КАК СуммаУпр
|ИЗ
| РегистрНакопления.ВзаиморасчетыКомпании.Обороты(,,,
| ДоговорВзаиморасчетов = &ДоговорВзаиморасчетов И
| Контрагент = &Контрагент И
| (Сделка = &Сделка ИЛИ Сделка.ДокументОснование = &Сделка)) КАК ВзаиморасчетыКомпанииОстаткиИОбороты";
Запрос.УстановитьПараметр("ДоговорВзаиморасчетов",ДоговорВзаиморасчетов);
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Запрос.УстановитьПараметр("Сделка",Ссылка);
тзОплаты=Запрос.Выполнить().Выгрузить();
Если ДоговорВзаиморасчетов.ВалютаВзаиморасчетов=ВалютаДокумента Тогда
Оплачено=обПересчет(тзОплаты.Итог("Сумма"),ДоговорВзаиморасчетов.ВалютаВзаиморасчетов,Дата,ВалютаДокумента,Дата,РежимОкругления.Окр15как20);
Если СуммаПредоплаты>Оплачено Тогда
дкСообщитьРезультат(" Сумма предоплаты по заказу составляет "+Формат(СуммаПредоплаты,"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(ВалютаДокумента.Наименование)+".
| Оплачено "+Формат(Оплачено,"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(ВалютаДокумента.Наименование)+".
| Для проведения заказа необходимо оплатить "+Формат(СуммаПредоплаты-Оплачено,"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(ВалютаДокумента.Наименование)+".",,ЭтотОбъект);
Отказ=Истина;
дкВыводРезультатовОбработки(ЭтотОбъект,Отказ);
Возврат;
КонецЕсли;
Иначе
ОплаченоУпр=тзОплаты.Итог("СуммаУпр");
СуммаПредоплатыУпр=обПересчет(СуммаПредоплаты,ВалютаДокумента,Дата,Константы.ВалютаУправленческогоУчетаКомпании.Получить(),?(обЗначениеНеЗаполнено(ЭтотОбъект.КурсВалютыУпр), Дата, ЭтотОбъект.КурсВалютыУпр),РежимОкругления.Окр15как20);
Если СуммаПредоплатыУпр>ОплаченоУпр Тогда
дкСообщитьРезультат(" Сумма предоплаты по заказу составляет "+Формат(СуммаПредоплатыУпр,"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(Константы.ВалютаУправленческогоУчетаКомпании.Получить().Наименование)+".
| Оплачено "+Формат(ОплаченоУпр,"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(Константы.ВалютаУправленческогоУчетаКомпании.Получить().Наименование)+".
| Для проведения заказа необходимо оплатить "+Формат(СуммаПредоплатыУпр-ОплаченоУпр,"ЧЦ=15; ЧДЦ=2; ЧН=0.00")+" "+СокрЛП(Константы.ВалютаУправленческогоУчетаКомпании.Получить().Наименование)+".",,ЭтотОбъект);
Отказ=Истина;
дкВыводРезультатовОбработки(ЭтотОбъект,Отказ);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если обПраво("ПроверкаМаксимальногоПревышенияКредитаКонтрагента",Права,,ЭтотОбъект) Тогда
// получим долг
СтруктураОтбора=Новый Структура();
СтруктураОтбора.Вставить("Контрагент",Контрагент);
СтруктураОтбора.Вставить("ДоговорВзаиморасчетов",ДоговорВзаиморасчетов);
//получаем текущие остатки, т.к. оплата может быть позже заказа
тзДолги=РегистрыНакопления.ВзаиморасчетыКомпании.Остатки(,СтруктураОтбора,,"Сумма,СуммаУпр");
Долг=тзДолги.Итог("Сумма");
СуммаДокументаВВалютеДоговора=обПересчет(СуммаДокумента,ВалютаДокумента,КурсДокумента,ДоговорВзаиморасчетов.ВалютаВзаиморасчетов,Дата);
Если (Долг+СуммаДокументаВВалютеДоговора)>ДоговорВзаиморасчетов.МаксимальныйКредит Тогда
ВалютаВзаиморасчетов=СокрЛП(ДоговорВзаиморасчетов.ВалютаВзаиморасчетов.Наименование);
дкСообщитьРезультат(" Сумма долга по договору составляет "+Формат(Долг,"ЧДЦ=2; ЧН=0.00")+" "+ВалютаВзаиморасчетов+".
| Сумма заказа составляет "+Формат(СуммаДокументаВВалютеДоговора,"ЧДЦ=2; ЧН=0.00")+" "+ВалютаВзаиморасчетов+".
| Итого "+Формат(Долг+СуммаДокументаВВалютеДоговора,"ЧДЦ=2; ЧН=0.00")+" "+ВалютаВзаиморасчетов+".
| А максимальный кредит по договору "+Формат(ДоговорВзаиморасчетов.МаксимальныйКредит,"ЧДЦ=2; ЧН=0.00")+" "+ВалютаВзаиморасчетов+".",,ЭтотОбъект);
//Отказ=Истина;
КонецЕсли;
КонецЕсли;
Заказывать=Истина;
Резервировать=((ХозОперация=Справочники.ХозОперации.ЗаказРезервированиеПокупателя) ИЛИ (ХозОперация=Справочники.ХозОперации.РезервированиеПокупателя));
// проводим заказ покупателя
НаборЗаписейЗаказыПокупателей=Движения.ЗаказыПокупателей;
НаборЗаписейЗаказыПокупателей.РежимПроведения=Режим;
НаборЗаписейЗаказыПокупателей.ДокументОбъект=ЭтотОбъект;
НаборЗаписейЗаказыПокупателей.РезультатЗапросаПоТоварам=Неопределено;
НаборЗаписейЗаказыПокупателей.Контрагент=Контрагент;
НаборЗаписейЗаказыПокупателей.Заказ=Ссылка;
НаборЗаписейЗаказыПокупателей.СкладКомпании=СкладКомпании;
НаборЗаписейЗаказыПокупателей.Заказывать=Заказывать;
НаборЗаписейЗаказыПокупателей.Резервировать=Резервировать;
Отказ=НЕ НаборЗаписейЗаказыПокупателей.Приход() ИЛИ Отказ;
Если Резервировать Тогда
// резервирование заказа покупателя
НаборЗаписейОстатки=Движения.ОстаткиТоваровКомпании;
НаборЗаписейОстатки.РежимПроведения=Режим;
НаборЗаписейОстатки.ДокументОбъект=ЭтотОбъект;
НаборЗаписейОстатки.РезультатЗапросаПоТоварам=Неопределено;
НаборЗаписейОстатки.СкладКомпании=СкладКомпании;
НаборЗаписейОстатки.Приходовать=Ложь;
НаборЗаписейОстатки.Резервировать=Резервировать;
НаборЗаписейОстатки.ДвиженияПоРознице=Ложь;
Отказ=НЕ НаборЗаписейОстатки.Приход() ИЛИ Отказ;
КонецЕсли;
// двигаем границу последовательности заказов
Если Режим<>РежимПроведенияДокумента.Оперативный ИЛИ ЗначениеЗаполнено(ДополнительныеСвойства.ЗаказБыл) Тогда
НаборЗаписейГраницыЗаказы = РегистрыСведений.ГраницыЗаказы.СоздатьНаборЗаписей();
Если Режим<>РежимПроведенияДокумента.Оперативный Тогда
НаборЗаписейГраницыЗаказы.Заказ = Ссылка;
НаборЗаписейГраницыЗаказы.МоментВремени = Дата;
НаборЗаписейГраницыЗаказы.ЗаказБыл = ДополнительныеСвойства.ЗаказБыл;
НаборЗаписейГраницыЗаказы.МоментВремениБыл = ДополнительныеСвойства.МоментВремениБыл;
Иначе
НаборЗаписейГраницыЗаказы.Заказ = ДополнительныеСвойства.ЗаказБыл;
НаборЗаписейГраницыЗаказы.МоментВремени = ДополнительныеСвойства.МоментВремениБыл;
НаборЗаписейГраницыЗаказы.ЗаказБыл = Неопределено;
НаборЗаписейГраницыЗаказы.МоментВремениБыл = Неопределено;
КонецЕсли;
НаборЗаписейГраницыЗаказы.ДокументСсылка = Ссылка;
НаборЗаписейГраницыЗаказы.ИзменитьГраницу();
КонецЕсли;
// выведем сообщения об ошибках и предупреждениях
дкВыводРезультатовОбработки(ЭтотОбъект,Отказ);
КонецПроцедуры // ОбработкаПроведения()
В АА есть право "Разрешить отгрузку при наличии задолженности по договору", есть право "Проверка превышения максимального кредита контрагента" - сумма максимального кредита указывается в договоре.
По поводу первого права - я не могу его давать всем продажникам, это нарушение политики безопасности.
А вот второе - уже ближе к бизнесу. Это будет работать при ведении расчетов по заказам и счетам?
А вот второе - уже ближе к бизнесу. Это будет работать при ведении расчетов по заказам и счетам?
Да, и ограничение на максимальный кредит это максимальная сумма долга в целом по договору, а не по определенной сделке.
А если оплата безналом - деньги только через сутки приходят