Добрый день!
Счета выставляются от двух компаний, одна на ОСНО, вторая - УСН.
Для первой нужно указывать НДС в счетах, для второй - нет.
У меня мысль сделать в "Реквизиты плательщика" у Контрагента флажок "Плательщик НДС" и на него завязываться в дальнейшем, но это надо логику добавления счетов переделывать, макросы для печатной формы дописывать для формирования строки "Включая НДС"/"Без налога" и тд...
Может есть способ проще?
Нравится
Вряд ли получится проще. Кстати, в общем случае еще на разные группы товаров может быть разный НДС. Потому мы для вычисления НДС создаем VIEW, и уже его результаты отображаем на карточке, в общей сумме и на печатной форме. С VIEW получается намного проще логика
Владимир Соколов,
не могли бы вы чуть более подробно описать идею с VIEW?
Видимо, речь о том, что создать в базе View, где средствами SQL вычислить нужные значения. Затем создать в конфигурации схему, привязанную вместо таблицы к этому View. Названия колонок и их типы нужно будет вручную задать аналогично. И с этой схемой работать в печатных формах как с обычной таблицей.
Примерно так (постарался вырезать лишнюю информацию, относящуюся к проекту, но не проверял на работоспособность.
Единственное, что в СНГ немного по другой методике НДС считается (у нас он считается как % от суммы всех продуктов, а в СНГ, насколько я знаю, как сумма НДС всех продуктов)
CREATE VIEW [dbo].[UsrInvoiceTax]
AS
SELECT MIN(p.Id) As Id
,i.CreatedOn
,i.CreatedById
,i.ModifiedOn
,i.ModifiedById
,p.InvoiceId As UsrInvoiceId
,p.[TaxId] As UsrTaxId
,p.[DiscountTax] As UsrDiscountTax
,CAST ( SUM((Quantity*PrimaryPrice) - PrimaryDiscountAmount) AS DECIMAL(18,2)) As UsrTotalPrimaryAmount
, CAST (SUM((Quantity*PrimaryPrice*i.CurrencyRate) - PrimaryDiscountAmount*i.CurrencyRate)AS DECIMAL(18,2)) As UsrTotalAmount
,t.Name As UsrTaxName
,ROUND((SUM(Quantity*PrimaryPrice- PrimaryDiscountAmount))*p.DiscountTax/100,2) As UsrTotalTaxPrimaryAmount
,CAST (ROUND((SUM((Quantity*PrimaryPrice-PrimaryDiscountAmount)*i.UsrCurrencyRate ))*p.DiscountTax/100,2)AS DECIMAL(18,2)) As UsrTotalTaxAmount
FROM [dbo].[InvoiceProduct] p
LEFT OUTER JOIN [dbo].[Tax] t ON t.Id=p.TaxId
LEFT OUTER JOIN [dbo].[Invoice] i ON i.Id=p.InvoiceId
GROUP BY i.CreatedById
,i.ModifiedOn
,i.ModifiedById, i.CreatedOn,p.InvoiceId, p.TaxId
,p.DiscountTax
,t.Name
GO
Коллеги,
создал View
CREATE VIEW dbo.VwZLInvoice AS SELECT i.Id, i.Number, i.StartDate, IIF(SUM(CASE WHEN ZLVATPayer = 1 THEN p.TaxAmount ELSE 0 END) <> 0, 'В том числе НДС:', 'Без налога (НДС):') VATSumCaption, SUM(CASE WHEN ZLVATPayer = 1 THEN p.TaxAmount ELSE 0 END) ZLInvoiceVATSum FROM dbo.Invoice i LEFT JOIN dbo.InvoiceProduct p ON i.Id = p.InvoiceId LEFT JOIN dbo.AccountBillingInfo abi ON i.SupplierBillingInfoId = abi.Id GROUP BY i.Id, i.Number, i.StartDate
далее создал объект с такими же колонками, как у View, а как мне теперь сделать что бы колонки этого объекта стали доступны для добавления при редактировании печатной формы для раздела Счета?
Владимир Соколов,
я же правильно понимаю, что вьюшка вашего варианта попадет в колонки печатной формы как "Название объекта (по колонке Счет)"?
Не совсем это мне подходит, т.к. строковые колонки в печатную форму добавить потом не удастся, только такие, к которым можно применить агрегирующие функции.
Возможен вариант создания View - копии объекта с дополнительными вычисляемыми колонками. Это классная техника, но она годится только для таких задач, как подготовка данных для экспорта, ибо для использования в печатных формах придется замещать родителя и, скорее всего, создавать триггеры для добавления/удаления/обновления.
Пока мне видится более приемлемым традиционный вариант с добавлением нужных полей в объект и логикой в карточках объектов, продолжаю исследования :)
Борис Леонов пишет:
я же правильно понимаю, что вьюшка вашего варианта попадет в колонки печатной формы как "Название объекта (по колонке Счет)"?
Не совсем. Эта VIEW попадает в печатную форму как отдельный объект. Полная аналогия с объектом "Продукт в счете"
Без него не обойтись, если решать задачу в общем случае, когда на разные продукты в счете может применяться своя ставка НДС
Добавить комментарий
Владимир Соколов пишет:
да, именно это я и подразумевал, не совсем ясно выразился