|
|
Strona 1 z 1
|
[ Posty: 10 ] |
|
blokada wystawiania MM w określonych przypadkach
Autor |
Wiadomość |
_michal
Rejestracja: 2017-02-01, 14:41 Posty: 44 Pomógł: 7
|
blokada wystawiania MM w określonych przypadkach
Cześć, potrzebuje małej pomocy. Program Handel ERP 2017.b. Mam dwa rodzaje dokumentów przesunięć międzymagazonowych MM (MM- i MM+) oraz MMo (MMo- i MMo+). 1) Chciałbym aby wystawianie MM- (MM+) było możliwe tylko dla zadeklarowanych użytkowników. Czy wstawienie poniższego kodu do procedur dok. magazynowego powinno załatwić sprawę? Kod: int Sub OnBeforeBuforEdit(long lId)
Dispatch xMg int nErr int edytuj=0
xMg = xFactory.NewObject("BDokumentMg") nErr = xMg.Load("id="+(using "%d",lId)) if nErr then error Using "\nBłąd ładowania dokumentu magazynowego nr %l\n", nErr
if xMg.typDk=="MM-" then if ucase(xFactory.uzytkownik.kod)!="admin" && ucase(xFactory.uzytkownik.kod)!="user" then message "Nie masz uprawnień do wykonywania przesunięć MM" edytuj=-6000 endif endif OnBeforeBuforEdit = edytuj EndSub
2). Chiciałbym aby przesunięcia dok. MMo można było wykonywać tylko na magazynach rozróżnionych konkretnym parametrem. W tym przypadku mógłoby to być wypełnione Konto FK dla magazynu (najlepiej) - nie wiem jak się odwołać do tego lub cokolwiek innego np. wypełniony adres email dla magazynu. Kod: int Sub OnBeforeInsert(long lId)
Dispatch xMg int nErr int edytuj=0
xMg = xFactory.NewObject("BDokumentMg") nErr = xMg.Load("id="+(using "%d",lId)) if nErr then error Using "\nBłąd ładowania dokumentu magazynowego nr %l\n", nErr
if xMg.typDk=="MMo-" then if ucase(xMg.dzial.khfk)!=0 && xMg.magazyn_przesuniecia.khfk!=0 then message "Dok. MMo nie można wykonywać przesunięć na tych magazynach\nWykonaj przesunięcie dokumentem MM" edytuj=-6000 endif endif OnBeforeInsert = edytuj EndSub
Pozdr. M.
|
2017-03-17, 15:39 |
|
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Re: blokada wystawiania MM w określonych przypadkach
Masz kompletny kod. To ja się zapytam. Czy On działa zgodnie z Twoimi założeniami? Jak nie to pomożemy.
|
2017-03-17, 16:57 |
|
|
_michal
Rejestracja: 2017-02-01, 14:41 Posty: 44 Pomógł: 7
|
Re: blokada wystawiania MM w określonych przypadkach
Wybacz, ale brakuje mi dokumentacji do ambasica. Nie mam pewności co do kodu i momentu wywołania procedury. Proszę o małą podpowiedź. Wydaje mi się, że w drugim przykładzie mam błąd, bo odwołuje się to działu, nie magazynu. Powinno być chyba: Kod: if xMg.typDk=="MMo-" then if xMg.magazyn.khfk>0 && xMg.magazyn_przesuniecia.khfk>0 then Chce porównać wartość parametru khfk z tabeli HM.KH na dwóch magazynach (między, którymi jest przesunięcie) i jeśli w jednym z nich jest wpisana wartość w tabeli to zablokować przesunięcie. Czy w przypadku gdybym chciał zablokować przesunięcie między magazynami w obrębie tego samego działu to powinno być: Kod: if xMg.typDk=="MMo-" then if xMg.dzial.kod==xMg.dzial_przesuniecia.kod then M.
|
2017-03-17, 22:08 |
|
|
_michal
Rejestracja: 2017-02-01, 14:41 Posty: 44 Pomógł: 7
|
Re: blokada wystawiania MM w określonych przypadkach
Rafał,
chciałbym wrócić do tego.
Nie działa mi kod w miejscu, gdzie próbuje się odwołać parametru khfk - (xMg.dzial.khfk)
Podczas wystawienia dokumentu magazynowego (onbeforeinsert), chcę wywołać weryfikację tego paramertru.
Chodzi i o kod magazynu w FK (tak jak w dołączonym pliku graficznym).
M.
Załączniki:
1.png [ 2.28 KiB | Przeglądany 4432 razy ]
|
2017-08-23, 10:30 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Re: blokada wystawiania MM w określonych przypadkach
|
2017-08-23, 11:09 |
|
|
_michal
Rejestracja: 2017-02-01, 14:41 Posty: 44 Pomógł: 7
|
Re: blokada wystawiania MM w określonych przypadkach
Spróbowałem tak ja napisałeś z kontoFK, ale też mam taką samą informację przy próbie wystawienia dokumentu :(
Załączniki:
1.png [ 7.1 KiB | Przeglądany 4429 razy ]
|
2017-08-23, 18:16 |
|
|
_michal
Rejestracja: 2017-02-01, 14:41 Posty: 44 Pomógł: 7
|
Re: blokada wystawiania MM w określonych przypadkach
Rafał, próbwałem podebrać konto fk mag przez Selecta, ale też mi nie chce to działać. Kod: string typ_mag="105" string qZap1 DISPATCH rs1, con1 con1 = GetAdoConnection() rs1= "ADODB.Recordset"
qZap1="SELECT khfk FROM HM.KH where nazwa ="+(using "%s", xMg.dzial.kod)+" and typ="+typ_mag
rs1.Open(qZap1, con1)
if rs1.EOF!="" then
....
tutaj to co ma się stać
Jeśli kod magazynu zawiera spację to kod się wykrzacza. Jeśli nie ma spacji pojawia się błąd jak w załączniku.
Załączniki:
Nowy obraz mapy bitowej.jpg [ 39.95 KiB | Przeglądany 4369 razy ]
|
2017-09-13, 11:41 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Re: blokada wystawiania MM w określonych przypadkach
(1)
Kod: qZap1="SELECT khfk FROM HM.KH where nazwa ='"+(using "%s", xMg.dzial.kod)+"' and typ="+typ_mag
|
2017-09-13, 11:49 |
|
|
_michal
Rejestracja: 2017-02-01, 14:41 Posty: 44 Pomógł: 7
|
Re: blokada wystawiania MM w określonych przypadkach
Dzięki Rafał, wszystko teraz pięknie działa!
|
2017-09-15, 01:27 |
|
|
_michal
Rejestracja: 2017-02-01, 14:41 Posty: 44 Pomógł: 7
|
Re: blokada wystawiania MM w określonych przypadkach
Zamieszczam kod, gdyby kogoś interesowało. Cel: -ograniczenie przesunięć pomiedzy magazynami księgowymi dla jednej osoby. -zablokowanie przesunięć miedzy mag księgowymi (konta zespołu 3*), a magazynami, gdzie nie jest prowadzona ewid ksiegowa. -powiązanie dok. typu MM z magazynami księgowymi, dok. typu MMo z mag. 'nieksięgowymi' Kod: int Sub OnBeforeInsert(long lId)
long nCount, i Dispatch xMg, xPoz int nErr int edytuj=0
string typ_mag="105" string kontofk=""
string qZap2 DISPATCH rs2, con2 con2 = GetAdoConnection() rs2= "ADODB.Recordset"
string qZap3 DISPATCH rs3, con3 con3 = GetAdoConnection() rs3= "ADODB.Recordset"
xMg = xFactory.NewObject("BDokumentMg") nErr = xMg.Load("id="+(using "%d",lId)) if nErr then error Using "\nBłąd ładowania dokumentu magazynowego nr %l\n", nErr
if xMg.typDk=="MMo-" then
if xMg.dzial.kod==xMg.magazyn_przesuniecia.kod then
message "Nie możesz wykonać przesuniecia pomiedzy tymi samymi magazynami {Ico:!}" edytuj=-6000
else qZap2="SELECT khfk FROM HM.KH where kod ='"+(using "%s", xMg.dzial.kod)+"' and khfk!='"+kontofk+"' and typ="+typ_mag qZap3="SELECT khfk FROM HM.KH where kod ='"+(using "%s", xMg.magazyn_przesuniecia.kod)+"' and khfk!='"+kontofk+"' and typ="+typ_mag rs2.Open(qZap2, con2) rs3.Open(qZap3, con3) if !rs2.EOF || !rs3.EOF then rs2.Close() rs3.Close() message "Dokumentem MMo można przesuwać towary tylko na magazynach nieposiadająych ewidencji księgowej {Ico:!}" edytuj=-6000 else rs2.Close() rs3.Close() message "Towar zostanie przesunięty !! {Ico:!}" endif
endif endif
if xMg.typDk=="MMo+" then
if xMg.dzial.kod==xMg.magazyn_przesuniecia.kod then
message "Nie możesz wykonać przesuniecia pomiedzy tymi samymi magazynami {Ico:!}" edytuj=-6000
else qZap2="SELECT khfk FROM HM.KH where kod ='"+(using "%s", xMg.dzial.kod)+"' and khfk!='"+kontofk+"' and typ="+typ_mag qZap3="SELECT khfk FROM HM.KH where kod ='"+(using "%s", xMg.magazyn_przesuniecia.kod)+"' and khfk!='"+kontofk+"' and typ="+typ_mag rs2.Open(qZap2, con2) rs3.Open(qZap3, con3) if !rs2.EOF || !rs3.EOF then rs2.Close() rs3.Close() message "Dokumentem MMo można przesuwać towary tylko na magazynach nieposiadająych ewidencji księgowej {Ico:!}" edytuj=-6000 else rs2.Close() rs3.Close() message "Towar zostanie przesunięty !! {Ico:!}" endif
endif endif
if xMg.typDk=="MKo-" then
if xMg.dzial.kod==xMg.magazyn_przesuniecia.kod then
message "Nie możesz wykonać przesuniecia pomiedzy tymi samymi magazynami {Ico:!}" edytuj=-6000
else qZap2="SELECT khfk FROM HM.KH where kod ='"+(using "%s", xMg.dzial.kod)+"' and khfk!='"+kontofk+"' and typ="+typ_mag qZap3="SELECT khfk FROM HM.KH where kod ='"+(using "%s", xMg.magazyn_przesuniecia.kod)+"' and khfk!='"+kontofk+"' and typ="+typ_mag rs2.Open(qZap2, con2) rs3.Open(qZap3, con3) if !rs2.EOF || !rs3.EOF then rs2.Close() rs3.Close() message "Dokumentem MMo można przesuwać towary tylko na magazynach nieposiadająych ewidencji księgowej {Ico:!}" edytuj=-6000 else rs2.Close() rs3.Close() message "Towar zostanie przesunięty !! {Ico:!}" endif
endif endif
if xMg.typDk=="MKo+" then
if xMg.dzial.kod==xMg.magazyn_przesuniecia.kod then
message "Nie możesz wykonać przesuniecia pomiedzy tymi samymi magazynami {Ico:!}" edytuj=-6000
else qZap2="SELECT khfk FROM HM.KH where kod ='"+(using "%s", xMg.dzial.kod)+"' and khfk!='"+kontofk+"' and typ="+typ_mag qZap3="SELECT khfk FROM HM.KH where kod ='"+(using "%s", xMg.magazyn_przesuniecia.kod)+"' and khfk!='"+kontofk+"' and typ="+typ_mag rs2.Open(qZap2, con2) rs3.Open(qZap3, con3) if !rs2.EOF || !rs3.EOF then rs2.Close() rs3.Close() message "Dokumentem MMo można przesuwać towary tylko na magazynach nieposiadająych ewidencji księgowej {Ico:!}" edytuj=-6000 else rs2.Close() rs3.Close() message "Towar zostanie przesunięty !! {Ico:!}" endif
endif endif
if xMg.typDk=="MM-" then if ucase(xFactory.uzytkownik.kod)!="ADMIN" then message "Nie masz uprawnień do wykonywania przesunięć MM na magazynach księgowych\nZwróć sie do osob które mają takie uprawnienia {Ico:!}" edytuj=-6000 endif endif
if xMg.typDk=="MM+" then if ucase(xFactory.uzytkownik.kod)!="ADMIN" then message "Nie masz uprawnień do wykonywania przesunięć MM na magazynach księgowych\nZwróć sie do osob które mają takie uprawnienia {Ico:!}" edytuj=-6000 endif endif
if xMg.typDk=="MK-" then if ucase(xFactory.uzytkownik.kod)!="ADMIN" then message "Nie masz uprawnień do wykonywania przesunięć MM na magazynach księgowych\nZwróć sie do osob które mają takie uprawnienia {Ico:!}" edytuj=-6000 endif endif
if xMg.typDk=="MK+" then if ucase(xFactory.uzytkownik.kod)!="ADMIN" then message "Nie masz uprawnień do wykonywania przesunięć MM na magazynach księgowych\nZwróć sie do osob które mają takie uprawnienia {Ico:!}" edytuj=-6000 endif endif
OnBeforeInsert = edytuj EndSub
|
2017-09-17, 14:49 |
|
|
|
Strona 1 z 1
|
[ Posty: 10 ] |
|
Kto jest online |
Użytkownicy przeglądający to forum: Bing [Bot] i 22 gości |
|
Nie możesz tworzyć nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników
|
|
|
|