'Public Module ImportDM Partial Public Class MainFrm Public GIDTyp, GIDFirma, GIDNumer, GIDLp As Integer 'aktualny dekret Public DecimalGroupSep As String Public DecimalSep As String Function szukaj_sep(ByVal line As String, ByVal start As Integer, ByVal separator As String) As Integer Dim i As Integer szukaj_sep = -1 i = InStr(start, line, separator, CompareMethod.Text) If i > start Then szukaj_sep = i End Function Function ToDate(Data As String) As Date Dim dd As Date Dim pos As Integer Data = Replace(Data, "/", ".") Data = Replace(Data, "-", ".") pos = szukaj_sep(Data, 1, ".") Dim TestAr() As String = Split(Data, ".", , CompareMethod.Text) If pos = 5 Then 'rrrr.mm.dd dd = DateSerial(TestAr(0), TestAr(1), TestAr(2)) Else 'dd.mm.rrrr dd = DateSerial(TestAr(2), TestAr(1), TestAr(0)) End If ToDate = dd End Function Function XL_Date(Data As Date) As Integer XL_Date = 36161 + CInt(Data.ToOADate()) End Function Function Liczba(bf As String) As String Dim w As String w = Replace(bf, ",", DecimalSep) w = Replace(bf, ".", DecimalSep) Liczba = w End Function Public Function ZamknijDekret(ByVal CzyZapisac As Boolean) As Boolean Dim ZamknijDekretZbiorczyInfo As New cdn_api.XLDekretZbiorczyInfo_20182 Dim ret As Boolean = False With ZamknijDekretZbiorczyInfo .Wersja = Wersja .Tryb = 2 'Tryb wystawienia (interakcyjny/wsadowy) .GIDTyp = GIDTyp 'GID dekretu (zwracanego po dodaniu) .GIDFirma = GIDFirma ' .GIDNumer = GIDNumer ' .GIDLp = 0 ' End With XLZamknijDekretZb(ZamknijDekretZbiorczyInfo) If wynikXL = 0 Then ret = True End If If Not CzyZapisac Then Dim KasujDekretInfo As New cdn_api.XLDekretInfo_20182 With ZamknijDekretZbiorczyInfo .Wersja = Wersja .Tryb = 2 'Tryb wystawienia (interakcyjny/wsadowy) .GIDTyp = GIDTyp 'GID dekretu (zwracanego po dodaniu) .GIDFirma = GIDFirma ' .GIDNumer = GIDNumer ' .GIDLp = 0 ' End With XLKasujDekretzb(KasujDekretInfo) End If Return (ret) End Function Public Function UtworzDekretZbiorczy(ByVal IdentKsieg As String, ByVal Data As Date, ByVal DokData As Date, ByVal DokZrodlowy As String, ByVal Opis As String, ByVal SumaCT As Decimal, ByVal SumaDT As Decimal) As Boolean Dim DekretZbiorczyInfo As New cdn_api.XLDekretZbiorczyInfo_20182 listuj(CStr(Now) + "-> Dokument: " + IdentKsieg) With DekretZbiorczyInfo .Wersja = Wersja .Tryb = 2 'Tryb wystawienia wsadowy .Data = XL_Date(Data) 'Data dekretu .DataDokumentu = XL_Date(DokData) 'Data dokumentu .KwotaDebet = Str(SumaDT) + Chr(0) 'Kwota sumaryczna winien .KwotaCredit = Str(SumaCT) + Chr(0) 'Kwota sumaryczna ma .NumerDokumentu = DokZrodlowy + Chr(0) 'Numer dokumentu źródłowego .Dziennik = My.Settings.Seria + Chr(0) 'Dziennik księgowań .Bufor = "BUFOR" + Chr(0) 'Bufor księgowań (pusty = KG) .Identyfikator = IdentKsieg 'identyfikator księgowy - numer dokument z Jastrzębia .Opis = Opis + Chr(0) 'Opis dekretu End With XLDodajDekretZb(DekretZbiorczyInfo) If wynikXL = 0 Then GIDFirma = DekretZbiorczyInfo.GIDFirma GIDTyp = DekretZbiorczyInfo.GIDTyp GIDNumer = DekretZbiorczyInfo.GIDNumer GIDLp = DekretZbiorczyInfo.GIDLp Return (True) Else GIDFirma = 0 GIDTyp = 0 GIDNumer = 0 GIDLp = 0 Return (False) End If End Function Public Function DodajSkladowy(ByVal DZKNumer As Integer) As Boolean Dim DekretSkladowyInfo As New cdn_api.XLDekretInfo_20182 Dim ret As Boolean = True Dim i As Integer Dim line As String i = 0 Try Tamy_ImpDM_Dekr.Fill(DsMain.Tbmy_ImpDM_Dekr, DZKNumer) BsTbmy_ImpDM_Dekr.ResetBindings(False) BsTbmy_ImpDM_Dekr.MoveFirst() While i < BsTbmy_ImpDM_Dekr.Count With DekretSkladowyInfo .Kwota = Str(BsTbmy_ImpDM_Dekr.Current("Kwota")) + Chr(0) 'Kwota pomnożona przez 100 .NumerDokumentu = BsTbmy_ImpDM_Dekr.Current("DokZr") + Chr(0) 'Numer dokumentu .KontoDebet = BsTbmy_ImpDM_Dekr.Current("KontoDebet") + Chr(0) 'Numer konta winien (WN) .KontoCredit = BsTbmy_ImpDM_Dekr.Current("KontoCredit") + Chr(0) 'Numer konta ma (MA) .Identyfikator = BsTbmy_ImpDM_Dekr.Current("Identyfikator") .Opis = BsTbmy_ImpDM_Dekr.Current("Opis") + Chr(0) 'Opis dekretu End With line = " Dekret-> " & BsTbmy_ImpDM_Dekr.Current("DokZr") line = line & " - Wn: " & BsTbmy_ImpDM_Dekr.Current("KontoDebet") line = line & ", Ma: " & BsTbmy_ImpDM_Dekr.Current("KontoCredit") line = line & ", kwota: " & Str(BsTbmy_ImpDM_Dekr.Current("Kwota")) listuj(line) XLDodajDekretSkl(DekretSkladowyInfo) If wynikXL <> 0 Then ret = False BsTbmy_ImpDM_Dekr.MoveNext() i += 1 End While Catch ex As System.Exception ret = False System.Windows.Forms.MessageBox.Show(ex.Message) End Try Return (ret) End Function Public Function UtworzNote(ByVal NrDokumentu As String, ByVal Data As Date, ByVal DokData As Date, ByVal DokZrodlowy As String, ByVal tresc As String) As Boolean Dim NotaInfo As New cdn_api.XLNotaInfo_20182 listuj(CStr(Now) + "-> Nota do: " + NrDokumentu) If tresc <= " " Then tresc = "brak opisu" With NotaInfo .GIDTyp = 4145 'nota uproszczona .KNPTyp = 0 .KNPNumer = 0 .KNPLp = 0 .DataWprow = XL_Date(Data) 'Data dekretu .DataDok = XL_Date(DokData) 'Data dokumentu .DataOper = XL_Date(DokData) 'Data dokumentu .Seria = My.Settings.Seria + Chr(0) .NumerDokumentu = NrDokumentu + Chr(0) 'Numer dokumentu źródłowego .Tresc = tresc + Chr(0) 'treść noty End With XLDodajNoteMem(NotaInfo) If wynikXL = 0 Then GIDFirma = NotaInfo.GIDFirma GIDTyp = NotaInfo.GIDTyp GIDNumer = NotaInfo.GIDNumer GIDLp = NotaInfo.GIDLp Return (True) Else GIDFirma = 0 GIDTyp = 0 GIDNumer = 0 GIDLp = 0 Return (False) End If End Function Public Function DodajPozycjeNoty(ByVal DZKNumer As Integer, ByVal DataDok As Date, ByVal DataOper As Date, ByVal opis As String, ByVal NrDok As String) As Boolean Dim NotaPozycjaInfo As New cdn_api.XLPozycjaNotyInfo_20182 Dim ret As Boolean = True Dim i, KKS_Wn, KKS_Ma As Integer Dim Rok As Integer Dim sql, line, KontoWn, KontoMa As String i = 0 If opis <= " " Then opis = "brak opisu" Try System.Threading.Thread.Sleep(200) 'chwilkę poczekaj na SQL Tamy_ImpDM_Dekr.ClearBeforeFill = True Tamy_ImpDM_Dekr.Fill(DsMain.Tbmy_ImpDM_Dekr, DZKNumer) BsTbmy_ImpDM_Dekr.ResetBindings(False) BsTbmy_ImpDM_Dekr.MoveFirst() While i < BsTbmy_ImpDM_Dekr.Count KontoWn = BsTbmy_ImpDM_Dekr.Current("KontoDebet") KontoMa = BsTbmy_ImpDM_Dekr.Current("KontoCredit") KKS_Wn = 0 KKS_Ma = 0 Rok = Year(DataDok) sql = "select top(1) KKS_GIDNumer from CDN.Konta where KKS_Rok = " & CStr(Rok) & " and KKS_Konto = '" & KontoWn & "'" line = GetOneVal(sql, DstConn_str) If line > "" Then KKS_Wn = CInt(line) sql = "select top(1) KKS_GIDNumer from CDN.Konta where KKS_Rok = " & CStr(Rok) & " and KKS_Konto = '" & KontoMa & "'" line = GetOneVal(sql, DstConn_str) If line > "" Then KKS_Ma = CInt(line) With NotaPozycjaInfo .Kwota = Str(BsTbmy_ImpDM_Dekr.Current("Kwota")) + Chr(0) 'Kwota .NumerDokumentu = NrDok + Chr(0) 'Numer dokumentu .KKSNumerDT = KKS_Wn .KKSNumerCT = KKS_Ma .Opis = opis + Chr(0) 'Opis z pozycji dekretu .DataDok = XL_Date(DataDok) .DataOper = XL_Date(DataDok) End With line = " pozycja -> " & BsTbmy_ImpDM_Dekr.Current("DokZr") line = line & " - Wn: " & KontoWn line = line & ", Ma: " & KontoMa line = line & ", kwota: " & Str(BsTbmy_ImpDM_Dekr.Current("Kwota")) listuj(line) XLDodajPozycjeNotyMem(NotaPozycjaInfo) If wynikXL <> 0 Then ret = False BsTbmy_ImpDM_Dekr.MoveNext() i += 1 End While Catch ex As System.Exception ret = False System.Windows.Forms.MessageBox.Show("Dodaj pozycje: " & ex.Message) End Try Return (ret) End Function Public Function ZamknijNote(ByVal CzyZapisac As Boolean) As Boolean Dim NotaInfo As New cdn_api.XLNotaInfo_20182 Dim ret As Boolean = False With NotaInfo .Wersja = Wersja .Tryb = 2 'Tryb wystawienia (interakcyjny/wsadowy) .GIDTyp = GIDTyp 'GID dekretu (zwracanego po dodaniu) .GIDFirma = GIDFirma ' .GIDNumer = GIDNumer ' .GIDLp = 0 ' End With XLZamknijNoteMem(NotaInfo) If wynikXL = 0 Then ret = True End If If Not CzyZapisac Then Dim KasNotaInfo As New cdn_api.XLNotaInfo_20182 With KasNotaInfo .Wersja = Wersja .Tryb = 2 'Tryb wystawienia (interakcyjny/wsadowy) .GIDTyp = GIDTyp 'GID dekretu (zwracanego po dodaniu) .GIDFirma = GIDFirma ' .GIDNumer = GIDNumer ' .GIDLp = 0 ' End With XLKasujNoteMem(KasNotaInfo) End If Return (ret) End Function End Class