Zmiana ceny przy pomocy obiektów COM

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, obiekty COM .NET

Moderator: mikey

rabies
Posty: 45
Rejestracja: 25 mar 2016, 13:08
Rola: Administrator CDN XL
Wersja: 2022

Zmiana ceny przy pomocy obiektów COM

Post autor: rabies »

Witam,

potrzebuje zmienić cenę towaru przy użyciu funkcji dodatkowych [JS], przy próbie utworzenia obiektu:

Kod: Zaznacz cały

rCena = rSesja.CreateObject("CDN.TwrCeny").Item("TwC_TwrID = "+Recordset.Fields(0).value+" AND TwC_TwCNumer = "+??cenaDetaliczna);
dostaję komunikat jak w załączniku.
w jaki sposób poprzez obiekty COM mogę się dostać do konkretnej ceny towaru?

--
Pozdrawiam
Załączniki
twrCeny.PNG
twrCeny.PNG (6.79 KiB) Przejrzano 9585 razy
Pozdrawiam
Krzysiek

taszek
Posty: 585
Rejestracja: 12 wrz 2012, 13:20
Rola: Administrator CDN XL
Wersja: 2016

Re: Zmiana ceny przy pomocy obiektów COM

Post autor: taszek »

a skąd chcesz pobierać nową cenę?
Pozdrawiam
Wojtek Cyrklewicz

rabies
Posty: 45
Rejestracja: 25 mar 2016, 13:08
Rola: Administrator CDN XL
Wersja: 2022

Re: Zmiana ceny przy pomocy obiektów COM

Post autor: rabies »

Będę ją wyliczał na podstawie atrybutów i parametrów wejściowych.

--
Pozdrawiam.
Pozdrawiam
Krzysiek

taszek
Posty: 585
Rejestracja: 12 wrz 2012, 13:20
Rola: Administrator CDN XL
Wersja: 2016

Re: Zmiana ceny przy pomocy obiektów COM

Post autor: taszek »

Możesz np. tak to zrobić (ja podwyższam podaną marże dla zaznaczonych towarów dla wybranej ceny)

Kod: Zaznacz cały

[SQL]
@PAR ?@Hs200_NQ|Filtr:''@? PAR@
@PAR ?@R(select DfC_DfCId,Dfc_Nazwa from CDN.DefCeny where Dfc_Nieaktywna is null and Dfc_DfcID >1)|Cena|&Cena:hurtowa 1 @? @PAR
@PAR ?@N7|Marza|Podaj marżę w %:5 @? @RH(999999) PAR@

SELECT RPZ2_GIDNumer FROM CDN.RptZaznaczenia2
WHERE ??_NQFiltr

[JS]
var shell = new ActiveXObject ('WScript.Shell')

try\{
	while ( !Recordset.EOF )
	\{
		var rTowar = Session.CreateObject("CDN.Towary").Item("Twr_TwrId = "+ Recordset.Fields("RpZ2_GIDNumer"))		
		var rCena = rTowar.Ceny.Item(??Cena-1).Wartosc
		
		rCena = Math.round((rCena + rCena*??Marza/100)*100)/100
		
		rTowar.Ceny.Item(??Cena-1).Wartosc = rCena
		
		Session.Save()	
		Recordset.MoveNext()
	\}

\}

catch(e)
	\{
	shell.Popup(e.description)
	\}
Pozdrawiam
Wojtek Cyrklewicz

rabies
Posty: 45
Rejestracja: 25 mar 2016, 13:08
Rola: Administrator CDN XL
Wersja: 2022

Re: Zmiana ceny przy pomocy obiektów COM

Post autor: rabies »

Witam,

kod:

Kod: Zaznacz cały

rTowar.Ceny.Item(??cena-1).Wartosc = nowaCena;
działa, dzięki za podpowiedź jednak nie rozumiem dlaczego trzeba od id ceny odjąć 1, id Ceny w TwrCeny jak i DefCeny sie pokrywają a ID pobieram z DefCeny więc teoretycznie to -1 jest niepotrzebne a jednak musi być do poprawnego działania skryptu :?

--
Pozdrawiam
Pozdrawiam
Krzysiek

taszek
Posty: 585
Rejestracja: 12 wrz 2012, 13:20
Rola: Administrator CDN XL
Wersja: 2016

Re: Zmiana ceny przy pomocy obiektów COM

Post autor: taszek »

Wiąże się to z tym, że tablica w obiekcie cen numerowana jest od 0. Więc cena zakupu jest w Optimie jako 1, ale w tablicy już jako 0.
Pozdrawiam
Wojtek Cyrklewicz

Adwin
Posty: 1
Rejestracja: 09 sty 2018, 15:00
Rola: Administrator CDN XL
Wersja: 2019

Re: Zmiana ceny przy pomocy obiektów COM

Post autor: Adwin »

Chciałbym powyższy skrypt zastosować na RO i ustalać cenę sprzedaży od marży...
ale wyskakuje mi nieprawidłowa nazwa kolumy TrN_TrNId :/
Da radę to jakoś ogarnąć?

Gabik
Posty: 26
Rejestracja: 05 sty 2019, 23:46
Rola: Inny
Wersja: 2018

Re: Zmiana ceny przy pomocy obiektów COM

Post autor: Gabik »

Do dokumentu RO będziesz potrzebował innego skryptu.
Musisz na obiekcie dokumentu dostać się do elementów i na nich ustawić odpowiednią cenę.

Kod: Zaznacz cały

var rPozycje = rRO.Elementy;
for (var i=0; i<rPozycje.Count ; i++ )
\{
rPozycje.Item(i).CenaT= nowaCena
\}
Pozdrawiam
Gabriel Gabzdyl 511 403 091 gabrielg@elte-s.com
Firma: https://elte-s.com/ Sklep: https://sklep.elte-s.com/

ODPOWIEDZ