mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
HMF2018 BDokumentPn https://forum.mix-soft.pl/viewtopic.php?f=15&t=8213 |
Strona 1 z 1 |
Autor: | gringo [ 2017-11-28, 10:16 ] |
Tytuł: | HMF2018 BDokumentPn |
Witam, Próbuje za pomocą obiektu BDokumentPn wystawić dokument płatności ale dostaję błąd 771, błąd nie jest opisany w dokumentacji, próbowałem z róznymi typami, seriami, rejestrami i cały czas dostaję błąd 771. Poniżej kod: dispatch xDokPn = xFActory.NewObject("BDokumentPn") xDokPn.Edit() xDokPn.UstawTypDK("BP") xDokPn.UstawSerie("sBP") xDokPn.UstawRejestr("kod='BANK HANDLOWY WARSZAWA'") xDokPn.UstawKwote(500) xDokPn.opis = "opis" xDokPn.termin = "2017-11-28" xDokPn.data_platnosci = "2017-11-28" xDokPn.DaneKh.khKod= "ABC" xDokPn.GenerujNumer() print xDokPn.Save() Proszę o pomoc. |
Autor: | rafal [ 2017-11-28, 11:08 ] |
Tytuł: | Re: HMF2018 BDokumentPn |
771 : Nie ustawiony typ dokumentu oraz nie ustawiona seria. |
Autor: | gringo [ 2017-11-28, 12:07 ] |
Tytuł: | Re: HMF2018 BDokumentPn |
Dziękuje za odpowiedź. Ale przecież ustawiam typ dokumentu i serię jak w kodzie powyżej (czy robię to niewłaściwie?) , próbowałem z różnymi typami i seriami. Ponadto chcąc wyświetlić listę komunikatów za pomocą poniższego kodu zwraca, że kolekcja nie zawiera elementów. dispatch xKom = xFactory.komunikaty int iKom for iKom = 1 to iKom > xKom.count print using "%s\n", xKom.tresc next iKom Ale lista komunikatów jest mniej ważna, ważne dla mnie jest wystawienie dokumentu płatności. Pozdrawiam i dziękuje za odpowiedzi. |
Autor: | rafal [ 2017-11-28, 12:34 ] |
Tytuł: | Re: HMF2018 BDokumentPn |
Napisałem co nie podoba się Symfonii. Skontaktuj się z Ekspertem w celu diagnozy problemu. |
Autor: | Vlad Korobka [ 2021-03-18, 14:17 ] |
Tytuł: | Re: HMF2018 BDokumentPn |
na Centrum Wiedzy jest info: Kod: 1 Wstęp Wystawianie dokumentów płatności w programie Handel Forte umożliwia obiekt biznesowy BDokumentPn. Wszystkie zaprezentowane przykłady jego użycia napisane zostały w języku raportów. W każdym przykładzie gdzie ma miejsce odwołanie do obiektów biznesowych poprzez konkretne kody i identyfikatory, należy oczywiście dostosować takie odwołania do konkretnych danych firmy. 2 Wystawianie i rozliczanie płatności 2.1 Przykład 1 //Przykład tworzenia dokumentu wpłaty w rejestrze BANK //Potrzebne obiekty biznesowe: //rejestr płatności dispatch xRejPn = xFactory.NewObject("BRejestr") //Zakladamy ze taki rejestr istnieje ... if xRejPn.load("kod=BANK") then message "Nie znaleziono rejestru BANK.": error "" //... i ma ustawione odpowiednie typy dokumentów i serie dla wypłat if xRejPn.typWyplaty == "" then message "W rejestrze BANK nie okreslono typu dla dokumentu wypłaty.": error "" if xRejPn.seriaWyplaty == "" then message "W rejestrze BANK nie okreslono serii dla dokumentu wypłaty.": error "" //kontrahent dispatch xKh = xFactory.NewObject("BKh") xKh.load("kod=") //Ładujemy listę kontrahentów if !xKh then message "Próba załadowania kontrahentów nie powiodła się.": error "" //dokument płatności dispatch xDokumentPn = xFactory.NewObject("BDokumentPn") int nRes xDokumentPn.Clear() nRes = xDokumentPn.Edit() if !nRes then xDokumentPn.Quiet = 0 xDokumentPn.Wyplata = 1 //wypłata xDokumentPn.rejestr = xRejPn //rejestr płatności xDokumentPn.typDk = xRejPn.typWyplaty //typ dokumentu xDokumentPn.seria = xRejPn.seriaWyplaty //seria dokumentu xDokumentPn.data_platnosci = data() //dzisiejsza data xDokumentPn.Termin = data() if xKh.item(1) then //pierwszy kontrahent z lisy xDokumentPn.danekh.KhTyp= 1 //kontrahent xDokumentPn.danekh.KhKod = xKh.item(1).kod //kod kontrahenta endif xDokumentPn.opis = "Test" xDokumentPn.Kwota = 100 nRes = xDokumentPn.Save() endif if nRes then xDokumentPn.Undo() message "Próba dodania płatności nie powiodła się": error "" else message using "Wystawiono dokument o numerze: %s", xDokumentPn.numer endif 2.2 Przykład 2 //Przykład tworzenia dokumentu wypłaty w rejestrze BANK dispatch xRejPn = xFactory.NewObject("BRejestr") if xRejPn.load("kod=BANK") then message "Nie znaleziono rejestru BANK.": error "" dispatch xDokumentPn = xFactory.NewObject("BDokumentPn") int nRes xDokumentPn.Clear() nRes = xDokumentPn.Edit() if !nRes then xDokumentPn.Quiet = 0 xDokumentPn.Wyplata = 0 //wpłata xDokumentPn.rejestr = xRejPn //rejestr płatności xDokumentPn.typDk = "BP" //typ dokumentu xDokumentPn.seria = "sBP" //seria dokumentu xDokumentPn.schemat = "WPL" //schemat księgowania xDokumentPn.data_platnosci = data() //dzisiejsza data xDokumentPn.Termin = data() xDokumentPn.danekh.KhTyp= 1 //kontrahent xDokumentPn.danekh.KhKod = "AUTOSTRADA WIELKOPOLSKA S.A." //kod kontrahenta xDokumentPn.opis = "Test" //opis dokumentu xDokumentPn.Kwota = 200 //kwota dokumentu nRes = xDokumentPn.Save() endif if nRes then xDokumentPn.Undo() message "Próba dodania płatności nie powiodła się": error "" else message using "Wystawiono dokument o numerze: %s", xDokumentPn.numer endif 2.3 Przykład 3 //Rozliczenie dokumentów płatności dispatch xDokumentPn = xFactory.NewObject("BDokumentPn") dispatch xRozliczeniePn int err err = xDokumentPn.Load("kod='269/07/07/BP'") //err = xDokumentPn.Load("id=37") if err then message "Próba załadowania dokumentu płatności nie powiodłą się.": error "" err = xDokumentPn.Edit() if err then message "Próba pobrania dokumentu płatności do edycji nie powiodłą się.": error "" //pobieramy z obiektu rozliczeń konkretne rozliczenie po kodzie lub id if xDokumentPn.rozliczeniaPn then xRozliczeniePn = xDokumentPn.rozliczeniaPn.findrozl("numerSecPn='269/06/07/BW'") //xRozliczeniePn = xDokumentPn.rozliczeniaPn.findrozl("idSecPn=54") //po id else message "Brak rozliczeń": error "" endif if !xRozliczeniePn then message "Nie odnaleziono rozliczenia": error "" else //ustawiamy wartość rozliczenia xRozliczeniePn.wartosc = 50 //na konkretną kwotę //lub rozliczającą w całości jeden lub obydwa dokumenty //iif(xRozliczeniePn.kwotaSecPn < xDokumentPn.kwotaDoRozl, xRozliczeniePn.kwotaSecPn, xDokumentPn.kwotaDoRozl) endif err = xDokumentPn.Save() if err then xDokumentPn.Undo() message "Rozliczenie pomiędzy dokumentami nie powiodło się" endif 2.4 Przykład 4 //Przykład tworzenia i rozliczania dokumentów płatności //Tworzenie wpłaty, wypłaty w rejestrze BANK i rozliczenie ich pomiędzy sobą //Zakladamy ze taki rejestr istnieje i ma ustawione odpowiednie typy dokumentów i serie dla wplat i wypłat dispatch xRejPn = xFactory.NewObject("BRejestr") dispatch xKh = xFactory.NewObject("BKh") dispatch xDokumentPn = xFactory.NewObject("BDokumentPn") dispatch xRozliczeniePn int err //funkcja dodaje nowy dokument int sub AddDokPn(int wyplata, float fKwota, dispatch xShortKh) int nRes = 0 xDokumentPn.Clear() nRes = xDokumentPn.Edit() if !nRes then if wyplata then xDokumentPn.Quiet = 0 xDokumentPn.Wyplata = 1 xDokumentPn.Quiet = 1 xDokumentPn.rejestr = xRejPn xDokumentPn.typDk = xRejPn.typWyplaty xDokumentPn.seria = xRejPn.seriaWyplaty else xDokumentPn.Quiet = 0 xDokumentPn.Wyplata = 0 //zobowiazanie xDokumentPn.Quiet = 1 xDokumentPn.rejestr = xRejPn xDokumentPn.typDk = xRejPn.typWplaty xDokumentPn.seria = xRejPn.seriaWplaty endif xDokumentPn.data_platnosci = data() xDokumentPn.Termin = data() if xShortKh then xDokumentPn.danekh.KhTyp= 1 //KHtypKH xDokumentPn.danekh.KhKod = xShortKH.kod endif xDokumentPn.opis = "Test rozliczeń" if fKwota < 0 then fKwota = -fKwota xDokumentPn.Kwota = fKwota nRes = xDokumentPn.Save() endif if nRes then xDokumentPn.Undo() AddDokPn = nRes EndSub if xRejPn.load("kod=BANK") then message "Nie znaleziono rejestru BANK.": error "" if xRejPn.typWplaty == "" then message "W rejestrze BANK nie okreslono typu dla dokumentu wpłaty.": error "" if xRejPn.seriaWplaty == "" then message "W rejestrze BANK nie okreslono serii dla dokumentu wpłaty.": error "" if xRejPn.typWyplaty == "" then message "W rejestrze BANK nie okreslono typu dla dokumentu wypłaty.": error "" if xRejPn.seriaWyplaty == "" then message "W rejestrze BANK nie okreslono serii dla dokumentu wypłaty.": error "" long idFirstPn string sKodFirsPn xKh.load("kod=") if xKh then if AddDokPn(0,900,xKh.item(1)) then message "Próba dodania pierwszej płatności nie powiodła się": error "" idFirstPn = xDokumentPn.id sKodFirsPn = xDokumentPn.numer if AddDokPn(1,100,xKh.item(1)) then message "Próba dodania drugiej płatności nie powiodła się": error "" endif //a teraz rozliczymy nasz drugi dokument z pierwszym err = xDokumentPn.Edit() if err then message "Próba pobrania dokumentu płatności do edycji nie powiodłą się.": error "" if xDokumentPn.rozliczeniaPn then xRozliczeniePn = xDokumentPn.rozliczeniaPn.findrozl(using "idSecPn=%d",idFirstPn) //mozemy też wyszukiwać po numerze/kodzie // xRozliczeniePn = xDokumentPn.rozliczeniaPn.findrozl(using "numerSecPn='%s'",sKodFirsPn) if xRozliczeniePn then xRozliczeniePn.wartosc = iif(xRozliczeniePn.kwotaSecPn < xDokumentPn.kwotaDoRozl, xRozliczeniePn.kwotaSecPn, xDokumentPn.kwotaDoRozl) endif endif err = xDokumentPn.Save() if err then xDokumentPn.Undo() message "Rozliczenie pomiędzy dokumentami nie powiodło się" endif 3 Wystawianie i rozliczanie transferów 3.1 Przykład 1 //Przykład tworzenia i rozliczenia transferu w rejestrze BANK dispatch xRejPn = xFactory.NewObject("BRejestr") if xRejPn.load("kod=BANK") then message "Nie znaleziono rejestru BANK.": error "" dispatch xRejPn2 = xFactory.NewObject("BRejestr") if xRejPn2.load("kod=KASA") then message "Nie znaleziono rejestru KASA.": error "" dispatch xDokumentPn = xFactory.NewObject("BDokumentPn") int nRes xDokumentPn.Clear() nRes = xDokumentPn.Edit() if !nRes then xDokumentPn.Quiet = 0 xDokumentPn.Wyplata = 1 //wypłata xDokumentPn.rejestr = xRejPn //rejestr płatności xDokumentPn.typDk = "TR-" //typ dokumentu xDokumentPn.seria = "sTR-" //seria dokumentu xDokumentPn.schemat = "TR-" //schemat księgowania xDokumentPn.data_platnosci = data() //dzisiejsza data xDokumentPn.Termin = data() xDokumentPn.danekh.KhTyp= 104 //rejestr xDokumentPn.rejestr_transferu = xRejPn2 //rejestr transferu xDokumentPn.opis = "Test" //opis dokumentu xDokumentPn.Kwota = 100 //kwota dokumentu nRes = xDokumentPn.Save() endif if nRes then xDokumentPn.Undo() message "Próba dodania TR- nie powiodła się": error "" endif //Tworzymy TR+ dispatch xDokumentPn2 xDokumentPn2 = xDokumentPn.StworzPnDoPn if !xDokumentPn2 then message "Próba utworzenia TR- nie powiodła się": error "" else nRes = xDokumentPn2.Save() endif if !nRes then message using "Wystawiono dokumenty: %s, %s", xDokumentPn.numer, xDokumentPn2.numer endif 4 Tworzenie i rozliczanie rozrachunków walutowych 4.1 Przykład 1 //Przykład tworzenia i rozliczania rozrachunku walutowego dispatch xRejPn = xFactory.NewObject("BRejestr") if xRejPn.load("kod=KASA") then message "Nie znaleziono rejestru KASA.": error "" dispatch xDokumentPn = xFactory.NewObject("BDokumentPn") int nRes xDokumentPn.Clear() nRes = xDokumentPn.Edit() if !nRes then xDokumentPn.Quiet = 0 xDokumentPn.rejestr = xRejPn //rejestr płatności xDokumentPn.Wyplata = 3 //zobowiazanie xDokumentPn.typDk = "ZB" //typ dokumentu xDokumentPn.data_platnosci = data() //dzisiejsza data xDokumentPn.Termin = data() xDokumentPn.danekh.KhTyp= 1 //kontrahent xDokumentPn.danekh.KhKod = "kontrahent2" //kod kontrahenta xDokumentPn.opis = "Test" //opis dokumentu xDokumentPn.Kwota = 200 //kwota dokumentu w euro xDokumentPn.waluta = "EUR" //waluta dokumentu xDokumentPn.kurs = 3.01 //kurs waluty nRes = xDokumentPn.Save() endif if nRes then xDokumentPn.Undo() message "Próba dodania płatności nie powiodła się": error "" //else // message using "Wystawiono dokument o numerze: %s", xDokumentPn.numer endif //rozliczamy zobowiazanie naleznoscia dispatch xRozliczeniePn nRes = xDokumentPn.Edit() if nRes then message "Próba pobrania dokumentu płatności do edycji nie powiodłą się.": error "" //pobieramy z obiektu rozliczeń konkretne rozliczenie po kodzie lub id if xDokumentPn.rozliczeniaPn then xRozliczeniePn = xDokumentPn.rozliczeniaPn.findrozl("numerSecPn='0002/07/FVS'") //xRozliczeniePn = xDokumentPn.rozliczeniaPn.findrozl("idSecPn=54") po id else message "Brak rozliczeń": error "" endif if !xRozliczeniePn then message "Nie odnaleziono rozliczenia": error "" else //podajemy kwote rozliczenia w walucie rozliczanego zobowiazania xRozliczeniePn.data = data() //data rozliczenia xRozliczeniePn.wartosc = 10 //kwota rozliczenia xRozliczeniePn.kurs = 3.02 //kurs rozliczenia (euro) endif nRes = xDokumentPn.Save() if nRes then xDokumentPn.Undo() message "Rozliczenie pomiędzy dokumentami nie powiodło się" endif 4.2 Przykład 2 //Przykład tworzenia i rozliczania rozrachunku walutowego platnością dispatch xRejPn = xFactory.NewObject("BRejestr") if xRejPn.load("kod=KASA") then message "Nie znaleziono rejestru KASA.": error "" dispatch xDokumentPn = xFactory.NewObject("BDokumentPn") int nRes xDokumentPn.Clear() nRes = xDokumentPn.Edit() if !nRes then xDokumentPn.Quiet = 0 xDokumentPn.rejestr = xRejPn //rejestr płatności xDokumentPn.Wyplata = 2 //naleznosc xDokumentPn.typDk = "NL" //typ dokumentu xDokumentPn.data_platnosci = data() //dzisiejsza data xDokumentPn.Termin = data() xDokumentPn.danekh.KhTyp= 1 //kontrahent xDokumentPn.danekh.KhKod = "kontrahent2" //kod kontrahenta xDokumentPn.opis = "Test" //opis dokumentu xDokumentPn.Kwota = 100 //kwota dokumentu xDokumentPn.waluta = "EUR" //waluta dokumentu xDokumentPn.kurs = 3.01 //kurs waluty nRes = xDokumentPn.Save() endif if nRes then xDokumentPn.Undo() message "Próba dodania płatności nie powiodła się": error "" endif //rozliczamy nowa płatnością dispatch xDokumentPn2 xDokumentPn2 = xDokumentPn.StworzPnDoPn if !xDokumentPn2 then message "Próba utworzenia płatności do rozrachubku nie powiodła się": error "" else nRes = xDokumentPn2.Save() endif if !nRes then message using "Wystawiono dokumenty: %s, %s", xDokumentPn.numer, xDokumentPn2.numer endif 4.3 Przykład 3 //Przykład tworzenia i rozliczania 2 rozrachunków walutowych dispatch xRejPn = xFactory.NewObject("BRejestr") if xRejPn.load("kod=KASA") then message "Nie znaleziono rejestru KASA.": error "" //kontrahent dispatch xKh = xFactory.NewObject("BKh") xKh.load("kod=") //Ładujemy listę kontrahentów if !xKh then message "Próba załadowania kontrahentów nie powiodła się.": error "" dispatch xDokumentPn = xFactory.NewObject("BDokumentPn") int nRes xDokumentPn.Clear() nRes = xDokumentPn.Edit() if !nRes then xDokumentPn.Quiet = 0 xDokumentPn.rejestr = xRejPn //rejestr płatności xDokumentPn.Wyplata = 3 //zobowiazanie xDokumentPn.typDk = "ZB" //typ dokumentu xDokumentPn.data_platnosci = data() //dzisiejsza data xDokumentPn.Termin = data() xDokumentPn.danekh.KhTyp= 1 //kontrahent xDokumentPn.danekh.KhKod = xKh.item(1).kod //kod kontrahenta xDokumentPn.opis = "Test" //opis dokumentu xDokumentPn.Kwota = 200 //kwota dokumentu w euro xDokumentPn.waluta = "EUR" //waluta dokumentu xDokumentPn.kurs = 3.01 //kurs waluty nRes = xDokumentPn.Save() endif if nRes then xDokumentPn.Undo() message "Próba dodania zobowiązania nie powiodła się": error "" //else // message using "Wystawiono dokument o numerze: %s", xDokumentPn.numer endif //zachowujemy id i kod zobowiazania long idFirstPn string sKodFirsPn idFirstPn = xDokumentPn.id sKodFirsPn = xDokumentPn.numer //tworzymy naleznosc xDokumentPn.Clear() nRes = xDokumentPn.Edit() if !nRes then xDokumentPn.Quiet = 0 xDokumentPn.rejestr = xRejPn //rejestr płatności xDokumentPn.Wyplata = 2 //naleznosc xDokumentPn.typDk = "NL" //typ dokumentu xDokumentPn.data_platnosci = data() //dzisiejsza data xDokumentPn.Termin = data() xDokumentPn.danekh.KhTyp= 1 //kontrahent xDokumentPn.danekh.KhKod = xKh.item(1).kod //kod kontrahenta xDokumentPn.opis = "Test" //opis dokumentu xDokumentPn.Kwota = 100 //kwota dokumentu xDokumentPn.waluta = "USD" //waluta dokumentu xDokumentPn.kurs = 2.89 //kurs waluty nRes = xDokumentPn.Save() endif if nRes then xDokumentPn.Undo() message "Próba dodania należności nie powiodła się": error "" endif //rozliczamy zobowiazanie naleznoscia w kwocie rozliczającej całkowicie jednen z rozrachunków dispatch xRozliczeniePn nRes = xDokumentPn.Edit() if nRes then message "Próba pobrania dokumentu płatności do edycji nie powiodłą się.": error "" if xDokumentPn.rozliczeniaPn then xRozliczeniePn = xDokumentPn.rozliczeniaPn.findrozl(using "idSecPn=%d",idFirstPn) //mozemy też wyszukiwać po numerze/kodzie // xRozliczeniePn = xDokumentPn.rozliczeniaPn.findrozl(using "numerSecPn='%s'",sKodFirsPn) if xRozliczeniePn then xRozliczeniePn.data = data() //data rozliczenia xRozliczeniePn.kurs = 2.90 //kurs rozliczenia (USD) xRozliczeniePn.kursSecPn = 3.01 //kurs rozliczenia (EUR) //ustalamy kwote rozliczenia, porownujac wartosci w walucie dokumentu rozliczanego xRozliczeniePn.wartosc = iif(xRozliczeniePn.kwotaSecPnWalDk < xDokumentPn.kwotaDoRozl, xRozliczeniePn.kwotaSecPnWalDk, xDokumentPn.kwotaDoRozl) endif endif print using "%f\n", xRozliczeniePn.wartosc nRes = xDokumentPn.Save() if nRes then xDokumentPn.Undo() message "Rozliczenie pomiędzy dokumentami nie powiodło się" endif 5 Rozliczenia z FK 5.1 Przykład 1 //Utworzenie rozliczenia z FK dla dokumentu płatności //Deklaracje zmiennych Dispatch xPn, xRozl long nCount, i int nErr //inicjalizacja i załadowanie obiektu dokumentu płatności xPn = xFactory.NewObject("BDokumentPn") nErr = xPn.Load("kod='0001/07/FVS'") //przykładowy dokument płatności if nErr then error Using "\nBłąd nr %l\n", nErr //utworzenie rozliczenia z FK na 14.20 PLN nErr = xPn.rozliczeniaPn.RozliczZFK(14.2) if nErr then error Using "\nBłąd nr %l\n", nErr //wypisanie rozliczeń dla danego dokumentu Print Using "\n\t Rozliczenia dokumentu '%s'", xPn.numer print Using "\n\t Obiekt managera rozliczeń:\tilosc = %f\t\t wartosc = %f\n\n", xPn.rozliczeniaPn.ilosc, xPn.operacja.rozliczeniaPn.wartosc nCount = xPn.rozliczeniaPn.Count() print Using "istnieje %d rozliczen:\n", nCount for i=1 to i>nCount xRozl = xPn.rozliczeniaPn.item(i) print Using "\tidRozl= %d\t ilosc= %f\t wartosc= %f\t numerOp= '%s'\n", xRozl.id, xRozl.ilosc, xRozl.wartosc, xRozl.numerSecPn next i //koniec raportu Print "\nRaport zakończony pomyślnie\n" |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |