mojaSymfonia FORUM
https://forum.mix-soft.pl/

Domyślne dokumenty i serie dla rejestru pieniężnego
https://forum.mix-soft.pl/viewtopic.php?f=15&t=6944
Strona 1 z 1

Autor:  warden [ 2015-12-02, 22:28 ]
Tytuł:  Domyślne dokumenty i serie dla rejestru pieniężnego

Witam

Poszukuje informacji jak z obiektu BDokumentPn przejść przez rejestr i wydobyć skojarzone typy dokumentów wpłaty/wypłaty wraz z ich seriami.
Na podstawie wbudowanych raportów wyrzeźbiłem taki testowy raport, niestety nie mam punktu zaczepienia jak to kontynuować.
Kod:
dispatch xDokPn = xFactory.NewObject("BDokumentPn")
xDokPn.Load(using "kod='%s'", sKodPlatnosci)
// (...)
dispatch xRejPn = xDokPn.rejestr.LoadFullObject()

Kod ma posłużyć do automatycznego (gdzie się da) wypełniania pól importowanych płatności (właściwy raport importu płatności jest i działa ale straszy zaszytymi na sztywno kwiatkami, co utrudnia rozbudowe o kolejne rejestry):
Kod:
xDokPn.UstawTypDK("PADD")
xDokPn.UstawSerie("sPADD")

Z góry dzięki za wskazówki

EDIT: Symfonia Handel ERP 2015.c

Autor:  rafal [ 2015-12-03, 00:07 ]
Tytuł:  Re: Domyślne dokumenty i serie dla rejestru pieniężnego

W tym przypadku obiektami może być Ci ciężko to wyciągnąć.
Ale możesz zrobić to z poziomu bazy.

Przykładowo rejestr który Cię interesuje to : BANK EUR

Kod:
SELECT       idTX
FROM            HM.KH
WHERE        (kod = 'BANK EUR') AND (typ = 104)


Pole idTX zawiera id rekordu z ustawieniami domyślnych dokumentów w tabeli [HM].[TX]

Kod:
SELECT *
FROM HM.TX
WHERE id = wartość_z_pola_idTx_tabeli_KH


Ustawienia trzymane są w polu opis w niespodziewanej postaci

Przykład wartości :
Kod:
trybRozliczania='0' typRaportu='' seriaKorekty='' typWplaty='BP' seriaWplaty='sBP' typWyplaty='BW' seriaWyplaty='sBW' parametrFK=''


O to chodziło?

Autor:  warden [ 2015-12-03, 17:57 ]
Tytuł:  Re: Domyślne dokumenty i serie dla rejestru pieniężnego

Dziekuje bardzo. O to chodzilo, chociaz mialem nadzieje ze da sie to zrobic jakos ladniej.
Trudno, w efekcie powstala u mnie funkcja owijajaca caly mechanizm do pobierania.
Moze komus sie przyda, wszelkie sugestie mile widziane :)

Kod:
string sub INT_getRejestrPnParam(string sRejestrKod, string sParametr)
   dispatch con = GetAdoConnection()
   dispatch rs = "ADODB.Recordset"
   INT_getRejestrPnParam = ""
   
   string sTemplate = "SELECT CASE WHEN (CHARINDEX ( '%s=''', TX.opis ) = 0) THEN '' ELSE SUBSTRING( TX.opis, CHARINDEX ( '%s=''', TX.opis ) + LEN('%s='''), CHARINDEX( '''', SUBSTRING( TX.opis, CHARINDEX ( '%s=''', TX.opis ) + LEN('%s='''), 10) ) - 1) END AS OUT FROM HM.KH WITH (NOLOCK) INNER JOIN HM.TX WITH (NOLOCK) ON (KH.idTX = TX.id) WHERE (KH.kod = '%s') AND (KH.typ = 104)"
   string sSQL = using sTemplate, sParametr, sParametr, sParametr, sParametr, sParametr, sRejestrKod

   if rs.State == 1 then rs.Close()
   rs.Open ( sSQL ,con,3)
   
   if rs.RecordCount > 0 then
      rs.MoveFirst()
      if !rs.EOF then
         INT_getRejestrPnParam = rs.Fields("OUT").Value
      endif
   endif
   rs.Close()
endsub

Autor:  rafal [ 2015-12-03, 18:19 ]
Tytuł:  Re: Domyślne dokumenty i serie dla rejestru pieniężnego

Sugestie raczej zbędne bo widać, że dobrze czujesz się w SQLu.
Do wydostania wartości tych parametrów z pola opis możesz użyć Find Regular z AmBasica

Kod:
string sub INT_getRejestrPnParam(string sRejestrKod, string sParametr)
   dispatch con = GetAdoConnection()
   dispatch rs = "ADODB.Recordset"
   
   string sSQL = using "SELECT opis FROM HM.KH INNER JOIN HM.TX ON (KH.idTX = TX.id) WHERE (KH.kod = '%s') AND (KH.typ = 104)", sRejestrKod

   if rs.State == 1 then rs.Close()
   rs.Open ( sSQL ,con,3)
   
   if rs.RecordCount > 0 then
         buf = rs.Fields("opis").Value
       if find regular (using "^*%s/='{*}'*$", sParametr) then INT_getRejestrPnParam = regular 1
   endif
   rs.Close()
endsub

print INT_getRejestrPnParam("BANK EUR", "typWplaty")

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/