Imports System.Globalization Imports System.IO Imports System.Text Public Class MainFrm Public Tylko_Listing As Boolean Public f_out As StreamWriter ' Plik wyjściowy Private SpFlag, ZakFlag, WewFlag As Integer Private RM, Rok, Mies As Integer Private SrcConn_str, DstConn_str As String '---------------------------------------------------------- Private Const INT_lens As Integer = 1 Private p() As Integer = {2, 4, 7, 9, 3, INT_lens} Public Function Encrypt(ByVal inputstr As String) As String Dim str As StringBuilder Dim b As Integer = 6 Dim i, j, k, c, cc, bb, lens As Integer If inputstr > "" Then str = New StringBuilder(inputstr) lens = str.Length While (lens < b) OrElse (lens Mod b) str.Append(” “) lens += INT_lens End While cc = (lens / b) - INT_lens For i = 0 To cc bb = b - INT_lens For j = 0 To bb k = p(j) + 100 c = (6 * i + j) str.Replace(str.Chars(c), Chr(Asc(str.Chars(c)) + k), c, INT_lens) Next Next Return str.ToString Else Return "" End If str = Nothing End Function Public Function Decrypt(ByVal inputstr As String) As String Dim str As StringBuilder Dim b As Integer = 6 Dim i, j, k, c, c1, cc, bb, lens As Integer If inputstr > "" Then str = New StringBuilder(inputstr) lens = str.Length While (lens < b) OrElse (lens Mod b) str.Append(” “) lens += INT_lens End While cc = (lens / b) - INT_lens For i = 0 To cc bb = b - INT_lens For j = 0 To bb k = p(j) + 100 c = (6 * i + j) c1 = Asc(str.Chars(c)) c1 -= k str.Replace(str.Chars(c), Chr(c1), c, INT_lens) Next j Next i Return str.ToString Else Return "" End If str = Nothing End Function Private Function zrob_polaczenie(srv As String, baza As String, user As String, pass As String) Dim cnstr As String cnstr = "Data Source=" + srv + ";Initial Catalog=" + baza cnstr += ";Persist Security Info=false;User ID=" + Decrypt(user).Trim + ";Password=" + Decrypt(pass).Trim Return (cnstr) End Function Private Function PolaczBaze() As Boolean Dim B1, conn, pp, K1 As String Dim ret As Boolean = False lbUwaga.Text = "Czekaj: Logowanie do ERPXL" lbUwaga.Visible = True lbUwaga.BringToFront() lbUwaga.Refresh() If Strings.Left(UCase(My.Settings.BazaDst), 6) = "CDNXL_" Or Strings.Left(UCase(My.Settings.BazaDst), 6) = "ERPXL_" Then B1 = Mid(My.Settings.BazaDst, 7) Else B1 = My.Settings.BazaDst End If K1 = My.Settings.SerwerKlucza If Not Zalogowany Then listuj(" Logowanie do ERP XL - proszę czekać...") ret = Zaloguj(B1, "", "", K1) If ret Then listuj(" sprawdzanie dostępności licencji...") ret = XLSprawdzLicencje() If ret Then listuj(" Zalogowano pomyslnie do ERP XL") conn = FunkcjeXL.Polaczenie(My.Settings.BazaDst, My.Settings.SerwerDst) 'string połączenia wyznaczony przez API pp = InStr(conn, "SERVER=") conn = Mid(conn, pp) DstConn_str = conn ret = True Else listuj("!! Nie udało się pobrać licencji stanowiskowej ERP XL.") Wyloguj() End If Else listuj("!! Nie udało się zalogować") End If If Not ret Then TcZakladki.SelectedTab = TpList TpList.Select() End If lbUwaga.Text = "Czekaj: pobieranie danych" lbUwaga.Visible = False lbUwaga.Invalidate() Return ret End Function '---------------------------------------------------------- Private Sub CbWewn_CheckedChanged(sender As Object, e As EventArgs) Handles CbWewn.CheckedChanged If CbWewn.Checked Then WewFlag = 1 Else WewFlag = 0 End If OdswiezDane() End Sub Private Sub BtOdswiez_Click(sender As Object, e As EventArgs) Handles BtOdswiez.Click OdswiezDane() End Sub Private Sub CbZakup_CheckedChanged(sender As Object, e As EventArgs) Handles CbZakup.CheckedChanged If CbZakup.Checked Then ZakFlag = 1 Else ZakFlag = 0 End If OdswiezDane() End Sub Private Sub edRok_ValueChanged(sender As Object, e As EventArgs) Handles edRok.ValueChanged If IsNumeric(edRok.Value) Then Rok = edRok.Value OdswiezDane() End If End Sub Private Sub CbMiesiac_TextChanged(sender As Object, e As EventArgs) Handles CbMiesiac.TextChanged Mies = CbMiesiac.Items.IndexOf(CbMiesiac.Text) + 1 OdswiezDane() End Sub Private Sub DgvDokumenty_KeyPress(sender As Object, e As KeyPressEventArgs) 'Handles DgvDokumenty.KeyPress Dim wiersz As DataGridViewRow Dim check As Boolean Dim colWybrany, colData, kk As Integer Select Case e.KeyChar Case " " kk = 0 colWybrany = DgvDokumenty.CurrentRow.Cells("Wybrany").ColumnIndex colData = DgvDokumenty.CurrentRow.Cells("colDataImportu").ColumnIndex For Each wiersz In DgvDokumenty.SelectedRows If wiersz.Cells(colData).Value <= "1990-01-01 00:00:00" Then check = wiersz.Cells(colWybrany).Value wiersz.Cells(colWybrany).Value = Not check If (kk Mod 10) = 0 Then Application.DoEvents() End If kk += 1 Next End Select End Sub Private Sub CbSprzedaz_CheckedChanged(sender As Object, e As EventArgs) Handles CbSprzedaz.CheckedChanged If CbSprzedaz.Checked Then SpFlag = 1 Else SpFlag = 0 End If OdswiezDane() End Sub Private Sub DgvDokumenty_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs) Handles DgvDokumenty.RowPostPaint If Not DgvDokumenty.Rows(e.RowIndex).Cells("colDataImportu").Value Is DBNull.Value Then If CStr(DgvDokumenty.Rows(e.RowIndex).Cells("colDataImportu").Value) > "1990-01-01" Then DgvDokumenty.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.Red End If End Sub Private Sub BtImport_Click(sender As Object, e As EventArgs) Handles BtImport.Click Dim DoImportu As New List(Of DataGridViewRow) 'kopia zaznaczonych do importu dokumentów Dim Aktwiersz As DataGridViewRow Dim AktualnyDokument As String = "" Dim ret, Nr_ZapisuSrc As Integer If DgvDokumenty.Rows.Count > 0 Then DoImportu.Clear() 'For Each wiersz In DgvDokumenty.Rows 'zrób kopię zaznaczonych (checkboxem Do Importu) dokumentów ' If wiersz.Cells.Item("Wybrany").Value = 1 Then ' Dim targetRow = CType(wiersz.Clone(), DataGridViewRow) ' For Each cell As DataGridViewCell In wiersz.Cells ' targetRow.Cells(cell.ColumnIndex).Value = cell.Value ' Next ' DoImportu.Add(targetRow) ' End If 'Next For Each wiersz In DgvDokumenty.SelectedRows 'zrób kopię zaznaczonych na niebiesko dokumentów Dim targetRow = CType(wiersz.Clone(), DataGridViewRow) For Each cell As DataGridViewCell In wiersz.Cells targetRow.Cells(cell.ColumnIndex).Value = cell.Value Next DoImportu.Add(targetRow) Next 'zaloguj do XL listuj("Start importu: " + Now) ret = PolaczBaze() If ret Then DgvDokumenty.CurrentCell = DgvDokumenty(0, 0) Aktwiersz = DgvDokumenty.CurrentRow For Each wiersz In DoImportu Aktwiersz = wiersz DgvDokumenty.CurrentCell = DgvDokumenty(0, wiersz.Cells.Item(0).Value - 1) 'pokaż aktualnie przetwarzany wiersz If wiersz.Cells.Item(12).Value <= "1990-01-01 00:00:00" Then 'dekret nie zaimportowany AktualnyDokument = wiersz.Cells.Item(2).Value 'Nowy dekret zbiorczy Nr_ZapisuSrc = wiersz.Cells.Item(10).Value 'Dekret (DZK_GIDNumer) źródłowy If UtworzDekretZbiorczy(AktualnyDokument, wiersz.Cells.Item(5).Value, '"Data Wystawienia" wiersz.Cells.Item(6).Value, '"Data operacji" wiersz.Cells.Item(3).Value, '"Dokument źródłowy" wiersz.Cells.Item(4).Value, '"Opis dekretu" wiersz.Cells.Item(7).Value, '"Suma Ma" wiersz.Cells.Item(8).Value) Then '"Suma Winien" If DodajSkladowy(Nr_ZapisuSrc) Then 'dodaj dekrety składowe ZamknijDekret(True) 'zamknij dekret zbiorczy 'oznacz dokument jako zaimportowany AktualnyDokument = "" Else ZamknijDekret(False) 'usuń utworzony dekret zbiorczy AktualnyDokument = "" End If End If End If Next End If Tylko_Listing = False TcZakladki.SelectedTab = TpList TpList.Select() End If End Sub Private Sub BtKonfig_Click(sender As Object, e As EventArgs) Handles BtKonfig.Click dlgKonfig.ShowDialog() End Sub Private Sub Timer_Tick(sender As Object, e As EventArgs) Handles Timer.Tick Dim plik As String Timer.Stop() Try plik = My.Settings.FolderR_Roboczy + "\ImportDM-" + Replace(Replace(Replace(Now, ":", "."), "/", "."), " ", "_") + ".LOG" f_out = System.IO.File.CreateText(plik) Tylko_Listing = False Catch Tylko_Listing = True End Try Timer.Enabled = False Application.DoEvents() PolaczBaze() End Sub Private Sub BtKoniec_Click(sender As Object, e As EventArgs) Handles BtKoniec.Click Wyloguj() f_out.Flush() f_out.Close() Close() End Sub Private Sub OdswiezDane() RM = CInt(CStr(Rok) & IIf(Mies < 10, "0", "") & CStr(Mies)) SrcConn_str = zrob_polaczenie(My.Settings.SerwerSrc, My.Settings.BazaSrc, My.Settings.MCsrc, My.Settings.Comsrc) ' DstConn_str = zrob_polaczenie(My.Settings.SerwerDst, My.Settings.BazaDst, My.Settings.MCdst, My.Settings.Comdst) Me.Tamy_ImpDM_Src.Connection.ConnectionString = SrcConn_str Tamy_ImpDM_Dekr.Connection.ConnectionString = SrcConn_str Try lbUwaga.Visible = True lbUwaga.BringToFront() lbUwaga.Refresh() Me.Tamy_ImpDM_Src.Fill(Me.DsMain.Tbmy_ImpDM_Src, SpFlag, ZakFlag, WewFlag, RM, Rok, Mies) lbUwaga.Visible = False lbUwaga.Invalidate() Catch ex As System.Exception lbUwaga.Visible = False lbUwaga.Refresh() System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub MainFrm_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim spr As String SpFlag = 0 ZakFlag = 0 WewFlag = 0 Rok = Year(Now) Mies = Month(Now) spr = Encrypt(Environment.MachineName.ToUpper + Environment.UserName.ToUpper) DecimalSep = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator.ToString DecimalGroupSep = NumberFormatInfo.CurrentInfo.NumberGroupSeparator.ToString If spr <> My.Settings.check Then MsgBox("Niezgodna konfiguracja. Ustaw od nowa") My.Settings.SerwerSrc = "" My.Settings.SerwerDst = "" My.Settings.SerwerKlucza = "" My.Settings.BazaSrc = "" My.Settings.BazaDst = "" My.Settings.FolderR_Roboczy = "" My.Settings.MCsrc = "" My.Settings.MCdst = "" My.Settings.Comsrc = "" My.Settings.Comdst = "" My.Settings.check = spr My.Settings.Save() End If Timer.Start() OdswiezDane() End Sub Public Sub listuj(ByVal linia As String) If linia > "" Then LstWynik.Items.Add(linia) If Not Tylko_Listing Then f_out.WriteLine(linia) End If If (LstWynik.Items.Count - 1) > 0 Then LstWynik.TopIndex = Me.LstWynik.Items.Count - 1 Else LstWynik.TopIndex = 0 End If Application.DoEvents() End If End Sub Public Function SqlCmd(ByVal sql As String, conn_str As String) As Boolean Dim wynik As Boolean wynik = False Try Using connection As New SqlClient.SqlConnection(conn_str) Dim command As New SqlClient.SqlCommand(sql, connection) connection.Open() command.ExecuteNonQuery() wynik = True End Using Catch ex As Exception My.Forms.MainFrm.listuj(ex.Message) End Try Return (wynik) End Function End Class