Dim Frm As Predpr.FrmDoc, FrmNew As Predpr.FrmDoc
Dim SRow As Predpr.SubRow, i As Integer, x As Integer
Dim SRowNew As Predpr.SubRow, TrNew As Predpr.TransRow, OpNew As Predpr.Doc
Dim Trans As Predpr.TransRow = Op.DocTransCalc(1)
For Each SRow In Trans.SubRows.Values
If SRow.Integ2 = -1 Then
GoTo Start
End If
Next
Exit Sub
Start: If Microsoft.VisualBasic.MsgBox("Разделить накладную на несколько складов?", Microsoft.VisualBasic.MsgBoxStyle.Question + Microsoft.VisualBasic.MsgBoxStyle.YesNo, "При недостатке товара") = Microsoft.VisualBasic.MsgBoxResult.No Then
Exit Sub
End If
Predpr.DataMain.FormApp.StatBar.Panels(0).Text = "Создаются накладные на каждый склад..."
Dim Roff As Predpr.TableSQL, ArrOp As New System.Collections.Hashtable, iOp As Integer
Roff = Predpr.DataMain.DBmain.OpenRecordset("SELECT ID FROM Persons WHERE ID<>" & Op.OfficeID & " AND TypeID=2")
Do While Not Roff.EOF
OpNew = Predpr.DataMain.AppData.DocsCollection.Add(2)
OpNew.OfficeID = Roff("ID")
OpNew.PersonID = Op.PersonID
OpNew.DocDate = Op.DocDate
ArrOp.Add(OpNew.OfficeID, OpNew)
Roff.MoveNext()
Loop
Predpr.DataMain.FormApp.StatBar.Panels(0).Text = "Вычисляются остатки на складах..."
Dim Rqnt As Predpr.TableSQL, Fld As Predpr.FieldSQL
Dim DtStr As String = Predpr.GlobalFunction.SQLdate(Op.DocDate)
Rqnt = Predpr.DataMain.DBmain.OpenRecordset("TRANSFORM Sum([Quantity]*[Sign]) AS Qnt SELECT ArticleID FROM Data_Articles WHERE DocDate<=" & DtStr & " and OfficeID<>" & Op.OfficeID & " GROUP BY ArticleID PIVOT OfficeID")
Predpr.DataMain.FormApp.StatBar.Panels(0).Text = "Переносятся строки..."
x = Trans.SubRows.Count
Do While x > 0
SRow = Trans.SubRows(x)
If SRow.Integ2 = -1 Then
Rqnt.FindFirst("ArticleID=" & SRow.ArticleID)
For Each Fld In Rqnt.Fields
If Fld.Name <> "ArticleID" Then
If Predpr.GlobalFunction.Nz(Fld.Value, 0) >= SRow.Qnt Then
OpNew = ArrOp(CInt(Fld.Name))
TrNew = OpNew.DocTransCalc(1)
SRowNew = SRow.Clone(TrNew)
SRow.Delete()
Exit For
End If
End If
Next
End If
x = x - 1
Loop
Frm = Op.Form
Trans = Op.DocTransCalc(1)
Frm.Grid.SetLinkTransRow(Trans, True)
Op.DocText = ""
Op.Form.SetBoxText("BoxText", "")
Frm.Refresh()
System.Threading.Thread.Sleep(1000)
Dim ArrFrmOp As New System.Collections.ArrayList
For Each OpNew In ArrOp.Values
TrNew = OpNew.DocTransCalc(1)
If TrNew.SubRows.Count > 0 Then
ArrFrmOp.Add(OpNew)
End If
Next
Predpr.DataMain.FormApp.StatBar.Panels(0).Text = ""
If ArrFrmOp.Count = 0 Then
Microsoft.VisualBasic.MsgBox("На других складах недостающий товар также отсутствует", , "Результат")
Exit Sub
End If
Dim FullW As Integer = Predpr.DataMain.FormApp.ClientSize.Width - 4
Dim FullH As Integer = Predpr.DataMain.FormApp.ClientSize.Height - 4 - Predpr.DataMain.FormApp.StatBar.Height - 26 'Predpr.DataMain.FormApp.TabList.Height
Dim TmpW = FullW / (ArrFrmOp.Count + 1)
Dim TmpL As Integer
Frm.WindowState = System.Windows.Forms.FormWindowState.Normal
Frm.Top = 0
Frm.Left = 0
Frm.Height = FullH
Frm.Width = TmpW
System.Threading.Thread.Sleep(500)
Frm.Refresh()
Dim iFrm As Integer
For iFrm = 0 To ArrFrmOp.Count - 1
OpNew = ArrFrmOp(iFrm)
FrmNew = Predpr.GlobalFunction.OpenFormDocFromOp(OpNew)
OpNew.Modified = True
TmpL = TmpL + TmpW
FrmNew.WindowState = System.Windows.Forms.FormWindowState.Normal
FrmNew.Top = 0
FrmNew.Left = TmpL
FrmNew.Height = FullH
FrmNew.Width = TmpW
System.Threading.Thread.Sleep(500)
FrmNew.Refresh()
Next
Вернуться в Использование программы
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5