DeployerGuide/Customization/Forte: Generowanie Zamówienia Obcego.vb

Plik Generowanie Zamówienia Obcego.vb, 5.4 KB (dodany przez jachtelik, 11 years temu)
xx

Skrypt przykładowy VBA generowania zamówienia obcego

Line 
1Private Sub GenerateZO()
2
3' Deklaracje zmiennych
4Dim oFactory As Object
5Dim oRec As Object 'Rekord danych
6Dim nError
7
8Dim sDocumentType As String ' Typ dokumentu
9Dim sDesc As String ' Opis dokumentu
10Dim sClientCode As String 'Nazwa kontrahenta
11Dim sProductCode As String 'Kod produktu
12Dim sQuantity As String ' Ilosc
13Dim sPrice As String ' Cena netto
14
15Dim sPath As String ' ścieżka katalogu z plikami wyeksportowanymi z eDokumentów
16Dim sBkpPath As String  ' ścieżka katalogu, do którego odczytane i przetworzone pliki
17                        ' zostaną przeniesione po zakończonym procesie
18Dim sName As String ' nazwa pliku
19Dim sFileName As String ' kompletna ścieżka do pliku
20Dim iFileNum As Integer ' znacznik pliku do operacji Input, Line Input
21Dim sBuf As String ' Bofor stringu odczytanego z pliku
22Dim iCounter As Integer ' Licznik przebiegu po liniach pliku
23Dim iNumber As Integer ' Licznik przebiegu po liniach pozycji produktu w pliku
24Dim oFileSystem As Object ' Obiekt do operacji na plikach
25
26Set oFileSystem = CreateObject("Scripting.FileSystemObject")
27
28sPath = "C:\Users\ztestowy\dane\"
29sBkpPath = "C:\Users\ztestowy\dane\done\"
30sName = Dir$(sPath & "*.txt") ' Pobranie listy plików w katalogu
31
32Do While sName <> "" ' Jeżeli/dopóki istnieją pliki w katalogu to wykonaj dalsze operacje
33        sFileName = sPath & sName ' Ustawienie pełnej ścieżki dokumentu
34       
35        iFileNum = FreeFile()
36
37        iCounter = 1 ' Licznik przebiegu po liniach pliku
38        iNumber = 0 ' Licznik przebiegu po pozycjach dokumentu.
39                    ' Dopuszczalne wartości dla jednej pozycji dokumentu to 0-2
40                    ' 0 - symbol produktu
41                    ' 1 - ilość
42                    ' 2 - cena netto
43        Open sFileName For Input As iFileNum
44
45        ' Tworzenie obiektów deklaracji danych
46        Set oFactory = Application.PropertyAp("HFactory")
47        Set oRec = oFactory.NewObject("BIORec") ' Rekord danych, który zostanie wstawiony do systemu
48
49        sDocumentType = "ZMO" ' Typ dokumentu: Zamówienie obce
50        nError = oRec.SetField("typDk", Trim(sDocumentType)) ' Ustawienie typu dokumentu
51
52        Do While Not EOF(iFileNum)
53                        Line Input #iFileNum, sBuf
54                       
55                        Select Case iCounter
56                                Case Is = 1 ' Wywołanie identyfikatora kontrahenta
57                                       
58                                        sClientCode = "" & Trim(sBuf)
59                                        nError = oRec.BeginSection("danekh")
60                                                nError = oRec.SetField("KhKod", Trim(sClientCode))
61                                        nError = oRec.EndSection()
62                                Case Is = 2 ' Opis dokumentu
63                                        sDesc = Trim(sBuf)
64                                        nError = oRec.SetField("opis", Trim(sDesc))
65                                Case Is > 2 ' Pozycje dokumentu
66                                       
67                                       
68                                        Select Case iNumber
69                                                Case Is = 0 ' Kod produktu
70                                                        sProductCode = Trim(sBuf)
71                                                        nError = oRec.BeginSection("Pozycja dokumentu")
72                                                        nError = oRec.SetField("kod", Trim(sProductCode))
73                                                       
74                                                Case Is = 1 ' Ilość
75                                                        sQuantity = Trim(sBuf)
76                                                        nError = oRec.SetField("ilosc", Trim(sQuantity))
77                                                       
78                                                Case Is = 2 ' Cena netto
79                                                        sPrice = Trim(sBuf)
80                                                        nError = oRec.SetField("cena", Trim(sPrice))
81                                                        nError = oRec.EndSection()
82                                   
83                                        End Select
84                                       
85                                        iNumber = iNumber + 1 ' Inkrementacja licznika
86                                        If iNumber > 2 Then
87                                                iNumber = 0 ' Resetowanie wartości licznika
88                                        End If
89                               
90                               
91                        End Select
92                       
93                        iCounter = iCounter + 1
94                       
95            Loop
96
97                Dim oFunction As Object
98                Set oFunction = oFactory.NewObject("BFunkcja")
99               
100                ' Wywołanie generowania dokumentu
101                Dim DocumentID As Long
102                DocumentID = oFunction.ImportZO(oRec) ' GENEROWANIE DOKUMENTU ZAMÓWIENIA OBCEGO
103
104                Close iFileNum ' Zamykanie pliku
105               
106                oFileSystem.MoveFile sFileName, sBkpPath & sName ' Przeniesienie pliku do katalogu bkp
107               
108                sName = Dir()
109Loop
110
111End Sub