Files
ImportDokMag/.svn/pristine/c2/c208390ae6915da254714ecbff6556bb1dfbc836.svn-base
T
2026-10-14 11:31:36 +02:00

372 lines
12 KiB
Plaintext

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