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

eStatus, ustawiać czy nie, oto jest pytanie
https://forum.mix-soft.pl/viewtopic.php?f=15&t=5252
Strona 1 z 1

Autor:  qres [ 2013-10-24, 15:22 ]
Tytuł:  eStatus, ustawiać czy nie, oto jest pytanie

Finanse i księgowość 2013.d
Witam ponownie

Wprawdzie Sage oferuje aplikację zarządzającą e-dokumentami , ale w naszym przypadku (biuro rachunkowe) tak rozbudowana funkcjonalność nie jest potrzebna, tak więc popełniłem raport umożliwiający przypisanie i podgląd e-doków(tak naprawdę to zwykłych PDF'ów) do dokumentu księgowego. Naturalnym wydawałoby się ustawić pole eStatus np. na 1 , mówiący o tym że tam jest "podczepiony" e-dokument, wtedy na liście pojawia się stosowny piktogram.
Proszę o opinie, czy pole eStatus w bazach dokumentów można bezpiecznie wykorzystać dla własnych celów ?

Autor:  wrob [ 2013-10-24, 19:46 ]
Tytuł:  Re: eStatus, ustawiać czy nie, oto jest pytanie

Taki raport do podpinania obrazków do dokumentów to juz od lat istnieje i jest nawet darmowy z tego co pamietam - prosze opisz tez dokładniej ten twoj - moze np ma jakies nowe fajne pomysly itp - z checie sie zapoznam :)

Ale jak najbardziej możesz sobie ozywać tego pola - poza e dokumentami nie jest ono używane

Autor:  qres [ 2013-10-25, 10:15 ]
Tytuł:  Re: eStatus, ustawiać czy nie, oto jest pytanie

Nie trafił mi się taki raport wcześniej, no i prawdopodobnie otwierałem zamknięte drzwi :oops:
ale ile z tym było zabawy , no i pod "prawoklikiem" mam to co chciałem :-)

trudno nazwać to praca twórczą , raczej odtwórczą, posiłkowałem się gotowymi przykładami, fragmentami raportów dostępnymi w aplikacji oraz sugestiami i przykładami publikowanymi na Tym forum :)
raport zawiera jedynie niezbędne elementy
brak w nim np. wstępnej konfiguracji oraz usuwania e-dok, ale to z czasem
Będzie potrzebny jeszcze raport analizujący powiązania e-doków z dokumentami księgowymi i usuwający nieprzypisane e-doki.
Nie potrafię również odświeżyć Listy Dokumentów aby wyświetlił natychmiast ikonkę dokumentu po aktualizacji pola eStatus.
poniżej kod który wypociłem
Kod:
#include "dbutil.sci"
#include "fkutil.sci"
#include "wrap.sci"

// zakładam istnienie pliku my-edok.ini w moim przypadku o zawartości:
// [katalogi]
// KatalogDanych = w:\\edoktest\\
// gdzie KatalogDanych to lokalizacja docelowa plików z pdf'ami

// trochę o strukturze katalogu z dokumentami
// ..KatalogDanych
//  ..nipObsługiwanejFirmy
//   ..rok
//    ..nipKontrahenta lub
//    ..typ dokumentu nie związanego z konkretnym kontrahentem np WB(wyciąg bankowy)

dispatch ws = "WScript.Shell"
dispatch fplik = "Scripting.FileSystemObject"

long    idZlisty, ZrodloDb
long i = 1, NumerKontr = 0
string szukanyPlik , NipFirmy= Firma.Nip , PodKatal, polecenie
string sPath
string katEdok
int errDo

katEdok = GetIni("katalogi","KatalogDanych",Katalog()+"\\my-edok.ini")

string sub FormatEw(string a_ew)
   buf = a_ew
   while replace " ", "_"
   wend
   while replace "/", "_"
   wend
   while replace "\\", "_"
   wend
   FormatEw = buf
endsub

string sub FormatNip(string e_ew)
   buf = e_ew
   while replace "-", ""
   wend
   FormatNip = buf
endsub

int sub przegladajPlik()
   sPath = FileDlg (1, "Dokumenty Acrobat  | *.PDF" )
   przegladajPlik = 1
endsub



            
// określamy bazę dokumentów (bufor czy księgi)
// nie znalazłem zmiennej, funkcji , czy metody która pozwoliłaby określić
// z której bazy korzysta "grid" Lista Dokumentów
// z tąd poniższy sekwencja identyfikująca na podstawie 1 indeksu userObject
// zmienna ZrodloDb określa gdzie jesteśmy 0- księgi, 1- bufor
// nie wiem czy to dobry pomysł aby grzebać w księgach ale....

#define XROWSDATA userObject
   
   idZlisty   = XROWSDATA.item( 1 ).id

BASEHANDLE  bD,bDo

   bD = dbOpenDokBase( indeksRoku(), 1, 0 ) // bufor
      bDo = bD

      SetKey( bDo, "id" )
      SetKeySeg( bDo, "id", XROWSDATA.item( 1 ).id )
      errDo = GetRec( bDo, EQ )

         if  dbNrEwToStr_Dok(bDo)==XROWSDATA.item( 1 ).numer Then
               ZrodloDb = 1
         else
               ZrodloDb = 0
         endif

      // po okrewśleniu żródła danych "skaczemy" do rekordu o ID wskazanego w parametrze Arg0
      // Arg0 zawiera id dokumentu wskazanego prawoklikiem (funkcjonalnosć dostępna jedynie gdy
      // jestesmy "na" Liście Dokumentów, i nie wiadomo czy\kiedy "zniknie")

      if ZrodloDb == 0 then
         DbClose(bD)
            bD = dbOpenDokBase( indeksRoku(), ZrodloDb, 0 )
            bDo = bD
      endif

               SetKey( bDo, "id" )
               SetKeySeg( bDo, "id", val(Arg0) )
               errDo = GetRec( bDo, EQ )

   long    Did      = GetField( bDo, "id")
   string    Dskrot      = GetField( bDo, "skrot")
   long    Dnumer      = GetField( bDo, "numer")
   string    DnumerEw   = dbNrEwToStr_Dok(bDo)
   string    Dnazwa      = GetField( bDo, "nazwa")
   string    Dtresc      = GetField( bDo, "tresc")
   long    DnrKontrah   = GetField( bDo, "kontrahent")
   string    DdataDok   = GetField( bDo, "datadok")
   string    DdataWpr   = GetField( bDo, "datawpr")
   string    DdataOper   = GetField( bDo, "dataoper")
   long    Dkwota      = GetField( bDo, "kwota")
   string    Dnip      = GetField( bDo, "nip")
   int    DeStatus   = GetField( bDo, "eStatus")
   DbClose(bD)

   DnumerEw = formatEw(DnumerEw)
   Dnip    = FormatNip(Dnip)
   NipFirmy = FormatNip(NipFirmy)
   if Dnrkontrah == 0 Then
      PodKatal = Dskrot
   else
      PodKatal = Dnip
   endif
   
   szukanyPlik = katEdok+NipFirmy+ "\\" + NazwaRoku() + "\\"+PodKatal+"\\"+DnumerEw+".PDF"

   if (fplik.FileExists(szukanyPlik)) Then
   // jeśli pdf istnieje wyświetlamy go za pomocą Acrobat Rader i zamykamy raport
      polecenie = "AcroRd32.exe "+szukanyPlik
      ws.Run(polecenie,1,0)   
      close : error ""

   else
      if !(fplik.FolderExists(katEdok)) Then
       fplik.CreateFolder(katEdok)
      endif

      if !(fplik.FolderExists(katEdok+NipFirmy)) Then
       fplik.CreateFolder(katEdok+NipFirmy)
      endif
         if !(fplik.FolderExists(katEdok+NipFirmy+"\\" + NazwaRoku())) Then
             fplik.CreateFolder(katEdok+NipFirmy+"\\" + NazwaRoku())
         endif
            if !(fplik.FolderExists(katEdok+NipFirmy+"\\" + NazwaRoku()+ "\\"+PodKatal)) Then
                fplik.CreateFolder(katEdok+NipFirmy+"\\" + NazwaRoku()+ "\\"+PodKatal)
            endif

   endif
   

   Form "Wskarz dokument PDF", 400, 110
      Medit "", sPath, 10, 10, 300, 40
      button "Szukaj", 320, 10, 60, 22, przegladajPlik()
         Button "&OK", 20, 60, 80, 22, 2
      Button "&Anuluj", 300, 60, 80, 22, -1
    int rv = execform

   if rv == 2 & len(sPath)>0 Then
      fplik.CopyFile(sPath,szukanyPlik)
      If ( Message "Czy skasować plik żródłowy ? DefBtn: &Tak=1 Btn: &Nie=2 Ico:?") == 1 Then
         fplik.DeleteFile(sPath)
      endif

               bD = dbOpenDokBase( indeksRoku(), ZrodloDb, 0 )
               bDo = bD
               SetKey( bDo, "id" )
               SetKeySeg( bDo, "id", val(Arg0) )
               errDo = GetRec( bDo, EQ )
               SetField (bDo, "eStatus", 2)
               PutRec (bDo)
               DbClose(bD)
   endif

close : error ""      

Autor:  wrob [ 2013-10-26, 03:52 ]
Tytuł:  Re: eStatus, ustawiać czy nie, oto jest pytanie

Fajnie to zrobiles :)- odezwij sie do mnie na priv to ci poszukam w wolnej chwili ten stary drugi raporcik :)

Autor:  aja [ 2014-01-07, 20:35 ]
Tytuł:  Re: eStatus, ustawiać czy nie, oto jest pytanie

Cytuj:
Wskarz
raczej wskaż ;-)

Autor:  rafal [ 2014-01-08, 09:10 ]
Tytuł:  Re: eStatus, ustawiać czy nie, oto jest pytanie

qres pisze:
[...]
Nie potrafię również odświeżyć Listy Dokumentów aby wyświetlił natychmiast ikonkę dokumentu po aktualizacji pola eStatus[...]


Poczytaj na forum o LOG_BASE

Jeżeli nie używasz eDokumentów to nie bałbym się używać pola estatus.

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