/
ivan
/
ModMas
Обзор
Документация
Войти
/
ivan
/
ModMas
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ModuleMaster/fi/prntl.aspx.vb
205 строк
9 KB
i.krivokon
Initial commit
13 мар 2026, 13:49
13 мар 2026, 13:49
00d9fb6
Код
Авторство
О чём код?
Imports System.Net Imports System.IO Imports System.Data Imports sharedClasses.dbFunctions Imports System.Data.SqlClient Imports Newtonsoft.Json Partial Class FI_prntl Inherits System.Web.UI.Page Dim sqlf As New SqlFunctions Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsNothing(Request.QueryString("paramid")) Then Dim params As Hashtable = Session("params") Try Dim paramString As String = params(Request.QueryString("paramid")) If Not IsNothing(paramString) Then Dim p() As String = paramString.Split(";") Dim whatToPrint As String = Request.QueryString("form") For Each s As String In p If s.Trim <> "" Then Dim gtd = s.Split("|")(0) Dim invoice = s.Split("|")(1) Dim material = s.Split("|")(2) Dim docType As String = "" Select Case whatToPrint.ToLower Case "giform", "mx18form" 'Printing documents by date Select Case whatToPrint.ToLower Case "giform" docType = "PRINT_DOCUMENT_NUMBER" Case "mx18form" docType = "FG_GR_DOCUMENT_NUMBER" End Select Dim documents As DataTable = getDocuments(gtd, invoice, material) For Each r As DataRow In documents.Rows If r(docType) = "" Then pl.Controls.Add(getPrintForm(whatToPrint, createDocument(gtd, invoice, material, r("order_date"), docType))) Else pl.Controls.Add(getPrintForm(whatToPrint, r(docType))) End If Next Case "m4" docType = "GR_DOCUMENT_NUMBER" Dim docNumber As String = "" 'getWhGrDocuments(gtd, invoice, material) If docNumber = "" Or docNumber = "UNDEFINED" Then docNumber = CreateWHGrDoc(s) End If pl.Controls.Add(getPrintForm(whatToPrint, docNumber)) End Select End If Next End If Catch ex As Exception End Try End If End Sub Private Function CreateWHGrDoc(s As String) As String Dim params() As String = s.Split("|") Dim com As New SqlCommand With {.CommandText = "SELECT MBLNR + '-' + ZEILE FROM UserModules.[user].WMS_GR_LIST WHERE mblnr = @mblnr and matnr = @matnr"} With com.Parameters .AddWithValue("mblnr", params(3)) .AddWithValue("matnr", params(2)) End With Dim grDoc As String '= sqlf.GetScalar(com) 'If grDoc = "" Then Dim wb As WebRequest Dim url As String = HttpContext.Current.Request.Url.AbsoluteUri.ToString.Replace("prntl", "wms_gr_list").Split("?")(0) & "?d=" & params(3) wb = WebRequest.Create(url) Dim res As WebResponse = wb.GetResponse grDoc = sqlf.GetScalar(com) If grDoc = "" Then grDoc = "UNDEFINED" 'End If com.Parameters.Clear() com.CommandText = "UPDATE UserModules.[user].[WMS_GI_INFORMATION] SET GR_DOCUMENT_NUMBER ='" & grDoc & "' " & _ "WHERE GTD = @gtd AND INV = @inv AND MATERIAL = @material AND WENUM=@WENUM" With com.Parameters .AddWithValue("gtd", params(0)) .AddWithValue("inv", params(1)) .AddWithValue("material", params(2)) .AddWithValue("WENUM", params(3)) End With sqlf.NonQuery(com) Return grDoc End Function Private Function getDocuments(gtd As String, invoice As String, material As String) As DataTable Dim com As New SqlCommand With { .CommandText = "SELECT DISTINCT order_date, " & _ "isnull(PRINT_DOCUMENT_NUMBER,'') as PRINT_DOCUMENT_NUMBER, " & _ "isnull(FG_GR_DOCUMENT_NUMBER ,'') as FG_GR_DOCUMENT_NUMBER, " & _ "isnull(GR_DOCUMENT_NUMBER ,'') as GR_DOCUMENT_NUMBER " & _ "FROM UserModules.[user].[WMS_GI_INFORMATION] WHERE " & _ " GTD = @gtd AND INV = @inv AND MATERIAL = @material ORDER BY ORDER_DATE" } With com.Parameters .AddWithValue("gtd", gtd) .AddWithValue("inv", invoice) .AddWithValue("material", material) End With Return sqlf.GetData(com) End Function Private Function getWhGrDocuments(gtd As String, invoice As String, material As String) As String Dim com As New SqlCommand With { .CommandText = "SELECT TOP 1 * FROM (SELECT DISTINCT isnull(GR_DOCUMENT_NUMBER ,'') as GR_DOCUMENT_NUMBER " & _ "FROM UserModules.[user].[WMS_GI_INFORMATION] WHERE " & _ " GTD = @gtd AND INV = @inv AND MATERIAL = @material ) T" } With com.Parameters .AddWithValue("gtd", gtd) .AddWithValue("inv", invoice) .AddWithValue("material", material) End With Return sqlf.GetScalar(com) End Function Private Function createDocument(gtd As String, invoice As String, material As String, orderDate As String, docType As String) As String Dim rnd As New Random Randomize() Dim docNumber As String = orderDate.Replace("-", "").Substring(2, 6) & "-" & rnd.Next(10000).ToString.PadLeft(3, "0") Select Case docType Case "PRINT_DOCUMENT_NUMBER" docNumber = "1" & docNumber UpdateDocNumberToLIst(gtd, invoice, material, orderDate, docType, docNumber) Case "FG_GR_DOCUMENT_NUMBER" docNumber = "2" & docNumber UpdateDocNumberToLIst(gtd, invoice, material, orderDate, docType, docNumber) End Select Return docNumber End Function Private Sub UpdateDocNumberToLIst(gtd As String, invoice As String, material As String, orderDate As String, docType As String, docNumber As String) Dim com As New SqlCommand With { .CommandText = "UPDATE UserModules.[user].[WMS_GI_INFORMATION] SET " & _ docType & " ='" & docNumber & "' " & _ "WHERE GTD = @gtd AND INV = @inv AND MATERIAL = @material AND ORDER_DATE=@orderDate" } With com.Parameters .AddWithValue("gtd", gtd) .AddWithValue("inv", invoice) .AddWithValue("material", material) .AddWithValue("orderDate", orderDate) End With sqlf.NonQuery(com) End Sub Private Function getPrintForm(whatToPrint As String, docNum As String) As Panel Dim wb As WebRequest Dim url As String = HttpContext.Current.Request.Url.AbsoluteUri.ToString.Replace("prntl", whatToPrint).Split("?")(0) & "?dn=" & docNum wb = WebRequest.Create(url) Dim res As WebResponse = wb.GetResponse Dim sr As New StreamReader(res.GetResponseStream) Dim p As New Panel Dim l As New Literal l.Text = sr.ReadToEnd() p.Controls.Add(l) If pl.Controls.Count > 0 Then p.Style.Add("page-break-before", "always") End If Return p End Function #Region "WH GR Docs" Private Function getGrDocsFromWMS(Optional Material As String = "", Optional post_date As String = "") As DataTable Dim wb As WebRequest Dim url As String = "http://serkweb:8080/tools/Handlers/getwmsdata.ashx?fname=Z_RFC_MAT_DOCS&format=json&mvt=501" If Material <> "" Then url &= "&MATNR=" & Material End If If post_date <> "" Then url &= "&POST_DATE=" & post_date End If If Material <> "" Or post_date <> "" Then wb = WebRequest.Create(url) Dim res As WebResponse = wb.GetResponse Dim sr As New StreamReader(res.GetResponseStream) Return JsonToTable(sr.ReadToEnd) Else Return Nothing End If End Function Private Function JsonToTable(json As String) As DataTable Return JsonConvert.DeserializeObject(Of DataTable)(json) End Function #End Region End Class