1 | Private Sub GenerateZO() |
---|
2 | |
---|
3 | ' Deklaracje zmiennych |
---|
4 | Dim oFactory As Object |
---|
5 | Dim oRec As Object 'Rekord danych |
---|
6 | Dim nError |
---|
7 | |
---|
8 | Dim sDocumentType As String ' Typ dokumentu |
---|
9 | Dim sDesc As String ' Opis dokumentu |
---|
10 | Dim sClientCode As String 'Nazwa kontrahenta |
---|
11 | Dim sProductCode As String 'Kod produktu |
---|
12 | Dim sQuantity As String ' Ilosc |
---|
13 | Dim sPrice As String ' Cena netto |
---|
14 | |
---|
15 | Dim sPath As String ' ścieżka katalogu z plikami wyeksportowanymi z eDokumentów |
---|
16 | Dim sBkpPath As String ' ścieżka katalogu, do którego odczytane i przetworzone pliki |
---|
17 | ' zostaną przeniesione po zakończonym procesie |
---|
18 | Dim sName As String ' nazwa pliku |
---|
19 | Dim sFileName As String ' kompletna ścieżka do pliku |
---|
20 | Dim iFileNum As Integer ' znacznik pliku do operacji Input, Line Input |
---|
21 | Dim sBuf As String ' Bofor stringu odczytanego z pliku |
---|
22 | Dim iCounter As Integer ' Licznik przebiegu po liniach pliku |
---|
23 | Dim iNumber As Integer ' Licznik przebiegu po liniach pozycji produktu w pliku |
---|
24 | Dim oFileSystem As Object ' Obiekt do operacji na plikach |
---|
25 | |
---|
26 | Set oFileSystem = CreateObject("Scripting.FileSystemObject") |
---|
27 | |
---|
28 | sPath = "C:\Users\ztestowy\dane\" |
---|
29 | sBkpPath = "C:\Users\ztestowy\dane\done\" |
---|
30 | sName = Dir$(sPath & "*.txt") ' Pobranie listy plików w katalogu |
---|
31 | |
---|
32 | Do 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() |
---|
109 | Loop |
---|
110 | |
---|
111 | End Sub |
---|