| 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 |
|---|