SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO SET NOCOUNT ON GO PRINT 'Begin Jeeves_Esales_PlaceOrder' GO PRINT 'Begin Jeeves_Esales_PlaceOrder' PRINT '***************************************************' PRINT '* *' PRINT '* Jeeves_Esales_PlaceOrder *' PRINT '* *' PRINT '***************************************************' GO IF OBJECT_ID( 'Jeeves_Esales_PlaceOrder', 'P' ) IS NOT NULL BEGIN DROP PROCEDURE Jeeves_Esales_PlaceOrder END GO IF (SELECT COUNT(*) FROM xspr WHERE SprTrgName = 'Jeeves_Esales_PlaceOrder' AND SprTrgType = 'P' ) > 0 BEGIN UPDATE xspr SET beskrivning=beskrivning WHERE SprTrgName = 'Jeeves_Esales_PlaceOrder' AND SprTrgType = 'P' END ELSE BEGIN INSERT INTO xspr(SprTrgName,SprTrgType,RowCreatedDt) VALUES('Jeeves_Esales_PlaceOrder' , 'P', GETDATE() ) END GO ---------------------------------------------------- CREATE Procedure Jeeves_Esales_PlaceOrder @c_ForetagKod smallint, @c_OrderNumber int output, @c_webUserName Jeeves_StrVarChar64 = null, @c_CompanyNo Jeeves_StrVarChar32 = null, @c_LangID smallint = null, @c_LevSattKod smallint = null, @c_kundref2 Jeeves_StrVarChar32 = null, @c_kundbestnr Jeeves_StrVarChar32 = null, @c_editext Jeeves_StrVarCharMax = null, @c_CoName Jeeves_StrVarChar64 = null, @c_Addr1 Jeeves_StrVarChar64 = null, @c_Addr2 Jeeves_StrVarChar64 = null, @c_PostalCode Jeeves_StrVarChar64 = null, @c_City Jeeves_StrVarChar64 = null, @c_ProvinceCode Jeeves_StrVarChar5 = null, @c_CountryCode Jeeves_StrVarChar3 = null, @c_godsmarke1 Jeeves_StrVarChar64 = null, @c_godsmarke2 Jeeves_StrVarChar64 = null, @c_godsmarke3 Jeeves_StrVarChar64 = null, @c_godsmarke4 Jeeves_StrVarChar64 = null, @c_TA_MailNotified Jeeves_StrVarChar64 = null, @c_TA_PhonNotifiedNo Jeeves_StrVarChar64 = null, @c_TA_SMSNotifiedNo Jeeves_StrVarChar64 = null, @c_levforetolv char(1) = '0', @c_withFreightCalc char(1) = 'Y', @c_ordlevplats1 Jeeves_StrVarChar20 = null, @c_vRef Jeeves_StrVarChar64 = null, @c_orderStatus smallint = null, @c_PartDeliveryAllowed smallint = null, @c_text Jeeves_StrVarCharMax = null, @c_PaymentType char(1) = '0' --0=invoice, 1=card As set nocount on declare @dbc int, @ftgnr Jeeves_StrVarChar32, @ftgkontaktnr int, @org_ftgnr Jeeves_StrVarChar32, @kp_ftgperson Jeeves_StrVarChar32, @Momskod smallint, @Levsattkod smallint, @LevvillkKod smallint, @Lagstalle Jeeves_StrVarChar10, @Betkod Jeeves_StrVarChar2, @Kreditorder Jeeves_Boolean, @valkurs ztCurrencyRate, @Ordsum Jeeves_Amount, @PersSign Jeeves_StrVarChar32, @Sy1_rbn char(1), @sy1_FtgKontaktToErRef char(1), @wi smallint, @x7_ordstat smallint, @wr Jeeves_StrVarChar256, @kundref2 Jeeves_StrVarChar32, @TA_MailNotified Jeeves_StrVarChar64, @TA_PhonNotifiedNo Jeeves_StrVarChar64, @TA_SMSNotifiedNo Jeeves_StrVarChar64, /*Output från Jeeves_Calc_Frakt*/ @out_Fraktkostnad JEEVES_Amount, @out_ExpeditionKostnad JEEVES_Amount, @Out_Fraktdebkod JEEVES_Boolean, @Out_Ordervarde JEEVES_Amount, @Out_Fraktvikt float, @jvss_OrderReservation char(1), @kpwid integer, @OrdBerLevDat DateTime, @SALES007 smallint, @kus_AddArtEjAktiv char(1), @OrdLevAdr4 Jeeves_StrVarChar64 exec Jeeves_Esales_GetUserInfo @c_IntrnCoNo = @c_ForetagKod, @c_webUserName = @c_webUserName, @c_CompanyNo = @c_CompanyNo, @o_LangID = @c_LangID output, @o_CompanyNo = @ftgnr output, @o_ContactNo = @ftgkontaktnr output, @o_OrgCompanyNo = @org_ftgnr output, @o_kpwid = @kpwid output if (@c_ordlevplats1 = @ftgnr) select @c_ordlevplats1 = null if (@c_ordlevplats1 = '') select @c_ordlevplats1 = null -- concatenate postal code and city for order unique adresses select @OrdLevAdr4 = @c_PostalCode + ' ' + @c_City select @c_City = null select @kp_ftgperson = kp.ftgperson from kp where kp.foretagkod = @c_ForetagKod and kp.ftgnr = @ftgnr and kp.ftgkontaktnr = @ftgkontaktnr select @Momskod = momskod, @Levsattkod = isnull(@c_LevSattKod, levsattkod), @Kreditorder = kreditorder, @Lagstalle = lagstalle, @valkurs = valkurs, @Ordsum = ordsum, @Levvillkkod = levvillkkod, @Betkod = betkod, @PersSign = perssign, @Kundref2 = kundref2, @c_vRef = isnull(@c_vRef, vref), @TA_MailNotified = TA_MailNotified, @TA_PhonNotifiedNo = TA_PhonNotifiedNo, @TA_SMSNotifiedNo = TA_SMSNotifiedNo from oh where oh.ordernr = @c_OrderNumber and oh.foretagkod = @c_ForetagKod if @@Rowcount < 1 begin exec Jeeves_GT @wr output,@c_ForetagKod,@c_LangID,1237,'Kundordern saknas' EXECUTE Jeeves_RaisError 21001, @wr return end select @x7_ordstat = dbo.Jeeves_FN_GetParam(@c_ForetagKod,'WEBAPP003','N',null) --jeevesparamnumeric from jvss -- where -- jeevesparamname = N'WebOrderStatus' and -- foretagkod = @c_ForetagKod --Use passed in value if available select @x7_ordstat = isnull(@c_orderStatus, @x7_ordstat) select @jvss_OrderReservation = jvss.jeevesparamboolean from jvss where jvss.jeevesparamname = 'webapp010' and jvss.foretagkod = @c_ForetagKod --select @orp_ordradstat = dbo.Jeeves_FN_GetParam (@c_IntrnCoNo,'WEBAPP018','N','10') select @Sy1_rbn = sy1_rbn, @sy1_FtgKontaktToErRef=FtgKontaktToErRef from sy1 where sy1.foretagkod = @c_ForetagKod --if @c_kundref is null and FtgKontaktToErRef is true then insert Contact name as reference if @c_kundref2 is null begin if @sy1_FtgKontaktToErRef = '1' select @c_kundref2 = @kp_ftgperson end if @c_vRef is null begin if (@org_ftgnr <> @ftgnr) begin select @c_vRef = ftgnamn from fr where fr.ftgnr = @org_ftgnr and fr.foretagkod = @c_ForetagKod End End execute @wi = Jeeves_oh_ordervarde @In_OrderNr = @c_OrderNumber, @In_ValKurs = @Valkurs, @In_sy1_rbn = @Sy1_rbn, @In_PersSign = @Perssign, @Call_Type = 4, @c_Foretagkod = @c_ForetagKod --The estimated delivery date of the order will be set to the earliest delivery date of a row. select @OrdBerLevDat = min(OrdBerLevDat) from orp where foretagkod = @c_ForetagKod AND OrderNr = @c_OrderNumber begin tran exec @wi = Jeeves_oh_kora @c_OrderNumber,null,2,@c_ForetagKod if @Wi < 0 begin Rollback tran return @Wi end select @SALES007 = dbo.Jeeves_FN_GetParam(@c_ForetagKod, 'SALES007', 'N',null) select @kus_AddArtEjAktiv = AddArtEjAktiv from kus where foretagkod = @c_ForetagKod and ftgnr = @ftgnr if @SALES007 = 1 AND @kus_AddArtEjAktiv <> '1' BEGIN exec @wi = JEEVES_Orp_Create_Tillagg @c_OrderNumber,@Perssign,@c_ForetagKod,0 if @Wi < 0 begin Rollback tran return @Wi end END if @c_withFreightCalc = 'Y' Begin declare @Artvikt float, @Volume float, @Fraktvikt float, @Expavgkod Jeeves_Boolean, @Fraktkostnader Jeeves_Amount, @DispatchFeeExists smallint, @valkod Jeeves_StrVarChar4, @Fraktskrymmekod Jeeves_Boolean select @Artvikt = artvikt, @Volume = volume, @Fraktkostnader=Emballagekostnad+fraktkostnman+ForsakringsKostnad+ovrfaktkostnad1+ovrfaktkostnad2, @valkod = valkod, @Expavgkod = expavgkd, @Fraktskrymmekod = fraktskrymmekod, @Fraktvikt = fraktvikt from oh where oh.ordernr = @c_OrderNumber and oh.foretagkod = @c_ForetagKod --Check that dispatch fee is defined in table fkst --This check has been removed as described in 521932. --select @DispatchFeeExists=faktkostntyp from fkst where -- fkst.faktkostntyp = 4 and -- fkst.foretagkod = @c_ForetagKod if @@Rowcount < 1 begin rollback tran exec Jeeves_GT @wr output,@c_ForetagKod,@c_LangID,1333,'Expeditionsavgift kan ej debiteras, definition saknas i tabellen Fakturakostnader (fkst) !' EXECUTE Jeeves_RaisError 21001, @wr return end execute JEEVES_Calc_Frakt @In_ForetagKod=@c_ForetagKod, @In_FtgNr = @ftgnr, @In_OrdLevPlats1 = @ftgnr, @In_OrderNr = @c_OrderNumber, @In_KreditOrder = @Kreditorder, --@In_OrdBerLevDat datetime=NULL, @In_LagStalle = @Lagstalle, --@In_OrdLevNr smallint=NULL, --@In_OrdStat smallint=NULL, --@In_OrdFsNr smallint=NULL, @In_FraktVikt = @Artvikt, @In_AntalEURPall = 0, @In_AntalOvrPall = 0, @In_Volume = @Volume, @In_LevForeTolv = @c_Levforetolv, @In_FraktSkrymmeKod = @Fraktskrymmekod, @In_LevSattKod = @Levsattkod, @In_LevVillkKod = @Levvillkkod, @In_ValKurs = @Valkurs, @In_Valkod = @Valkod, @In_ExpAvgKod = @ExpAvgkod, @In_BetKod = @Betkod, @In_MomsKod = @Momskod, @In_OrderVarde = @Ordsum, @Call_Type = 1, @PersSign = @PersSign, @In_OvrFaktKostnader = 0, @Svar_FraktKostnad = @out_Fraktkostnad output, @Svar_ExpeditionKostnad = @out_ExpeditionKostnad output, @Svar_FraktdebKod = @Out_Fraktdebkod output, @Svar_OrderVarde = @Out_Ordervarde output, @Svar_Fraktvikt = @Out_Fraktvikt output if @@Error <> 0 begin rollback tran return end End if @c_PaymentType <> '1' begin Update oh SET oh.ordernralfa = 'Internet', oh.ordstat = isnull(@x7_ordstat,13), oh.kundref2 = @c_kundref2, oh.kundbestnr = @c_kundbestnr, oh.levforetolv = @c_levforetolv, oh.levsattkod = @Levsattkod, oh.ordberlevdat = @OrdBerLevDat, oh.ordlevadr1 = @c_CoName, oh.ordlevadr2 = @c_Addr1, oh.ordlevadr3 = @c_Addr2, oh.ordlevadr4 = @OrdLevAdr4, oh.ordlevadrbstort = @c_City, oh.Ordlevadrlandskod = @c_CountryCode, oh.ordlevadrprovincecode = @c_ProvinceCode, oh.editext = @c_editext, oh.edit = @c_text, oh.bruttovikt = isnull(@artvikt,0), oh.fraktkostnber = isnull(@out_Fraktkostnad,0), oh.godsmarke1 = @c_godsmarke1, oh.godsmarke2 = @c_godsmarke2, oh.godsmarke3 = @c_godsmarke3, oh.godsmarke4 = @c_godsmarke4, oh.ordlevplats1 = @c_ordlevplats1, oh.dellevtillaten = isnull(@c_PartDeliveryAllowed, 0), oh.vref = @c_vRef, oh.ta_mailnotified = isnull(@c_TA_MailNotified, @TA_MailNotified), oh.ta_phonnotifiedno = isnull(@c_TA_PhonNotifiedNo, @TA_PhonNotifiedNo), oh.ta_smsnotifiedno = isnull(@c_TA_SMSNotifiedNo, @TA_SMSNotifiedNo) Where ordernr = @c_OrderNumber and foretagkod = @c_ForetagKod if @@Error <> 0 begin rollback tran return end update kp set kp.antalkop = isnull(kp.antalkop,0) + 1 where kp.foretagkod = @c_ForetagKod and kp.ftgnr = @ftgnr and kp.ftgkontaktnr = @ftgkontaktnr if @@Error <> 0 begin rollback tran return end end else begin --KORTBETALNING --do not update orderstatus --do not imcrement kp Update oh SET oh.ordernralfa = 'Internet', oh.kundref2 = @c_kundref2, oh.kundbestnr = @c_kundbestnr, oh.levforetolv = @c_levforetolv, oh.levsattkod = @Levsattkod, oh.ordberlevdat = @OrdBerLevDat, oh.ordlevadr1 = @c_CoName, oh.ordlevadr2 = @c_Addr1, oh.ordlevadr3 = @c_Addr2, oh.ordlevadr4 = @OrdLevAdr4, oh.ordlevadrbstort = @c_City, oh.Ordlevadrlandskod = @c_CountryCode, oh.ordlevadrprovincecode = @c_ProvinceCode, oh.editext = @c_editext, oh.edit = @c_text, oh.bruttovikt = isnull(@artvikt,0), oh.fraktkostnber = isnull(@out_Fraktkostnad,0), oh.godsmarke1 = @c_godsmarke1, oh.godsmarke2 = @c_godsmarke2, oh.godsmarke3 = @c_godsmarke3, oh.godsmarke4 = @c_godsmarke4, oh.ordlevplats1 = @c_ordlevplats1, oh.dellevtillaten = isnull(@c_PartDeliveryAllowed, 0), oh.vref = @c_vRef, oh.ta_mailnotified = isnull(@c_TA_MailNotified, @TA_MailNotified), oh.ta_phonnotifiedno = isnull(@c_TA_PhonNotifiedNo, @TA_PhonNotifiedNo), oh.ta_smsnotifiedno = isnull(@c_TA_SMSNotifiedNo, @TA_SMSNotifiedNo) Where ordernr = @c_OrderNumber and foretagkod = @c_ForetagKod if @@Error <> 0 begin rollback tran return end end --remove any old if exists(select 1 from webl where webl.ConnSQLIDkpw = @kpwid and webl.ordernr = @c_OrderNumber ) begin update webl set ordernr = null where webl.ConnSQLIDkpw = @kpwid and webl.ordernr = @c_OrderNumber end if @@Error <> 0 begin rollback tran return end /* insert into webo (Foretagkod, OrderNr, RowCreatedBy, Perssign, RegDat, RowCreatedDt) values (@c_IntrnCoNo, @o_OrderNo, @Perssign, @Perssign, getdate(), getdate()) if @@Error <> 0 begin rollback tran return end */ commit tran if @jvss_Orderreservation = '1' Begin execute JEEVES_Oh_Bok @OrderNr = @c_OrderNumber, @PersSign = @PersSign, @ForetagKod =@c_ForetagKod End --select @o_OrderNo = @Ordernr return GO PRINT 'End Jeeves_Esales_PlaceOrder' GO PRINT 'End Jeeves_Esales_PlaceOrder' GO