SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO SET NOCOUNT ON GO PRINT 'Begin Jeeves_Esales_AddOrderRow' GO PRINT 'Begin Jeeves_Esales_AddOrderRow' PRINT '***************************************************' PRINT '* *' PRINT '* Jeeves_Esales_AddOrderRow *' PRINT '* *' PRINT '***************************************************' GO IF OBJECT_ID( 'Jeeves_Esales_AddOrderRow', 'P' ) IS NOT NULL BEGIN DROP PROCEDURE Jeeves_Esales_AddOrderRow END GO IF (SELECT COUNT(*) FROM xspr WHERE SprTrgName = 'Jeeves_Esales_AddOrderRow' AND SprTrgType = 'P' ) > 0 BEGIN UPDATE xspr SET beskrivning=beskrivning WHERE SprTrgName = 'Jeeves_Esales_AddOrderRow' AND SprTrgType = 'P' END ELSE BEGIN INSERT INTO xspr(SprTrgName,SprTrgType,RowCreatedDt) VALUES('Jeeves_Esales_AddOrderRow' , 'P', GETDATE() ) END GO ---------------------------------------------------- CREATE procedure Jeeves_Esales_AddOrderRow @c_ForetagKod smallint, @c_OrderNumber int, @c_webUserName Jeeves_StrVarChar64 = null, @c_CompanyNo Jeeves_StrVarChar32 = null, @c_PersSign Jeeves_StrVarChar6, @c_LangID smallint = null, @c_ItemNo Jeeves_StrVarChar32 = null, @c_Qty Jeeves_Qty = 0, @c_QtyAltEnh Jeeves_Qty = 0, @c_RequestedDate Jeeves_StrVarChar10 = null, @c_BatchId Jeeves_StrVarChar16 = null, @c_ArtSerieNr Jeeves_StrVarChar32 = null, @c_OrderType smallint = null, @c_Run_Type char(1) = null, @c_TemplateRowID int = null, @c_Edit Jeeves_StrVarCharMax = null, @c_EditExt Jeeves_StrVarCharMax = null, @c_LagStalle Jeeves_StrVarChar10 = null, @c_AltEnhetKod Jeeves_StrVarChar10 = null, @c_AllocateAvailable smallint = 0, @c_OverrideCreditLimit char(1) = 0, @o_OrderRow int = null output, @o_NextQty Jeeves_Qty = null output, @o_NextDate DateTime = null output, @o_LastQty Jeeves_Qty = null output, @o_LastDate DateTime = null output, @o_AllocatedQty Jeeves_Qty = null output, @o_AllocatedDate DateTime = null output as set nocount on --set ansi_warnings o f f --set concat_null_yields_null o f f --set ansi_nulls o f f --set ansi_padding o f f declare @withPriceCalc char(1) select @withPriceCalc = 'Y' declare @oh_OrdStat smallint, @orp_OrdRadSt smallint, @orp_OrdRadNr int, @orp_vbordradsum money, @orp_vb_prisinklmoms Jeeves_Amount, @orp_Vb_Pris Jeeves_Amount, @wr Jeeves_StrVarChar256, @x int, @dbe int, @dbc int, @dbp int, @Enter_TranCount as int, @NewLine as nvarchar(2), @PgmId Jeeves_StrVarChar256, @salj_saljare Jeeves_StrVarChar32, @kus_kundrabatt float, @kus_rabklass smallint, @kus_Kreditsparr char(1), @kus_kundsaldo money, @kus_ordsum money, @kus_kundkredlim money, @kus_momskod smallint, @kus_offnr Jeeves_StrVarChar10, @kus_KundRabattKod0 char(1), @kus_KundRabattKod1 char(1), @kus_KundRabattKod2 char(1), @kus_PrisListaKundSpec int, @kus_KundKategoriKod smallint, @kus_tradecalcmarkup float, @kus_tradefsgmarkup float, @kus_AddArtEjAktiv char(1), @ar_ArtProdKlass Jeeves_StrVarChar4, @ar_OrdvRabKod smallint, @ar_artkundrabkod char(1), @ar_artrabklass smallint, @ar_momskod smallint, @ar_ordTyp smallint, @sy1_PrisListaInklMoms char(1), @sy1_momskod smallint, @oh_vbordsum money, @oh_ordsum money, @oh_lagstalle Jeeves_StrVarChar10, @Today datetime, @Momssats float, @CompanyNo Jeeves_StrVarChar20, @ContactNo int, @prislista int, @Saljare Jeeves_StrVarChar32, @ar_artfsgforp float, @ar_palaggdelforp float, @ar_palaggdelforpbelopp char(1), @ar_lagstalle Jeeves_StrVarChar10, @sy1_lagstalle Jeeves_StrVarChar10, @ValKurs ztCurrencyRate, @valkod Jeeves_StrVarChar4, @Samfaktutskr char(1), @Allowpurchase char(1), @PCode int, @sy1_artbeskr_2_orp char(1), @ArtBeskr Jeeves_StrVarChar64, @ArtBeskr2 Jeeves_StrVarChar256, @LangID smallint, @DateAvailable DateTime, @sy1_rbn char(1), @sy1_PrisListaStaffling int, @sy1_KodAlternativEnhet int, @AltEnhetKod Jeeves_StrVarChar10, @AltEnhetOmrFaktor ZtPurQty2Stock, @InkAvt int, @LevNr JEEVES_CompanyNo, @ArtLevPrior smallint, @ArtHuvudAvt JEEVES_Boolean, @SALES170 JEEVES_Boolean, @SALES190 smallint, @SALES048 smallint, @SALES007 smallint, @KostBar Jeeves_StrVarChar8, @KostStalleKod Jeeves_StrVarChar8, @K4 Jeeves_StrVarChar8, @K5 Jeeves_StrVarChar8, @K6 Jeeves_StrVarChar8, @K7 Jeeves_StrVarChar8, @AutoRegel Jeeves_StrVarChar4, @AnskaffningTillv smallint select @LangID = @c_LangID exec Jeeves_Esales_GetUserInfo @c_IntrnCoNo = @c_ForetagKod, @c_webUserName = @c_webUserName, @c_CompanyNo = @c_CompanyNo, @o_LangID = @LangID output, @o_CompanyNo = @CompanyNo output, @o_ContactNo = @ContactNo output, @o_Prislista = @Prislista output, @o_Saljare = @Saljare output, @o_Valkod = @Valkod output, @o_ValKurs = @Valkurs output --Adding from a template if (isnull(@c_TemplateRowID,-1) > -1) begin if exists(select 1 from web_orp where ConnToSQLIDENTITY = @c_TemplateRowID) begin declare cr_items cursor static forward_only local for select artnr, ordantal from web_orp where ConnToSQLIDENTITY = @c_TemplateRowID open cr_items while 1=1 begin fetch next from cr_items into @c_ItemNo, @c_Qty if @@Fetch_Status<>0 BREAK if @@Error<>0 BREAK if ( isnull(@c_Qty,0) > 0) and (@c_ItemNo is not null) begin exec @x = Jeeves_Esales_AddOrderRow @c_ForetagKod = @c_ForetagKod, @c_OrderNumber = @c_OrderNumber, @c_webUserName = @c_webUserName, @c_PersSign = @c_PersSign, @c_LangID = @c_LangID, @c_ItemNo = @c_ItemNo, @c_Qty = @c_Qty, @c_AllocateAvailable = @c_AllocateAvailable, @c_OverrideCreditLimit = @c_OverrideCreditLimit, @c_RequestedDate = @c_RequestedDate, @c_BatchId = @c_BatchId, @c_ArtSerieNr = @c_ArtSerieNr, @c_OrderType = @c_OrderType if @x<0 Break End End close cr_items deallocate cr_items End if @c_Run_Type = 'R' exec Jeeves_Esales_GetOrp @c_ForetagKod,@c_webUserName,@LangID,@c_OrderNumber Return isnull(@x,0) End if @c_qty <= 0 Return -210 select @Today = getdate() if @c_RequestedDate is null select @c_RequestedDate = convert(nvarchar(10),getdate(),112) ---Get customer discount, pricelist, credit info from table kus select @kus_kundrabatt = kundrabatt, @kus_rabklass = rabklass, @kus_Kreditsparr = kreditsparr, @kus_kundsaldo = kus.kundsaldo, @kus_ordsum = kus.ordsum, @kus_kundkredlim = kus.kundkredlim, @kus_momskod = kus.momskod, @kus_offnr = offnr, @Samfaktutskr = samfaktutskr, @kus_KundRabattKod0 = kundrabattkod0, @kus_KundRabattKod1 = kundrabattkod1, @kus_KundRabattKod2 = kundrabattkod2, @kus_PrisListaKundSpec = prislistakundspec, @kus_KundKategoriKod = kundkategorikod, @kus_tradecalcmarkup = tradekalkmarkup, @kus_tradefsgmarkup = tradefsgmarkup, @kus_AddArtEjAktiv = AddArtEjAktiv from kus where ftgnr = @CompanyNo and foretagkod = @c_ForetagKod --If customer credit is blocked then abort if @kus_kreditsparr = '1' begin exec Jeeves_GT @wr output,@c_ForetagKod,@LangID,1344,'Kunden �r kreditsp�rrad' EXECUTE Jeeves_RaisError 21001, @wr return -1344 end --Get Item discount and descriptions from table ar select @ar_ArtProdKlass = ar.artprodklass, @ar_artrabklass = ar.artrabklass, @ar_artkundrabkod = ar.artkundrabkod, @ar_OrdvRabKod = ar.ordvrabkod, @ar_momskod = ar.momskod, @ar_palaggdelforp = isnull(ar.palaggdelforp,0), @ar_palaggdelforpbelopp = ar.palaggdelforpbelopp, @ar_artfsgforp = artfsgforp, @ar_lagstalle = lagstalle, @ar_ordTyp = ordTyp, @Artbeskr = ArtBeskr, @Artbeskr2 = ArtBeskr2, @AnskaffningTillv = ar.AnskaffningTillv from ar where ar.artnr = @c_ItemNo and ar.foretagkod = @c_ForetagKod --Assign from sy1 select @sy1_PrisListaInklMoms = isnull(prislistainklmoms,0), @sy1_momskod = momskod, @sy1_lagstalle = sy1.lagstalle, @sy1_artbeskr_2_orp = sy1.artbeskr_2_orp, @sy1_rbn = sy1.sy1_rbn, @sy1_PrisListaStaffling = PrisListaStaffling, @sy1_KodAlternativEnhet = KodAlternativEnhet from sy1 where sy1.foretagkod = @c_ForetagKod select @AltEnhetKod = @c_AltEnhetKod --HACK: If ArtFsgForp is set, find matching AltEnhetKod if isnull(@ar_artfsgforp,0) > 0 and @AltEnhetKod is NULL begin if @sy1_KodAlternativEnhet = 2 begin select @AltEnhetKod = xae.AltEnhetKod, @AltEnhetOmrFaktor = xae.AltEnhetOmrFaktor from xare join xae on (xare.AltEnhetKod = xae.AltEnhetKod) where xae.AltEnhetOmrFaktor = ROUND(@ar_artfsgforp, 6) and xare.artnr = @c_ItemNo and xare.foretagkod = @c_ForetagKod if @AltEnhetKod is not NULL begin --Abort from futher logic down the line select @sy1_KodAlternativEnhet = 0 end end end --Get Item alternative unit from table xae if @sy1_KodAlternativEnhet = 1 begin if @AltEnhetKod is not NULL begin select @AltEnhetOmrFaktor = AltEnhetOmrFaktor from xae where xae.AltEnhetKod = @AltEnhetKod and xae.foretagkod = @c_ForetagKod end else begin select @AltEnhetKod = AltEnhetKod, @AltEnhetOmrFaktor = AltEnhetOmrFaktor from xae where xae.AltEnhetOrderStd = 1 and xae.foretagkod = @c_ForetagKod end end --Get Item alternative unit from table xare if @sy1_KodAlternativEnhet = 2 begin if @AltEnhetKod is not NULL begin select @AltEnhetOmrFaktor = AltEnhetOmrFaktor from xare where xare.AltEnhetKod = @AltEnhetKod and xare.artnr = @c_ItemNo and xare.foretagkod = @c_ForetagKod end else begin select @AltEnhetKod = AltEnhetKod, @AltEnhetOmrFaktor = AltEnhetOmrFaktor from xare where xare.AltEnhetOrderStd = 1 and xare.artnr = @c_ItemNo and xare.foretagkod = @c_ForetagKod end if @AltEnhetOmrFaktor is NULL begin select @AltEnhetOmrFaktor = AltEnhetOmrFaktor from xae where xae.AltEnhetKod = @AltEnhetKod and xae.foretagkod = @c_ForetagKod end end if @AltEnhetKod is not NULL and @AltEnhetOmrFaktor > 0 begin --Set the value that was not provided if isnull(@c_QtyAltEnh,0) = 0 and isnull(@c_Qty,0) != 0 begin select @c_QtyAltEnh = @c_Qty / @AltEnhetOmrFaktor end if isnull(@c_Qty,0) = 0 and isnull(@c_QtyAltEnh,0) != 0 begin select @c_Qty = @c_QtyAltEnh * @AltEnhetOmrFaktor end --If both Qty and QtyAltEnh is provided then verify correct value provided if @c_Qty > 0 and @c_QtyAltEnh > 0 begin if ROUND(@c_Qty, 4) != ROUND(@c_QtyAltEnh * @AltEnhetOmrFaktor, 4) begin EXECUTE Jeeves_RaisError 21001, 'Qty and QtyAltEnh must follow the AltEnhetOmrFaktor when both are provided' return 50100 end end end else begin --Fallback if there is no alternative units if isnull(@c_Qty,0) = 0 and isnull(@c_QtyAltEnh,0) != 0 begin select @c_Qty = @c_QtyAltEnh select @c_QtyAltEnh = 0 end end select @Enter_TranCount = @@TranCount, @NewLine=char(13)+char(10), @dbp=@@ProcId --Calc pack markup --TODO: Fix this, as somehow ar_artfsgforp was an int in this SP, which is wrong. And now this is broken. if isnull(convert(integer,@ar_artfsgforp),0) > 0 begin if ((select convert(integer,@c_Qty) % convert(integer,@ar_artfsgforp)) = 0) select @ar_palaggdelforp = 0 end if @c_OrderNumber is not NULL and @oh_OrdStat is NULL select @oh_OrdStat = [oh].[OrdStat], @oh_vbordsum = oh.vbordsum, @oh_ordsum = oh.ordsum, @oh_lagstalle = oh.lagstalle from [oh] where [oh].[OrderNr] = @c_OrderNumber and [oh].[ForetagKod] = @c_ForetagKod ---Use order type from ar if available select @c_orderType = isnull(@c_orderType, @ar_ordTyp) --Always use parameter if provided to the store procedure --Use order location from ar table if present select @c_Lagstalle = isnull(@c_Lagstalle,@ar_Lagstalle) --Use order location as default if @c_Lagstalle is null select @c_lagstalle = @oh_Lagstalle declare @QtyAvailable as decimal exec Jeeves_Ar_Disp_Test @c_IntrnCoNo = @c_ForetagKod, @ArtNr = @c_ItemNo, @OrdAntal = @c_Qty, @OrdDatum = @c_RequestedDate, @LagStalle = @c_LagStalle, @c_Return_Type='Y', @o_DispQty = @QtyAvailable output, @o_FirstQty = @o_NextQty output, @o_FirstDate = @o_NextDate output, @o_LastQty = @o_LastQty output, @o_LastDate = @o_LastDate output if @o_NextQty is null begin select @o_NextQty = 0 end if @o_LastQty is null begin select @o_LastQty = 0 end -- if the AnskaffningTillv is larger than 0 (the product is produced by orders) then discard Jeeves_Ar_Disp_Test if @AnskaffningTillv>0 begin select @c_AllocateAvailable = 0 end if @c_AllocateAvailable = 1 begin -- Place the order with the amount available on the requested date and -- return information about the rest. if @c_RequestedDate = @o_NextDate begin --If the first date and the requested date are the same, --the on hand quantity will appear as first date quantity as well. select @o_NextDate = null select @o_NextQty = 0 end --Prefer next to last. if @o_NextQty = 0 or @o_NextQty is null begin select @o_NextQty = @o_LastQty select @o_NextDate = @o_LastDate select @o_LastQty = 0 select @o_LastDate = null end --If there is nothing available on the requested date, use the next if @QtyAvailable = 0 begin select @c_Qty = @o_NextQty select @DateAvailable = @o_NextDate select @o_NextQty = @o_LastQty select @o_NextDate = @o_LastDate select @o_LastQty = 0 select @o_LastDate = null end else begin --Only the amount available on the requested date should be allocated on the order row. select @DateAvailable = @c_RequestedDate select @c_Qty = @QtyAvailable end if @o_NextQty = 0 begin select @o_NextDate = null end if @o_LastQty = 0 begin select @o_LastDate = null end end else begin --If everything is available immediately, set detaavailable to now if(@QtyAvailable >= @c_Qty) begin select @DateAvailable = @c_RequestedDate end else begin --Everything isn't available, if last quantity is 0, the rest is available on first date. if @o_LastQty = 0 begin select @DateAvailable = @o_NextDate end else begin --leave last date as date available, sice the order can't be delivered before that date. select @DateAvailable = @o_LastDate end end select @o_NextQty = 0 select @o_NextDate = null select @o_LastQty = 0 select @o_LastDate = null end --Pass the quantity that is placed on the order back to the caller. select @o_AllocatedQty = @c_Qty select @o_AllocatedDate = @DateAvailable select @InkAvt = al.InkAvt, @LevNr=al.FtgNr , @ArtLevPrior = al.ArtLevPrior, @ArtHuvudAvt =al.ArtHuvudAvt from al where al.ArtNr=@c_ItemNo and al.ArtHuvudAvt='1' and al.ForetagKod=@c_ForetagKod; --@In_SALES170 JEEVES_Boolean=NULL, --@In_SALES190 smallint=NULL, select @SALES170 = dbo.Jeeves_FN_GetParam(@c_ForetagKod, 'SALES170', 'B',null) select @SALES190 = dbo.Jeeves_FN_GetParam(@c_ForetagKod, 'SALES190', 'N',null) select @SALES048 = dbo.Jeeves_FN_GetParam(@c_ForetagKod, 'SALES048', 'N',null) select @SALES007 = dbo.Jeeves_FN_GetParam(@c_ForetagKod, 'SALES007', 'N',null) --Get cost codes from sales person or location (the same way as UF_Oh_Get_InternKonton) if @SALES048 = 1 begin --Get settings from inventory location select @KostStalleKod = KostStalleKod, @KostBar = KostBar, @K4 = K4, @K5 = K5, @K6 = K6, @K7 = K7, @AutoRegel = AutoRegelForskott from xb with (NoLock) where ForetagKod = @c_ForetagKod and LagStalle = @c_LagStalle; end else if @SALES048 = 2 begin --Get settings from sales person if @Saljare is not null begin select @KostStalleKod = KostStalleKod, @KostBar = KostBar, @K4 = K4, @K5 = K5, @K6 = K6, @K7 = K7, @AutoRegel = AutoRegelForskott from salj with (NoLock) where ForetagKod = @c_ForetagKod and Saljare=@Saljare; end end else if @SALES048 = 3 begin -- Try sales person first and then and add values -- from location is not provided if @Saljare is not null begin select @KostStalleKod = KostStalleKod, @KostBar = KostBar, @K4 = K4, @K5 = K5, @K6 = K6, @K7 = K7, @AutoRegel = AutoRegelForskott from salj with (NoLock) where ForetagKod = @c_ForetagKod and Saljare=@Saljare; end select @KostStalleKod = ISNULL(@KostStalleKod, KostStalleKod), @KostBar = ISNULL(@KostBar, KostBar), @K4 = ISNULL(@K4, K4), @K5 = ISNULL(@K5, k5), @K6 = ISNULL(@K6, K6), @K7 = ISNULL(@K7, K7), @AutoRegel = ISNULL(@AutoRegel, AutoRegelForskott) from xb with (NoLock) where ForetagKod = @c_ForetagKod and LagStalle = @c_LagStalle; end --calculate fiscal year declare @TodayDate datetime; declare @redar integer; declare @period integer; declare @Just_BokfDat datetime; set @TodayDate = convert(varchar(10), @Today, 112); execute CalcPeriodP2P @todayDate, null, @redar output, @period output, @Just_BokfDat output, @c_ForetagKod declare @startRow int declare @endRow int declare @maxRow int -- The highest row number in the discount row range. declare @discountQty decimal(17,6) if @o_OrderRow is not null begin --All rows that are grouped by being in the same decade should --be updated with the discount, since they probably make up a split order row, --and they should all be taken into account when calculating the discount. --This is only relevant if a row number is provided. select @startRow = 10 * (@o_OrderRow / 10) -- yx->y0, e.g. 24->20 select @endRow = @startRow + 9 --The updated row is excluded from the sum but the new quantity is added directly to discountQty select @discountQty = (isnull(sum(ordantal), 0) + @c_Qty), @maxRow = isnull(max(OrdRadNr), @startRow) from orp where ForetagKod = @c_ForetagKod and OrderNr = @c_OrderNumber and OrdRadNr >= @StartRow and OrdRadNr <= @EndRow and OrdRadNr <> @o_OrderRow and ArtNr =@c_ItemNo if @o_OrderRow > @maxRow begin select @maxRow = @o_OrderRow end end else begin select @discountQty = @c_qty select @startRow = -1 end if @withPriceCalc = 'Y' begin declare @orp_ArtCirkaPris as Jeeves_Amount, @orp_VolymRabatt as float, @orp_KundRabatt as float, @orp_Rabatt1 as float, @orp_Rabatt2 as float, @orp_Rabatt3 as float, @orp_valkod as nvarchar(3), @orp_valkurs as decimal(18,8), @orp_ordDatum as datetime execute @x = Jeeves_orp_produkt_pris @c_Foretagkod = @c_ForetagKod, @ArtNr = @c_ItemNo, @OrdAntal = @discountQty, @ValKurs = @ValKurs, @ValKod = @valkod, @PrisLista = @Prislista, @OrdDatum = @Today, @ArtProdKlass = @ar_ArtProdKlass, @offradnr = -32000, @ArtRabKlass = @ar_ArtRabKlass, @RabKlass = @kus_RabKlass, @OrdvRabKod = @ar_OrdvRabKod, @ArtKundRabKod = @ar_ArtKundRabKod, @KundRabattKod0 = @kus_KundRabattKod0, @KundRabattKod1 = @kus_KundRabattKod1, @KundRabattKod2 = @kus_KundRabattKod2, @In_PrisListaStaffling = @sy1_PrisListaStaffling, @In_PrisListaKundSpec = @kus_PrisListaKundSpec, @In_KundKategoriKod = @kus_KundKategoriKod, @KundRabatt = @kus_KundRabatt, @In_InkAvt = @InkAvt, @In_LevNr = @LevNr, @In_ArtLevPrior = @ArtLevPrior, @In_ArtHuvudAvt = @ArtHuvudAvt, @In_tradekalkmarkup = @kus_tradecalcmarkup, @In_tradefsgmarkup = @kus_tradefsgmarkup, @In_OrdBerLevDat = @DateAvailable, @In_Sales170 = @SALES170, @In_Sales190 = @SALES190, @In_RedovisnAr = @redar, @in_FtgNr = @CompanyNo, @Logg = null, @offnr = @kus_offnr, @In_LagStalle = @c_Lagstalle, @O_Svar_Pris_Valuta = @orp_Vb_Pris output, @O_Svar_VolymRabatt = @orp_VolymRabatt output, @O_Svar_KundRabatt = @orp_KundRabatt output, @O_Svar_Rabatt1 = @orp_Rabatt1 output, @O_Svar_Rabatt2 = @orp_Rabatt2 output, @O_Svar_Rabatt3 = @orp_Rabatt3 output, @O_Svar_CirkaPris_Valuta = @orp_ArtCirkaPris output if @ar_palaggdelforpbelopp = 1 begin select @orp_vb_pris = @orp_vb_pris + @ar_palaggdelforp end else begin -- palaggdelforp is specified in percentage, so 80 should result in a factor of 1.8. select @orp_vb_pris = @orp_vb_pris * (1 + 0.01 * @ar_palaggdelforp) end end ---Calc VAT------------------------------------------------------ if @kus_momskod = 0 begin select @Momssats = 0 end else begin if @ar_momskod is null select @ar_momskod = isnull(@kus_momskod,@sy1_momskod) select @Momssats = x1.momssats from x1 where momskod = @ar_momskod end if @sy1_PrisListaInklMoms in ('1','3') begin select @orp_vb_prisinklmoms = @orp_Vb_Pris select @orp_vb_pris = @orp_vb_pris/(1.0+(@MomsSats/100.0)) end else begin select @orp_vb_prisinklmoms = @orp_vb_pris * (1.0+(@Momssats/100.0)) end ----------------------------------------------------------- ---Check if creditlimit is reached if @kus_kundkredlim > 0 and @c_OverrideCreditLimit = 0 begin if (isnull(@oh_ordsum,0) + @kus_kundsaldo + @kus_ordsum + (@Orp_vb_pris*@c_qty)) > @kus_kundkredlim begin exec Jeeves_GT @wr output,@c_ForetagKod,@LangID,3679,'Kundens kreditgr�ns �r �verskriden' EXECUTE Jeeves_RaisError 21001, @wr return -3679 end end begin tran select @oh_vbordsum = isnull(@oh_vbordsum, 0) + (@c_qty * @orp_Vb_Pris * ((100 - @orp_Rabatt1)/100) * ((100 - @orp_Rabatt2)/100) * ((100 - @orp_Rabatt3)/100) * ((100-@orp_kundrabatt)/100)) select @oh_ordsum = 0 select @orp_ordradst = dbo.Jeeves_FN_GetParam (@c_ForetagKod,'WEBAPP018','N','10') if @oh_OrdStat < @orp_ordradst select @orp_ordradst = @oh_OrdStat if @sy1_artbeskr_2_orp = 1 begin --Add description to orp row if artbeskr_2_orp flag is set. -- First try the old way. select @Artbeskr = isnull(ArtBeskr, @Artbeskr), @Artbeskr2 = isnull(ArtBeskr2, @Artbeskr2) from arb where foretagkod = @c_ForetagKod and sprakkod = @LangID and artnr = @c_ItemNo --Override with modern translation with old transalation value as default execute @ArtBeskr = Jeeves_FN_GetCustomerDropDownValue @c_ForetagKod, @LangID, 'ar', @c_ItemNo, @ArtBeskr end else begin select @Artbeskr = null, @Artbeskr2 = null end if @c_Qty <= 0 begin if @@TranCount > 0 ROLLBACK TRANSACTION EXECUTE Jeeves_RaisError 50100, 'Jeeves_Esales_AddOrderRow' while @@TranCount<@Enter_TranCount BEGIN TRANSACTION return 50100 end execute @x = Jeeves_Init_Insert_orp @c_ForetagKod = @c_ForetagKod, @c_OrderNr = @c_OrderNumber, @c_FtgNr = @CompanyNo, @c_ArtNr = @c_ItemNo, @c_ArtSerieNr = @c_ArtSerieNr, @c_BatchId = @c_BatchID, @c_Edit = @c_Edit, @c_EditExt = @c_EditExt, @c_OrdBegLevDat = @c_RequestedDate, @c_OrdBerLevDat = @DateAvailable, @c_Lagstalle = @c_lagstalle, @c_OrdAntal = @c_Qty, @c_OrdAntalAltEnh = @c_QtyAltEnh, @c_OrdTyp = @c_OrderType, @c_ordradst = @orp_ordradst, @c_PersSign = @c_PersSign, @c_volymrabatt = @orp_VolymRabatt, @c_KundRabatt = @orp_KundRabatt, @c_Rabatt1 = @orp_Rabatt1, @c_Rabatt2 = @orp_Rabatt2, @c_Rabatt3 = @orp_Rabatt3, @c_Saljare = @Saljare, @c_vb_pris = @orp_Vb_Pris, @c_vb_prisinklmoms = @orp_vb_prisinklmoms, @c_rowcreatedby = @c_perssign, @c_rowcreateddt = @Today, @c_Valkod = @valkod, @c_Valkurs = @valkurs, @c_OrdRadNr = @o_OrderRow output, @c_Artbeskr = @ArtBeskr, @c_OrdArtBeskr = @ArtBeskr2, @c_KostBar = @KostBar, @c_KostStalleKod = @KostStalleKod, @c_K4 = @K4, @c_K5 = @K5, @c_K6 = @K6, @c_K7 = @K7, @c_AutoRegel = @AutoRegel, @c_AltEnhetKod = @AltEnhetKod; if (@@Error <> 0) or (@x < 0) begin EXECUTE Jeeves_RaisError 21001, 'Error when creating order row' Rollback tran Return -100 end --If the row created with a specific row number, the prices of other rows might be affected. if @startRow >= 0 begin declare @rowIndex as int select @rowIndex = @startRow while @rowIndex <= @maxRow begin Update orp SET orp.vb_pris = @orp_Vb_Pris, orp.vb_prisinklmoms = @orp_vb_prisinklmoms, orp.volymrabatt = @orp_VolymRabatt, orp.KundRabatt = @orp_KundRabatt, orp.Rabatt1 = @orp_Rabatt1, orp.Rabatt2 = @orp_Rabatt2, orp.Rabatt3 = @orp_Rabatt3, orp.rowupdatedby= @c_PersSign, orp.rowupdateddt = getdate() Where ordernr = @c_OrderNumber and foretagkod = @c_ForetagKod and ordradnr = @rowIndex and artnr = @c_ItemNo and ordradnr <> @o_OrderRow select @rowIndex = @rowIndex + 1 end end update oh set oh.ordsum = @oh_ordsum, oh.vbordsum = @oh_vbordsum where oh.ordernr = @c_OrderNumber and oh.foretagkod = @c_ForetagKod if @@Error <> 0 begin rollback tran return -100 end if @SALES007 = 1 AND @kus_AddArtEjAktiv <> '1' BEGIN exec JEEVES_Orp_Create_Tillagg @c_OrderNumber, @c_PersSign, @c_ForetagKod END if @@Error <> 0 begin rollback tran return -100 end commit tran --calculate ordervalue discount; execute JEEVES_Oh_Kora @c_OrderNumber,NULL,2,null,@c_ForetagKod; --make sure ordersum is updated; execute JEEVES_Oh_OrderVarde @c_OrderNumber, @ValKurs, @sy1_rbn, @c_PersSign, @c_ForetagKod = @c_ForetagKod, @call_type = 4 if @c_Run_Type = 'R' exec Jeeves_Esales_GetOrp @c_ForetagKod,@c_webUserName,@LangID,@c_OrderNumber return 0 GO PRINT 'End Jeeves_Esales_AddOrderRow' GO PRINT 'End Jeeves_Esales_AddOrderRow' GO