#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim arZendingen As List
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Type TRegel (Eenheid As String, oms As String)
Type TZending (zendingid As String, customer As Int, Zendingregels As List)
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("Layout1")
arZendingen.initialize
For i = 0 To 9
Dim tZnd As TZending : tZnd.initialize
tZnd.zendingid=i+1000
tZnd.Zendingregels.Initialize
If i<4 Then
tZnd.customer = 10
Else
tZnd.customer = 2
End If
For j = 0 To 4
Dim tReg As TRegel : tReg.initialize
tReg.Eenheid="Eenheid "&j
tReg.oms ="Omschrijving "&(j+1000)
tZnd.Zendingregels.Add(tReg)
Next
arZendingen.Add(tZnd)
Next
End Sub
Sub Activity_Resume
Dim iZnd As Int
Dim tZend As TZending : tZend.initialize
Dim llist As List : llist.initialize
For i = 0 To arZendingen.Size-1
tZend=arZendingen.Get(i)
If tZend.customer < 10 Then
llist.Add(tZend.zendingid)
End If
Next
Createlist(llist)
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Createlist(llist As List)
Dim tZend As TZending : tZend.initialize
Dim tSort As TZending : tSort.initialize
Dim iZnd, iFound, iSize As Int
Dim arZnd As List : arZnd.initialize
For i = 0 To arZendingen.Size-1
tZend=arZendingen.Get(i)
For j = 0 To llist.Size-1
iZnd=llist.Get(j)
If iZnd=tZend.zendingid Then
If arZnd.Size=0 Then
arZnd.Add(tZend)
Else
iFound=0
For x = 0 To arZnd.Size-1
tSort=arZnd.Get(x)
If tSort.customer=tZend.customer Then
arZnd.InsertAt(x+1,tZend)
iFound=1
Exit
End If
Next
If (iFound=0) Then arZnd.Add(tZend)
End If
Exit
End If
Next
Next
Dim tZend As TZending : tZend.initialize
Dim tSort As TZending : tSort.initialize
iSize = arZnd.Size-1
Dim y As Int
For i = 0 To iSize
If i>iSize Then Exit
If i=0 Then
Dim tZend As TZending : tZend.Initialize
tZend=arZnd.Get(i)
y=i
Else
Dim tSort2 As TZending : tSort2.Initialize
tSort2=arZnd.Get(i)
If tSort2.customer<>tZend.customer Then
Dim tZend As TZending : tZend.Initialize
tZend=tSort
y=1
Else
For j = 0 To tSort2.Zendingregels.Size-1
Dim tRegel As TRegel =tSort2.Zendingregels.Get(j)
tZend.Zendingregels.Add(tRegel) '<--MARK - in this example item 3 of arzendingen has 30 zendingregels but this should be 5
Next
arZnd.RemoveAt(i)
arZnd.RemoveAt(y)
arZnd.InsertAt(y,tZend)
i=i-1
iSize=iSize-1
End If
End If
Next
Log("Done")
End Sub