mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
[HMF] Rezerwacja https://forum.mix-soft.pl/viewtopic.php?f=15&t=1277 |
Strona 1 z 1 |
Autor: | sqza [ 2009-10-12, 19:06 ] |
Tytuł: | [HMF] Rezerwacja |
Niestety mam problem z tymi nieszczęsnymi Rezerwacjami w Forte. Chodzi o modyfikację rezerwacji na dokumencie sprzedaży - zamiana (usunięcie i założenie nowej) rezerwacji ilościowej na rezerwację ze wskazaniem dostaw. Udało mi się dokopać do obiektów BRezerwacja(przechowującego informacje o rezerwacjach) i BPwDostawRz odpowiedzialnego za wiązanie rezerwacji na danej pozycji dokumentu handlowego (sprzedaży) z konkretnymi rekordami dostaw (rekordy z bazy DW). Niestety nie mam pojęcia jak przy pomocy tego obiektu utworzyć nowe powiązania ze wskazanymi przeze mnie dostawami. To co w Premium robiło się przy pomocy funkcji: int RezerwacjaAutomatyczna(int baza, long Id, string() nazwyDostaw, float() ilosci ) w Forte jest - przynajmniej dla mnie - nieosiągalne. Będę wdzięczny za pomoc w rozwiązaniu. |
Autor: | barnie [ 2009-10-12, 20:55 ] |
Tytuł: | |
Wywalamy dostawy z dokumentu Kod: dispatch xRz dispatch xDok = xFactory.NewObject("BDokumentXX") for iDokPoz = 1 to iDokPoz > xDok.pozycje.Count xRz=xDok.pozycje.item(iDokPoz).wlasciwosci.rezerwacje for iRz = 1 to irz > xRz.Count xRezerwacja.Load((using "id=%l",xRz.item(iRz).id)) if xRezerwacja.Delete() != 0 then message "Nie można usunąć rezerwacji." endif next iRz next iDokPoz Robimy rezerwację ze wskazaniem dostaw Kod: dispatch xTw = xFactory.NewObject("BTw") dispatch xRezerwacja = xFactory.NewObject("BRezerwacja") xRezerwacja.Edit() xRezerwacja.typ = 1 xRezerwacja.typrzrw = 2 // ze wskazaniem dostaw xRezerwacja.towar = xTw.Give("kod='kod_rezerwowanego towaru'") xRezerwacja.kontrahent = xKh.Give("kod='kod_kontrahenta'") xRezerwacja.ilosc = 1 // wskazanie dostawy dispatch xDostawy = xRezerwacja.powiazania long i = xDostawy.find("dostawa = 'towar_dostawa_01'") xDostawy.item(1).ilosc = 1.0 xRezerwacja.Save() |
Autor: | sqza [ 2009-10-14, 11:41 ] |
Tytuł: | |
Poniższy przykład generuje rezerwację na kontrahenta czyli odpowiednik RezerwacjiRęcznej z HMP. barnie pisze: Wywalamy dostawy z dokumentu Robimy rezerwację ze wskazaniem dostaw Kod: dispatch xTw = xFactory.NewObject("BTw") dispatch xRezerwacja = xFactory.NewObject("BRezerwacja") xRezerwacja.Edit() xRezerwacja.typ = 1 xRezerwacja.typrzrw = 2 // ze wskazaniem dostaw xRezerwacja.towar = xTw.Give("kod='kod_rezerwowanego towaru'") xRezerwacja.kontrahent = xKh.Give("kod='kod_kontrahenta'") xRezerwacja.ilosc = 1 // wskazanie dostawy dispatch xDostawy = xRezerwacja.powiazania long i = xDostawy.find("dostawa = 'towar_dostawa_01'") xDostawy.item(1).ilosc = 1.0 xRezerwacja.Save() Mnie interesuje jak tworzyć (zmienić) rezerwację ze wskazaniem dostaw do pozycji konkretnego dokumentu np. dokumentu sprzedaży - jest to RezerwacjaAutomatyczna z HMP. Linia Kod: long i = xDostawy.find("dostawa = 'towar_dostawa_01'") zwraca wartość "-1", próbowałem stosować zamiast "dostawa" pole "iddw" aby wskazywać konkretną interesującą mnie dostawę mimo wszystko funkcja Find zwraca "-1". Próbowałem modyfikować zaproponowany przez Berniego kod ustawiając pola: - bazadokrz - iddokrz - bazapozrz - idpozrz Ale niestety nic to nie daje - niby wszystko zapisuje się bez błędu (funkcja Save nie zwraca błędnej wratości) a mimo wszystko rezerwacja ze wskazaniem dostaw nie tworzy się na wybranej pozycji dokumentu. |
Autor: | barnie [ 2009-10-14, 15:06 ] |
Tytuł: | |
zmień w tym kodzie Kod: xRezerwacja.typrzrw = 1 |
Autor: | sqza [ 2009-10-14, 21:18 ] |
Tytuł: | |
Gdyby to było takie proste ;P Z tego co wyczytałem w dokumentacji to 2 oznacza rezerwację ze wskazaniem dostaw. Więc powinno być : Kod: xRezerwacja.typrzrw = 2 Zauważyłem ze rezerwacja sama w sobie zakłada się odpowiednia - problem jest z właściwością pozycji (pole typ w bazie ma wartość błędną) - niestety nie wiem jak zmienić ją z poziomu obiektów - oczywiście mógłbym ten parametr zmieniać przy pomocy bezpośredniego zapisu do bazy (jest to jednak mało "eleganckie" rozwiązanie). Co ciekawe kod: Kod: if xRezerwacja.Delete() != 0 then message "Nie można usunąć rezerwacji." endif zwraca wartość "-1" - pytanie czemu. Problem jest tez z przypadkiem jeżeli na pozycji jest już założona rezerwacja ilościowa. W tym przypadku HMF a bazie RZ ma założone dodatkowe rekordy używane do rezerwacji ilościowej z którymi tworzone są powiązania z pozycji dokumentów. Jeżeli próbuję usunąć rezerwację i zakładam nową to nie wiem skąd się bierze ten rekord ilościowy. Zapewne wszystkie problemy rozwiąże zmiana parametru typrzrw ale we właściwościach pozycji - niestety nie mam zielonego pojęcia jak to zrobić Save zwraca dziwne wartości. |
Autor: | barnie [ 2009-10-15, 08:45 ] |
Tytuł: | |
sqza pisze: Gdyby to było takie proste ;P Z tego co wyczytałem w dokumentacji to 2 oznacza rezerwację ze wskazaniem dostaw. Więc powinno być : Kod: xRezerwacja.typrzrw = 2 jak zmienisz na 1 to utworzy Ci najpierw rezerwację ilościową co spowoduje, że xDostawy.find("dostawa = ''") nie będzie Ci zwracało -1 |
Autor: | sqza [ 2009-10-15, 10:21 ] |
Tytuł: | |
barnie pisze: sqza pisze: Gdyby to było takie proste ;P Z tego co wyczytałem w dokumentacji to 2 oznacza rezerwację ze wskazaniem dostaw. Więc powinno być : Kod: xRezerwacja.typrzrw = 2 jak zmienisz na 1 to utworzy Ci najpierw rezerwację ilościową co spowoduje, że xDostawy.find("dostawa = ''") nie będzie Ci zwracało -1 Obecnie xDostawy.find zwraca mi wartość "1" mimo istniejącej na pozycji rezerwacji ilościowej. Wartość "-1" zwracana jest również podczas użycia funkcji Delete: sqza pisze: Co ciekawe kod: Kod: bernie pisze: if xRezerwacja.Delete() != 0 then message "Nie można usunąć rezerwacji." endif zwraca wartość "-1" - pytanie czemu. Co ciekawe wszystko testowałem właśnie dla pozycji na których rezerwacja ilościowa była założona. |
Autor: | zz [ 2014-05-16, 11:37 ] |
Tytuł: | Re: [HMF] Rezerwacja |
'Odświeżam' temat. Przy próbie utworzenia rezerwacji mam błąd "Wykonanie 'PropertyPut' nie powiodło się " w linii Kod: xRezerwacja.ilosc = fIlosc //1 HMF 2013 |
Autor: | rafal [ 2014-05-16, 12:13 ] |
Tytuł: | Re: [HMF] Rezerwacja |
Pokaż więcej kodu do przetestowania. |
Autor: | zz [ 2014-05-16, 14:44 ] |
Tytuł: | Re: [HMF] Rezerwacja |
Kod: dispatch xRezerwacja = xFactory.NewObject("BRezerwacja") dispatch xTw= xFactory.NewObject("BTw") .... xRezerwacja.Edit() xRezerwacja.typ = 1 xRezerwacja.typrzrw = 2 xRezerwacja.towar = xTw.Give("kod='KodTowaru'") xRezerwacja.ilosc = fIlosc //tu błąd xRezerwacja.Save() ... No i nie wiem jak podłożyć zmienną pod 'KodTowaru' |
Autor: | rafal [ 2014-05-16, 15:23 ] |
Tytuł: | Re: [HMF] Rezerwacja |
Działający przykład dostępny u Eksperta. Skontaktuj się z Ekspertem. |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |