Create procedure dbo.job_подсчетСтоимостиНакладных
as
declare @CardID int,
@DilerCardID int,
@SalerID int,
@BuyerID int,
@ShortAccountID int,
@AccountID int,
@Quantity int,
@OldQuantity int,
@NewQuantity int,
@DateOfShortAccount datetime,
@DayOfChanges nvarchar(255),
@strSQL nvarchar (1024),
@CurrentValueOfCourseUSD money,
@CurrentCostPriceOfDilerCard_RUB money,
@CurrentOurPriceOfDilerCard_RUB money,
@RetCode int
SET @RetCode=50001
SET NOCOUNT ON
/* Объявляем набор записей для запроса */
declare o_curs cursor for
Select КодКороткойНакладной, КодТовара, Количество From СтрокиКороткойНакладной
begin
/* Открываем набор записей и извлекаем первую запись */
open o_curs
fetch o_curs into @ShortAccountID, @DilerCardID, @Quantity
/* Если набор записей пуст, выходим из процедуры */
if(@@FETCH_STATUS = -2)
begin
close o_curs
return
end
/* Цикл обработки всех строк таблицы СтрокиКороткойНакладной */
while (@@FETCH_STATUS = 0)
begin
/* Получим значение курса доллара на день выписки накладной*/
SELECT @CurrentValueOfCourseUSD = КурсДолл.КурсДолл,
@Quantity = СтрокиКороткойНакладной.Количество,
@CurrentCostPriceOfDilerCard_RUB =
Case
when [ЦенаПрРуб] = 0 then [ЦенаПрДол] * @CurrentValueOfCourseUSD
when [ЦенаПрРуб] <> 0 then [ЦенаПрРуб]
End
FROM ТоварыДилера
INNER JOIN (КурсДолл
INNER JOIN (СтрокиКороткойНакладной
INNER JOIN КороткаяНакладная
ON СтрокиКороткойНакладной.КодКороткойНакладной = КороткаяНакладная.КодКороткойНакладной)
ON КурсДолл.Дата = КороткаяНакладная.ДатаВыпискиНакладной)
ON ТоварыДилера.КодТовараДилера = СтрокиКороткойНакладной.КодТовара
WHERE
(((СтрокиКороткойНакладной.КодКороткойНакладной)=@ShortAccountID) AND ((СтрокиКороткойНакладной.КодТовара)=@DilerCardID))
/*
If(@CurrentCostPriceOfDilerCard_RUB = 0)
begin
Rollback Tran
Raiserror @RetCode 'ВНИМАНИЕ!!! Продажная цена карты составляет 0, необходимо изменить продажную цену.'
end
/* Посчитаем продажную стоимость данного количества карт данного номинала на день выписки накладной*/
*/
UPDATE КороткаяНакладная
Set СуммаПоНакладнойRUB = СуммаПоНакладнойRUB + (@Quantity * @CurrentCostPriceOfDilerCard_RUB) /*,
ЗакСтПоНакладнойRUB = ЗакСтПоНакладнойRUB + (@Quantity * @CurrentOurPriceOfDilerCard_RUB)*/
WHERE (((КодКороткойНакладной)=@ShortAccountID))
end
end
|