378 lines
13 KiB
Plaintext
378 lines
13 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
|
|
listuj("Start importu: " + Now)
|
|
My.Forms.MainFrm.listuj(" Logowanie do ERP XL - proszę czekać...")
|
|
ret = Zaloguj(B1, "", "", K1)
|
|
If ret Then
|
|
My.Forms.MainFrm.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
|
|
|
|
Select Case e.KeyChar
|
|
Case " "
|
|
For Each wiersz In DgvDokumenty.SelectedRows
|
|
If wiersz.Cells("DataImportu").Value <= "1990-01-01 00:00:00" Then
|
|
wiersz.Cells("Wybrany").Value = Not wiersz.Cells("Wybrany").Value
|
|
End If
|
|
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 B1, conn, pp, K1 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 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
|
|
'zaloguj do XL
|
|
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
|
|
listuj("Start importu: " + Now)
|
|
My.Forms.MainFrm.listuj(" Logowanie do ERP XL - proszę czekać...")
|
|
ret = Zaloguj(B1, "", "", K1)
|
|
If ret Then
|
|
My.Forms.MainFrm.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
|
|
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
|
|
Else
|
|
listuj("!! Nie udało się pobrać licencji stanowiskowej ERP XL.")
|
|
Wyloguj()
|
|
End If
|
|
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
|
|
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
|