mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
blokada wystawiania MM w określonych przypadkach https://forum.mix-soft.pl/viewtopic.php?f=15&t=7825 |
Strona 1 z 1 |
Autor: | _michal [ 2017-03-17, 15:39 ] |
Tytuł: | 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. |
Autor: | rafal [ 2017-03-17, 16:57 ] |
Tytuł: | 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. |
Autor: | _michal [ 2017-03-17, 22:08 ] |
Tytuł: | 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. |
Autor: | _michal [ 2017-08-23, 10:30 ] | ||
Tytuł: | 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.
|
Autor: | rafal [ 2017-08-23, 11:09 ] |
Tytuł: | Re: blokada wystawiania MM w określonych przypadkach |
zobacz Kod: xMg.dzial.kontoFK |
Autor: | _michal [ 2017-08-23, 18:16 ] | ||
Tytuł: | 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 :(
|
Autor: | _michal [ 2017-09-13, 11:41 ] | ||
Tytuł: | 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.
|
Autor: | rafal [ 2017-09-13, 11:49 ] |
Tytuł: | Re: blokada wystawiania MM w określonych przypadkach |
Kod: qZap1="SELECT khfk FROM HM.KH where nazwa ='"+(using "%s", xMg.dzial.kod)+"' and typ="+typ_mag |
Autor: | _michal [ 2017-09-15, 01:27 ] |
Tytuł: | Re: blokada wystawiania MM w określonych przypadkach |
Dzięki Rafał, wszystko teraz pięknie działa! |
Autor: | _michal [ 2017-09-17, 14:49 ] |
Tytuł: | 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 |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |