|
|
Strona 1 z 1
|
[ Posty: 5 ] |
|
Autor |
Wiadomość |
gringo
Rejestracja: 2017-11-28, 10:10 Posty: 2
|
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.
|
2017-11-28, 10:16 |
|
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4004 Pomógł: 448
|
Re: HMF2018 BDokumentPn
771 : Nie ustawiony typ dokumentu oraz nie ustawiona seria.
|
2017-11-28, 11:08 |
|
|
gringo
Rejestracja: 2017-11-28, 10:10 Posty: 2
|
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.
|
2017-11-28, 12:07 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4004 Pomógł: 448
|
Re: HMF2018 BDokumentPn
Napisałem co nie podoba się Symfonii.
Skontaktuj się z Ekspertem w celu diagnozy problemu.
|
2017-11-28, 12:34 |
|
|
Vlad Korobka
Rejestracja: 2017-09-30, 18:44 Posty: 8 Pomógł: 2
|
Re: HMF2018 BDokumentPn
(1)
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"
|
2021-03-18, 14:17 |
|
|
|
Strona 1 z 1
|
[ Posty: 5 ] |
|
Kto jest online |
Użytkownicy przeglądający to forum: Google [Bot] i 17 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
|
|
|
|