Вопрос

НДС в счетах

Добрый день!

Счета выставляются от двух компаний, одна на ОСНО, вторая - УСН.

Для первой нужно указывать НДС в счетах, для второй - нет.

У меня мысль сделать в "Реквизиты плательщика" у Контрагента флажок "Плательщик НДС" и на него завязываться в дальнейшем, но это надо логику добавления счетов переделывать, макросы для печатной формы дописывать для формирования строки "Включая НДС"/"Без налога" и тд...

Может есть способ проще?

Нравится

8 комментариев

Вряд ли получится проще. Кстати, в общем случае еще на разные группы товаров может быть разный НДС. Потому мы для вычисления НДС создаем 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 попадает в печатную форму как отдельный объект. Полная аналогия с объектом "Продукт в счете" 



Без него не обойтись, если решать задачу в общем случае, когда на разные продукты в счете может применяться своя ставка НДС

Добавить комментарий

Владимир Соколов пишет:

да, именно это я и подразумевал, не совсем ясно выразился 

Показать все комментарии