/
ivan
/
ModMas
Обзор
Документация
Войти
/
ivan
/
ModMas
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ModuleMaster/fi/m4.aspx.vb
138 строк
7 KB
i.krivokon
Initial commit
13 мар 2026, 13:49
13 мар 2026, 13:49
00d9fb6
Код
Авторство
О чём код?
Imports System.Data Imports sharedClasses.dbFunctions Imports System.Net Imports Newtonsoft.Json Imports System.IO Partial Class FI_M4 Inherits System.Web.UI.Page Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load Dim docNumber As String = Request.QueryString("dn") If Not IsNothing(docNumber) Then Dim ltr As New LiteralControl ltr.Text = form1.InnerHtml form1.InnerHtml = "" form1.Controls.Add(ltr) Dim first As Boolean = True Try For Each dr As DataRow In GetDocInfo(docNumber, 1).Rows If first Then ltr.Text = ltr.Text.Replace("@DOC_NUMBER", dr("docNumber")) ltr.Text = ltr.Text.Replace("@DOC_DATE", dr("docDate").ToString.Substring(0, 4) _ & "-" & dr("docDate").ToString.Substring(4, 2) _ & "-" & dr("docDate").ToString.Substring(6, 2)) ltr.Text = ltr.Text.Replace("@VENDOR_CODE", dr("VENDOR_CODE")) ltr.Text = ltr.Text.Replace("@VENDOR", dr("VENDOR")) ltr.Text = ltr.Text.Replace("@INVOICE", dr("INVOICE")) ltr.Text = ltr.Text.Replace("@DESC", dr("description")) ltr.Text = ltr.Text.Replace("@MATERIAL", dr("material")) ltr.Text = ltr.Text.Replace("@GTD", dr("gtd")) Dim uom, uomCode As String Select Case dr("UOM").ToString.ToUpper Case "PC" uom = "шт" uomCode = "796" Case "M" uom = "м" uomCode = "006" Case "G" uom = "г" uomCode = "163" Case "KG" uom = "кг" uomCode = "166" Case Else uom = "" uomCode = "" End Select ltr.Text = ltr.Text.Replace("@UOM_CODE", uomCode) ltr.Text = ltr.Text.Replace("@UOM", uom) ltr.Text = ltr.Text.Replace("@QTY", dr("INVOICE_QTY")) ltr.Text = ltr.Text.Replace("@PRICE", dr("PRICE_RUB")) ltr.Text = ltr.Text.Replace("@AMNT", dr("AMNT_RUB")) End If first = False Next Catch ex As Exception Response.Clear() Response.Write(docNumber & " ERROR: " & ex.Message) End Try End If End Sub Private Function GetDocInfo(docNumber As String, mode As Integer) As DataTable Dim sql As New StringBuilder Dim sqlf As New SqlFunctions If mode = 1 Then '================= BY GR document for 1 material ========================== sql.AppendLine("select DISTINCT ") sql.AppendLine(" GR_DOCUMENT_NUMBER as docnumber, BUDAT as docDate, VENDOR_DESCRIPTION as vendor") sql.AppendLine(", vendor as vendor_code, inv as invoice, DESCRIPTION, material, gtd") sql.AppendLine(", uom, INVOICE_QTY, unit_price, INVOICE_AMNT, EXCH__RATE__RUB") sql.AppendLine(", cast(cast(replace(replace(UNIT_PRICE,' ' ,''),',','.') as decimal(18,4)) * EXCH__RATE__RUB as decimal(18,2)) as PRICE_RUB ") sql.AppendLine(", cast(cast(replace(replace(UNIT_PRICE,' ' ,''),',','.') as decimal(18,4)) * EXCH__RATE__RUB * INVOICE_QTY as decimal(18,2)) as AMNT_RUB ") sql.AppendLine(" from UserModules.[user].[WMS_GI_INFORMATION] ") sql.AppendLine(" where GR_DOCUMENT_NUMBER = '" & docNumber & "'") ' sql.AppendLine(" GROUP BY model, substring(model, 3,2)") ElseIf mode = 2 Then Try docNumber = docNumber.Split("-")(0) Catch ex As Exception End Try '=============== By GR document for all materials sql.AppendLine("select * from ( ") sql.AppendLine("select ") sql.AppendLine("bldat as docDate, ") sql.AppendLine("mblnr + '-' + bktxt as docNumber, ") 'sql.AppendLine("mblnr as docNumber, ") 'sql.AppendLine("bktxt as docNumber, ") sql.AppendLine("matnr, ") sql.AppendLine("erfme as UOM, ") sql.AppendLine("sum(cast(menge as decimal (18,4))) as invoice_qty --,sgtxt ") sql.AppendLine("from UserModules .[user].WMS_GR_LIST ") sql.AppendLine("where mblnr = '" & docNumber & "' ") sql.AppendLine("group by ") sql.AppendLine("bldat, mblnr, bktxt, bldat, matnr, erfme --, sgtxt ") sql.AppendLine(") t1 left join ( ") sql.AppendLine("select distinct ") sql.AppendLine("inv as INVOICE, ") sql.AppendLine("material, ") sql.AppendLine("wenum, ") sql.AppendLine("[description], ") sql.AppendLine("gtd, ") sql.AppendLine("vendor as VENDOR_CODE, ") sql.AppendLine("VENDOR_DESCRIPTION as VENDOR, ") sql.AppendLine("cast(cast(replace(replace(UNIT_PRICE,' ' ,''),',','.') as decimal(18,4)) * EXCH__RATE__RUB as decimal(18,2)) as PRICE_RUB , ") sql.AppendLine("cast(cast(replace(replace(UNIT_PRICE,' ' ,''),',','.') as decimal(18,4)) * EXCH__RATE__RUB * INVOICE_QTY as decimal(18,2)) as AMNT_RUB ") sql.AppendLine("from usermodules.[user].WMS_GI_INFORMATION ") sql.AppendLine("where wenum = '" & docNumber & "' ") sql.AppendLine(") t2 on t1.MATNR = t2.material ") End If Return sqlf.GetData(sql.ToString) End Function Private Function GetDocInfoFromWMS(grDocNumber 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 grDocNumber <> "" Then url &= "&MBLNR=" & grDocNumber wb = WebRequest.Create(url) Dim res As WebResponse = wb.GetResponse Dim sr As New StreamReader(res.GetResponseStream) Return JsonToTable(sr.ReadToEnd) End If Return Nothing End Function Private Function JsonToTable(json As String) As DataTable Return JsonConvert.DeserializeObject(Of DataTable)(json) End Function End Class